0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于GD32F310使用串口的空閑中斷完成不定長(zhǎng)數(shù)據(jù)的接收

冬至子 ? 來(lái)源:兆易創(chuàng)新GD32 MCU ? 作者:飛揚(yáng)的青春 ? 2022-09-30 14:20 ? 次閱讀

我們?cè)?a target="_blank">單片機(jī)開(kāi)發(fā)中,經(jīng)常會(huì)用到串口,這時(shí)候我可以通過(guò)使用DMA,減少CPU的占用。使用串口的空閑中斷可以完成不定長(zhǎng)數(shù)據(jù)的接受。所以本次我們從基礎(chǔ)的外設(shè)移植開(kāi)始完成此款板子的體驗(yàn)。

首先看下板子吧。

板子整體還是GD一貫風(fēng)格,還是白色板子,這次由于芯片的管腳較小,目前所以引出方式變了。把可以用的IO都引出了。

本次我們使用串口0進(jìn)行測(cè)試,此測(cè)試完成后我們也可以非常方便的移植到串口1上。

poYBAGM2iW6AAHsRAADNSwgMGd0509.png


我在其基礎(chǔ)上移植了新的開(kāi)發(fā)模板,主要導(dǎo)入我們的外設(shè)庫(kù)和CMSIS庫(kù)即可。例程上我使用了一個(gè)閃爍LED燈的例子。

poYBAGM2iZqAGEpwAAB3GUghSos588.png

主循環(huán)中我們就兩個(gè)任務(wù),一個(gè)是點(diǎn)燈,一個(gè)是完成串口接收和發(fā)送。

poYBAGM2ia6APWTtAACw_KOZcno967.png

在串口初始話的時(shí)候需要主要下,我們使能了串口的中斷后,還需要打開(kāi)其串口的空閑中斷,不然進(jìn)不了接受中斷函數(shù)中。

pYYBAGM2icKAdKP7AACXFCN4b9Y355.png

中斷函數(shù)中我們只需要完成中斷服務(wù)函數(shù)的編寫(xiě),進(jìn)入串口接收空閑中斷后,就讓其使用DMA的方式接收處理數(shù)據(jù)。

串口發(fā)送結(jié)束后也會(huì)調(diào)用函數(shù)關(guān)閉其發(fā)送。

pYYBAGM2idmAZqOMAAFN5t34oFA139.png

效果就是只要我們數(shù)據(jù)在100字節(jié)以內(nèi)都可以完成數(shù)據(jù)接受和發(fā)送。且長(zhǎng)度可變。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631988
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107749
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    895

    瀏覽量

    41349
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1540

    瀏覽量

    76062
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    不定長(zhǎng)數(shù)據(jù)接收的原理IDLE空閑中斷介紹

    1_V1.8.0(STM32Cube MCU Package for STM32F1xx Series)本文內(nèi)容:不定長(zhǎng)數(shù)據(jù)接收的原理IDLE空閑
    發(fā)表于 08-16 07:42

    STM32如何使用空閑中斷接收不定長(zhǎng)數(shù)據(jù)

    STM32如何使用空閑中斷接收不定長(zhǎng)數(shù)據(jù)?
    發(fā)表于 11-17 07:21

    基于DMA接收利用空閑模式接收不定長(zhǎng)數(shù)據(jù)

    STM32L051 HAL庫(kù)非DMA模式使用空閑中斷接收不定長(zhǎng)數(shù)據(jù)因項(xiàng)目中的上位機(jī)與單片機(jī)之間的通信協(xié)議采用非標(biāo)準(zhǔn)協(xié)議,上位機(jī)發(fā)送的
    發(fā)表于 01-12 07:44

    如何利用串口空閑中斷接收不定長(zhǎng)數(shù)據(jù)

    在上一篇文章STM32單片機(jī)串口空閑中斷接收不定長(zhǎng)數(shù)據(jù)中介紹了利用
    發(fā)表于 02-22 07:34

    STM32 HAL庫(kù)中串口空閑中斷+DMA 實(shí)現(xiàn)串口數(shù)據(jù)不定長(zhǎng)接收

    Package for STM32F0 Series)本文內(nèi)容:不定長(zhǎng)數(shù)據(jù)接收的原理串口接收
    發(fā)表于 12-06 18:36 ?26次下載
    STM32 HAL庫(kù)中<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>+DMA 實(shí)現(xiàn)<b class='flag-5'>串口</b><b class='flag-5'>數(shù)據(jù)</b>的<b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>接收</b>

    STM32CubeMX HAL庫(kù)串口+DMA+IDLE空閑中斷不定長(zhǎng)度數(shù)據(jù)接收和發(fā)送

    1_V1.8.0(STM32Cube MCU Package for STM32F1xx Series)本文內(nèi)容:不定長(zhǎng)數(shù)據(jù)接收的原理IDLE空閑
    發(fā)表于 12-07 11:36 ?24次下載
    STM32CubeMX HAL庫(kù)<b class='flag-5'>串口</b>+DMA+IDLE<b class='flag-5'>空閑</b><b class='flag-5'>中斷</b><b class='flag-5'>不定長(zhǎng)度數(shù)據(jù)</b><b class='flag-5'>接收</b>和發(fā)送

    STM32+串口空閑中斷實(shí)現(xiàn)不定長(zhǎng)數(shù)據(jù)接收

    常見(jiàn)的數(shù)據(jù)幀斷幀方式有兩種,一種是通過(guò)固定的協(xié)議格式斷幀,另外一個(gè)是通過(guò)兩幀數(shù)據(jù)的時(shí)間斷幀,下面介紹最后一種,利用STM32F1的串口空閑
    發(fā)表于 12-20 19:34 ?7次下載
    STM32+<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>實(shí)現(xiàn)<b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>

    stm32 串口接收不定長(zhǎng)度數(shù)據(jù)及黏包處理 + 串口DMA接收

    ,那么stm32串口是如何實(shí)現(xiàn)接收不定長(zhǎng)度數(shù)據(jù)的呢? 串口接收數(shù)據(jù)一般會(huì)采用
    發(fā)表于 12-23 19:09 ?27次下載
    stm32 <b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)度數(shù)據(jù)</b>及黏包處理 + <b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b>

    STM32+串口空閑中斷實(shí)現(xiàn)不定長(zhǎng)數(shù)據(jù)接收

    常見(jiàn)的數(shù)據(jù)幀斷幀方式有兩種,一種是通過(guò)固定的協(xié)議格式斷幀,另外一個(gè)是通過(guò)兩幀數(shù)據(jù)的時(shí)間斷幀,下面介紹最后一種,利用STM32F1的串口空閑
    發(fā)表于 12-24 18:46 ?11次下載
    STM32+<b class='flag-5'>串口</b><b class='flag-5'>空閑</b><b class='flag-5'>中斷</b>實(shí)現(xiàn)<b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>接收</b>

    STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)

    目錄STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)引言DMA簡(jiǎn)介什么是DMA在STM32的DMA資源DMA接收數(shù)據(jù)
    發(fā)表于 12-24 19:03 ?30次下載
    STM32之<b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    STM32單片機(jī)串口空閑中斷+DMA接收不定長(zhǎng)數(shù)據(jù)

    在上一篇文章STM32單片機(jī)串口空閑中斷接收不定長(zhǎng)數(shù)據(jù)中介紹了利用
    發(fā)表于 12-27 19:24 ?18次下載
    STM32單片機(jī)<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'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    單片機(jī)接收不定長(zhǎng)數(shù)據(jù),最優(yōu)解是DMA+串口空閑中斷

    如果單片機(jī)不支持串口空閑中斷和DMA,可以參考之前寫(xiě)的,串口只用接收中斷
    發(fā)表于 12-28 19:26 ?25次下載
    單片機(jī)<b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</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>

    使用UART IDLE中斷接收不定長(zhǎng)數(shù)據(jù)

    在本文中,將介紹使用該中斷來(lái)進(jìn)行不定長(zhǎng)串口數(shù)據(jù)接收的辦法。通過(guò)該中斷,可以省卻用于檢測(cè)數(shù)據(jù)傳輸是
    發(fā)表于 02-08 15:29 ?5次下載
    使用UART IDLE<b class='flag-5'>中斷</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    STM32CubeMX之串口接收不定長(zhǎng)數(shù)據(jù)

    基本串口通信通常只能接收定長(zhǎng)數(shù)據(jù),無(wú)法穩(wěn)定接收不定長(zhǎng)數(shù)據(jù)
    的頭像 發(fā)表于 05-11 09:59 ?3193次閱讀
    STM32CubeMX之<b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    使用UART IDLE中斷接收不定長(zhǎng)數(shù)據(jù)

    使用UART IDLE中斷接收不定長(zhǎng)數(shù)據(jù)
    的頭像 發(fā)表于 09-18 15:41 ?999次閱讀
    使用UART IDLE<b class='flag-5'>中斷</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>