我們在單片機開發(fā)中,經(jīng)常會用到串口,這時候我可以通過使用DMA,減少CPU的占用。使用串口的空閑中斷可以完成不定長數(shù)據(jù)的接受。所以本次我們從基礎(chǔ)的外設(shè)移植開始完成此款板子的體驗。
首先看下板子吧。
板子整體還是GD一貫風(fēng)格,還是白色板子,這次由于芯片的管腳較小,目前所以引出方式變了。把可以用的IO都引出了。
本次我們使用串口0進行測試,此測試完成后我們也可以非常方便的移植到串口1上。
我在其基礎(chǔ)上移植了新的開發(fā)模板,主要導(dǎo)入我們的外設(shè)庫和CMSIS庫即可。例程上我使用了一個閃爍LED燈的例子。
主循環(huán)中我們就兩個任務(wù),一個是點燈,一個是完成串口接收和發(fā)送。
在串口初始話的時候需要主要下,我們使能了串口的中斷后,還需要打開其串口的空閑中斷,不然進不了接受中斷函數(shù)中。
中斷函數(shù)中我們只需要完成中斷服務(wù)函數(shù)的編寫,進入串口接收空閑中斷后,就讓其使用DMA的方式接收處理數(shù)據(jù)。
串口發(fā)送結(jié)束后也會調(diào)用函數(shù)關(guān)閉其發(fā)送。
效果就是只要我們數(shù)據(jù)在100字節(jié)以內(nèi)都可以完成數(shù)據(jù)接受和發(fā)送。且長度可變。
審核編輯:劉清
-
單片機
+關(guān)注
關(guān)注
6040文章
44592瀏覽量
636901 -
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
108187 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41590 -
串口
+關(guān)注
關(guān)注
14文章
1557瀏覽量
76735
發(fā)布評論請先 登錄
相關(guān)推薦
不定長數(shù)據(jù)接收的原理IDLE空閑中斷介紹
基于DMA接收利用空閑模式接收不定長數(shù)據(jù)
STM32 HAL庫中串口空閑中斷+DMA 實現(xiàn)串口數(shù)據(jù)的不定長接收
![STM32 HAL庫中<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>+DMA 實現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>數(shù)據(jù)</b>的<b class='flag-5'>不定長</b><b class='flag-5'>接收</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32CubeMX HAL庫串口+DMA+IDLE空閑中斷不定長度數(shù)據(jù)接收和發(fā)送
![STM32CubeMX HAL庫<b class='flag-5'>串口</b>+DMA+IDLE<b class='flag-5'>空閑</b><b class='flag-5'>中斷</b><b class='flag-5'>不定長度數(shù)據(jù)</b><b class='flag-5'>接收</b>和發(fā)送](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32+串口空閑中斷實現(xiàn)不定長數(shù)據(jù)接收
![STM32+<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>實現(xiàn)<b class='flag-5'>不定長</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
stm32 串口接收不定長度數(shù)據(jù)及黏包處理 + 串口DMA接收
![stm32 <b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>不定長度數(shù)據(jù)</b>及黏包處理 + <b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32+串口空閑中斷實現(xiàn)不定長數(shù)據(jù)接收
![STM32+<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>實現(xiàn)<b class='flag-5'>不定長</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32之串口DMA接收不定長數(shù)據(jù)
![STM32之<b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b><b class='flag-5'>不定長</b><b class='flag-5'>數(shù)據(jù)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32單片機串口空閑中斷+DMA接收不定長數(shù)據(jù)
![STM32單片機<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>+DMA<b class='flag-5'>接收</b><b class='flag-5'>不定長</b><b class='flag-5'>數(shù)據(jù)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
單片機接收不定長的數(shù)據(jù),最優(yōu)解是DMA+串口空閑中斷
![單片機<b class='flag-5'>接收</b><b class='flag-5'>不定長</b>的<b class='flag-5'>數(shù)據(jù)</b>,最優(yōu)解是DMA+<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用UART IDLE中斷接收不定長數(shù)據(jù)
![使用UART IDLE<b class='flag-5'>中斷</b><b class='flag-5'>接收</b><b class='flag-5'>不定長</b><b class='flag-5'>數(shù)據(jù)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論