快捷搜索:  汽车  科技

STM32串口中断应用实例(STM32串口中断应用实例)

STM32串口中断应用实例(STM32串口中断应用实例)软件设计2.1原理图1.2编译工具:MDK-ARM V5(keil5)1.3辅助工具:STM32CubeMX硬件设计

STM32串口中断应用实例

本文将介绍如何使用STM32F4的串口接收中断,通过串口助手模拟上位机发送指令、STM32F4串口中断接收到指令后根据指令选择开关LED小灯。

运用到的资源、工具:

1.1开发板芯片STM32F407,USART3串口驱动电路、LED驱动电路

1.2编译工具:MDK-ARM V5(keil5)

1.3辅助工具:STM32CubeMX

硬件设计

2.1原理图

STM32串口中断应用实例(STM32串口中断应用实例)(1)

STM32串口中断应用实例(STM32串口中断应用实例)(2)

软件设计

3.1功能架构:串口调试助手向USART3发送1时,使LED1点亮;发送0时,使LED1熄灭;串口接收使用接收中断来提高程序运行时的效率、避免程序不断轮询查看串口是否接收到1或0的指令

3.2STM32cubeMX配置工程文件:

将USART3使能选择异步通信、在NVIC中使能USART3的中断功能

将PF10设为GPIO_OUTPUT

代码实现

4.1printf输出重定向,使得打印信息通过USART3打印到串口助手

int fputc(int ch FILE *p) {  while(!(USART3->SR & (1 << 7)));  USART3->DR = ch;  return ch; }

4.2重定义串口中断接收完成回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART3) { if(RED == 1) { LED1_ON; printf("LED1 ON RED= %d\n" RED); } else { LED1_OFF; printf("LED1 OFF RED= %d\n" RED); } } }

4.3宏定义 LED1的点亮熄灭

#define LED1_ON HAL_GPIO_WritePin(GPIOF GPIO_PIN_10 GPIO_PIN_RESET) #define LED1_OFF HAL_GPIO_WritePin(GPIOF GPIO_PIN_10 GPIO_PIN_SET)

4.4完整代码太多、可邮箱发送,请多指教!

猜您喜欢: