STM32串口中断应用实例

描述

STM32串口中断应用实例

本文将介绍如何使用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\\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)
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分