STM32串口中斷應用實例
本文將介紹如何使用STM32F4的串口接收中斷,通過串口助手模擬上位機發(fā)送指令、STM32F4串口中斷接收到指令后根據(jù)指令選擇開關(guān)LED小燈。
1.運用到的資源、工具:
1.1開發(fā)板芯片STM32F407,USART3串口驅(qū)動電路、LED驅(qū)動電路
1.3輔助工具:STM32CubeMX
2.硬件設(shè)計
2.1原理圖
3.軟件設(shè)計
3.1功能架構(gòu):串口調(diào)試助手向USART3發(fā)送1時,使LED1點亮; 發(fā)送0時,使LED1熄滅; 串口接收使用接收中斷來提高程序運行時的效率、避免程序不斷輪詢查看串口是否接收到1或0的指令
3.2STM32cubeMX配置工程文件:
將USART3使能選擇異步通信、在NVIC中使能USART3的中斷功能
將PF10設(shè)為GPIO_OUTPUT
4.代碼實現(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的點亮熄滅
#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)注
2283文章
10986瀏覽量
361306 -
中斷
+關(guān)注
關(guān)注
5文章
902瀏覽量
42367 -
串口
+關(guān)注
關(guān)注
14文章
1580瀏覽量
78338 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5389瀏覽量
100901 -
stm32cubemx
+關(guān)注
關(guān)注
5文章
286瀏覽量
15851
發(fā)布評論請先 登錄
相關(guān)推薦
如何去實現(xiàn)stm32串口中斷printf函數(shù)呢
STM32串口通訊——中斷方式

STM32使用CubeMAX配置的串口中斷接收方法

STM32F407串口中斷配置

STM32F407串口空閑中斷+DMA

STM32f103------串口中斷及其配置

STM32CubeMX-串口中斷實驗

評論