STM32串口中断应用实例

2023-05-24  

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

1.运用到的资源、工具:

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

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

1.3辅助工具:STM32CubeMX

2.硬件设计

2.1原理图

3.软件设计

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

3.2STM32cubeMX配置工程文件:

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

将PF10设为GPIO_OUTPUT

4.代码实现

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 ", RED);

}

else

{

LED1_OFF;

printf("LED1 OFF RED= %d ", 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)


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。