第五个实验 串口中断实验
来源:互联网 发布:手机日历软件 编辑:程序博客网 时间:2024/05/21 23:00
#include "stm32f10x.h"
#include <stdio.h>
#include <stdio.h>
int main(void)
{
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure; //定义串口初始化结构体
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA,ENABLE);
USART_InitTypeDef USART_InitStructure; //定义串口初始化结构体
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA,ENABLE);
/*USART1_TX ->PA9*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //选中串口默认输出管脚
//复用推挽输出模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //定义输出最大速率
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//定义管脚9的模式
GPIO_Init(GPIOA , &GPIO_InitStructure); //调用函数,把结构体参数输入进行初始化
/*USART1_RX ->PA10*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
//浮空输入模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA , &GPIO_InitStructure);
/*串口通讯参数设置*/
USART_InitStructure.USART_BaudRate = 9600; //波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位8位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位1位
USART_InitStructure.USART_Parity = USART_Parity_No; //校验位 无
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //使能接收和发送引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //选中串口默认输出管脚
//复用推挽输出模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //定义输出最大速率
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//定义管脚9的模式
GPIO_Init(GPIOA , &GPIO_InitStructure); //调用函数,把结构体参数输入进行初始化
/*USART1_RX ->PA10*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
//浮空输入模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA , &GPIO_InitStructure);
/*串口通讯参数设置*/
USART_InitStructure.USART_BaudRate = 9600; //波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //数据位8位
USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位1位
USART_InitStructure.USART_Parity = USART_Parity_No; //校验位 无
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //使能接收和发送引脚
USART_Init(USART1, &USART_InitStructure);
USART_ClearFlag(USART1,USART_FLAG_TC);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
USART_Cmd(USART1, ENABLE);
printf("*************************************************************\r\n");
printf("* *\r\n");
printf("* Thank you for using The Development Board Of YuanDi ! ^_^ *\r\n");
printf("* *\r\n");
printf("*************************************************************\r\n");
while (1)
{
//检查指定的串口标志设置与否
while (USART_GetFlagStatus(USART1,USART_FLAG_RXNE) == RESET);
//通过外设US ARTx发送单个数据
USART_SendData(USART1,USART_ReceiveData(USART1));
}
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Enable the USARTy Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
USART_ClearFlag(USART1,USART_FLAG_TC);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
USART_Cmd(USART1, ENABLE);
printf("*************************************************************\r\n");
printf("* *\r\n");
printf("* Thank you for using The Development Board Of YuanDi ! ^_^ *\r\n");
printf("* *\r\n");
printf("*************************************************************\r\n");
while (1)
{
//检查指定的串口标志设置与否
while (USART_GetFlagStatus(USART1,USART_FLAG_RXNE) == RESET);
//通过外设US ARTx发送单个数据
USART_SendData(USART1,USART_ReceiveData(USART1));
}
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/* Enable the USARTy Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/**
* @file USART1_IRQHandler
* @brief 中断处理函数
* @param 无
* @retval 无
*/
void USART1_IRQHandler(void)
{
u8 c;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
c=USART_ReceiveData(USART1);
printf("%c",c); //将接受到的数据直接返回打印
}
}
* @file USART1_IRQHandler
* @brief 中断处理函数
* @param 无
* @retval 无
*/
void USART1_IRQHandler(void)
{
u8 c;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
c=USART_ReceiveData(USART1);
printf("%c",c); //将接受到的数据直接返回打印
}
}
//重定向c库函数到usart1
//也就是说可以用print函数输出内容到串口
int fputc(int ch, FILE *f)
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
return ch;
}
{
/* Place your implementation of fputc here */
/* e.g. write a character to the USART */
USART_SendData(USART1, (uint8_t) ch);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
return ch;
}
阅读全文
0 0
- 第五个实验 串口中断实验
- java 实验报告第五个
- STM32IO仿真与串口通讯实验、外部中断实验
- 【实验二】串口实验
- 串口实验
- mini2440 uart串口实验(fifo模式+中断)
- 【实验三】外部中断实验
- 【实验六】定时器中断实验
- 第四个实验 串口 查询实验
- ARM串口实验,ADC实验,I2C实验
- 定时器中断和按键中断控制dht11温湿度采集串口输出实验源码
- 中断和定时器实验
- mini2440 定时器中断实验
- mini2440中断实验
- 中断实验(1)
- 中断实验(2)
- 中断实验(3)
- 中断实验(4)
- 数据结构与算法(Java语言描述)--栈和队列
- python 安装虚拟环境
- JAVA 并发编程CountDownLatch
- 图解设计模式
- Hive Runtime Error while processing row
- 第五个实验 串口中断实验
- ZooKeeper
- C# 将16进制的btye数组转换为字符串
- HDU
- 网络攻防——黛蛇蠕虫病毒
- odoo10普通视图添加自定义css和自定义js
- 自制人物卡片轮播组件,自动轮播,点击切换
- 解密长沙矿工挖矿软件抽水图文教程
- 读取txt,分类训练集和测试集