STM32CUBEMX(8)--USART通過定時器中斷方式接收不定長數(shù)據(jù)
????本文利用中斷實現(xiàn)串口不定長接收(非DMA),使用HAL庫,將接收的數(shù)據(jù)打印出去。
硬件準備
? ?首先需要準備一個開發(fā)板,這里我準備的是NUCLEO-F030R8的開發(fā)板。? ?

選擇芯片型號
????使用STM32CUBEMX選擇芯片stm32f030r8,如下所示:

配置時鐘源
????HSE與LSE分別為外部高速時鐘和低速時鐘,在本文中使用內(nèi)置的時鐘源,故都選擇Disable選項,如下所示:

配置時鐘樹
????STM32F0的最高主頻到48M,所以配置48即可:

串口配置
本次實驗使用的串口1進行串口通信,波特率配置為115200。

中斷

GPIO配置
????板子上led為PA5端口,故設(shè)置PA5閃爍來驗證是否正確。

定時器配置
????本次實驗使用的是TIM3來進行計數(shù)。

????在上面配置TIM3參數(shù),預分頻系數(shù)設(shè)置為480-1, 自動重載值設(shè)置為10000-1,那么PWM頻率為48,000,000/((480-1+1)*(10000-1+1))=10Hz,即 100ms一個周期。

生成工程設(shè)置
????注意在生產(chǎn)工程設(shè)置中不能出現(xiàn)中文,不然會報錯。

代碼生成設(shè)置
????最后設(shè)置生成獨立的初始化文件。

生成代碼

配置keil

代碼
????在main.c中,先加入頭文件。
????定義變量存儲。
????定義printf的重定向函數(shù)fputc。
????打開串口和定時器。
????串口接受代碼,當接受到最后數(shù)據(jù)為FF時候,直接打印,否則等待100ms打印。
演示效果
可以看到? 發(fā)送11 12 13需要等待100ms左右才能發(fā)送,如果最后加上ff直接發(fā)送。
教學視頻

標簽: