STM32串口中斷應(yīng)用實(shí)例
本文將介紹如何使用STM32F4的串口接收中斷,通過串口助手模擬上位機(jī)發(fā)送指令、STM32F4串口中斷接收到指令后根據(jù)指令選擇開關(guān)LED小燈。
1.運(yùn)用到的資源、工具:
1.1開發(fā)板芯片STM32F407,USART3串口驅(qū)動(dòng)電路、LED驅(qū)動(dòng)電路
1.3輔助工具:STM32CubeMX
2.硬件設(shè)計(jì)
2.1原理圖
3.軟件設(shè)計(jì)
3.1功能架構(gòu):串口調(diào)試助手向USART3發(fā)送1時(shí),使LED1點(diǎn)亮; 發(fā)送0時(shí),使LED1熄滅; 串口接收使用接收中斷來提高程序運(yùn)行時(shí)的效率、避免程序不斷輪詢查看串口是否接收到1或0的指令
3.2STM32cubeMX配置工程文件:
將USART3使能選擇異步通信、在NVIC中使能USART3的中斷功能
將PF10設(shè)為GPIO_OUTPUT
4.代碼實(shí)現(xiàn)
4.1printf輸出重定向,使得打印信息通過USART3打印到串口助手
int fputc(int ch, FILE *p)
{
while(!(USART3->SR & (1 << 7)));
USART3->DR = ch;
return ch;
}
4.2重定義串口中斷接收完成回調(diào)函數(shù)
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的點(diǎn)亮熄滅
#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)
-
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355721 -
中斷
+關(guān)注
關(guān)注
5文章
898瀏覽量
41470 -
串口
+關(guān)注
關(guān)注
14文章
1551瀏覽量
76421 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5032瀏覽量
97371 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
283瀏覽量
14791
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論