一、创建项目
创建一个STM32f103c8
的STM32CubeMX
项目:
SYS
设置:
RCC
设置:
- 时钟树设置,输入72后回车:
USART1
设置:
将Mode
设置为Asynchronous
:
使能串口中断:
- 设置
Project Manager
后,生成代码:
二、编写代码
打开main.c
文件
在文件中定义缓冲区大小:
#define LENGTH 10
定义缓冲区和标志位:
uint8_t RxBuffer[LENGTH];
uint8_t Rxflag = 0;
在main()
中定义接收成功信息:
HAL_UART_Receive_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
char data[] = "\nReveive Success\n";
在while
循环中发送成功信息和接收到的信息:
if (Rxflag == 1){
Rxflag = 0;
HAL_UART_Transmit(&huart1, (uint8_t *)data, 18, 0xFFFF);
HAL_UART_Transmit_IT(&huart1, (uint8_t*)RxBuffer, LENGTH);
}
在main.c
中定义回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if (huart->Instance == USART1){
Rxflag = 1;
HAL_UART_Receive_IT(&huart1, (uint8_t*)&RxBuffer, LENGTH);
}
}
三、运行
编译并烧录后,打开串口调试工具,设置波特率等:
打开串口
,输入HelloWorld
并发送,成功接收:
四、总结
中断方式不必等待数据的传输过程,只需要在每字节数据收发完成后,由中断标志位触发中断,在中断服务程序中放入新的一字节数据或者读取接收到的一字节数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)