中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

麗水做企業(yè)網(wǎng)站的公司在線注冊(cè)網(wǎng)站

麗水做企業(yè)網(wǎng)站的公司,在線注冊(cè)網(wǎng)站,北京網(wǎng)絡(luò)公司網(wǎng)站,wordpress 4.8.2中文文章目錄 前言一、串口空閑中斷二、DMA空閑中斷接收不定長(zhǎng)數(shù)據(jù)實(shí)現(xiàn)思路三、STM32Cubemx配置DMA空閑中斷接收不定長(zhǎng)數(shù)據(jù)四、代碼編寫總結(jié) 前言 本篇文章給大家講解一下DMA串口空閑中斷接收串口不定長(zhǎng)數(shù)據(jù),之前我們也是講解過(guò)串口接收不定長(zhǎng)數(shù)據(jù)的,那么本…

文章目錄

  • 前言
  • 一、串口空閑中斷
  • 二、DMA+空閑中斷接收不定長(zhǎng)數(shù)據(jù)實(shí)現(xiàn)思路
  • 三、STM32Cubemx配置DMA+空閑中斷接收不定長(zhǎng)數(shù)據(jù)
  • 四、代碼編寫
  • 總結(jié)


前言

本篇文章給大家講解一下DMA+串口空閑中斷接收串口不定長(zhǎng)數(shù)據(jù),之前我們也是講解過(guò)串口接收不定長(zhǎng)數(shù)據(jù)的,那么本篇文章的話將使用DMA來(lái)接收不定長(zhǎng)數(shù)據(jù)。

一、串口空閑中斷

串口空閑中斷是指在串口接收到數(shù)據(jù)后,在數(shù)據(jù)的傳輸結(jié)束之后,在一段連續(xù)的空閑時(shí)間內(nèi)沒(méi)有接收到新數(shù)據(jù)時(shí)觸發(fā)的中斷。具體來(lái)說(shuō),串口空閑中斷會(huì)在以下情況下觸發(fā):

1.數(shù)據(jù)傳輸結(jié)束: 當(dāng)串口接收到一個(gè)完整的數(shù)據(jù)幀后,包括起始位、數(shù)據(jù)位、校驗(yàn)位和停止位,數(shù)據(jù)的傳輸結(jié)束。

2.連續(xù)空閑時(shí)間: 在數(shù)據(jù)傳輸結(jié)束后,如果在一段連續(xù)的時(shí)間內(nèi)(通常是一個(gè)字節(jié)的時(shí)間,即字符間的時(shí)間間隔),串口沒(méi)有接收到新的數(shù)據(jù),那么就會(huì)產(chǎn)生空閑中斷。

串口空閑中斷的觸發(fā)時(shí)機(jī)提供了一個(gè)機(jī)會(huì)來(lái)檢測(cè)數(shù)據(jù)幀的接收是否完整,并且在數(shù)據(jù)幀之間的間隙中執(zhí)行一些必要的操作,比如處理接收到的數(shù)據(jù)、清理緩沖區(qū)或者進(jìn)行其他后續(xù)處理。這種機(jī)制在串口通信中非常重要,可以確保數(shù)據(jù)的準(zhǔn)確傳輸和處理。

二、DMA+空閑中斷接收不定長(zhǎng)數(shù)據(jù)實(shí)現(xiàn)思路

使用DMA(Direct Memory Access,直接內(nèi)存訪問(wèn))結(jié)合串口空閑中斷可以實(shí)現(xiàn)串口接收不定長(zhǎng)數(shù)據(jù)的主要原因是提高了數(shù)據(jù)接收的效率和靈活性。

在傳統(tǒng)的串口接收數(shù)據(jù)方式中,通常是通過(guò)串口中斷來(lái)實(shí)現(xiàn)數(shù)據(jù)接收。但是當(dāng)接收大量數(shù)據(jù)或者需要處理高速數(shù)據(jù)時(shí),使用中斷方式會(huì)導(dǎo)致CPU頻繁地響應(yīng)中斷,影響系統(tǒng)的實(shí)時(shí)性和效率。

而使用DMA可以將串口接收到的數(shù)據(jù)直接存儲(chǔ)到內(nèi)存中,減輕了CPU的負(fù)擔(dān),提高了系統(tǒng)的性能。DMA能夠在不需要CPU干預(yù)的情況下,直接在外設(shè)和內(nèi)存之間傳輸數(shù)據(jù),大大提高了數(shù)據(jù)傳輸?shù)男省?/p>

串口空閑中斷則可以用來(lái)標(biāo)志一幀數(shù)據(jù)的接收完成。當(dāng)串口接收到一幀完整的數(shù)據(jù)后,傳輸結(jié)束,串口會(huì)進(jìn)入空閑狀態(tài)。利用空閑中斷可以確定一幀數(shù)據(jù)的長(zhǎng)度,從而在DMA接收完一幀數(shù)據(jù)后,觸發(fā)空閑中斷,處理接收到的數(shù)據(jù),清理緩沖區(qū),并準(zhǔn)備接收下一幀數(shù)據(jù)。

結(jié)合DMA和串口空閑中斷,可以實(shí)現(xiàn)高效地接收不定長(zhǎng)數(shù)據(jù)。DMA負(fù)責(zé)高速數(shù)據(jù)的傳輸,減少了CPU的負(fù)載,而串口空閑中斷用于標(biāo)志數(shù)據(jù)幀的接收完成,提供了靈活性和準(zhǔn)確性。這種組合使得系統(tǒng)能夠高效地處理不定長(zhǎng)數(shù)據(jù)的接收,同時(shí)保證了系統(tǒng)的實(shí)時(shí)性和性能。

三、STM32Cubemx配置DMA+空閑中斷接收不定長(zhǎng)數(shù)據(jù)

添加DMA接收的功能:

DMA接收是把外設(shè)發(fā)來(lái)的數(shù)據(jù)保存到內(nèi)存中來(lái),所以是Peripheral To Memory。
其他STM32Cubemx的配置大家可以看上一篇文章:DMA發(fā)送
在這里插入圖片描述

四、代碼編寫

1.首先需要先使能 串口接收空閑中斷函數(shù)

函數(shù)原型:

HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

函數(shù)參數(shù):

huart:指向 UART_HandleTypeDef 結(jié)構(gòu)體的指針,用于指定要配置的串口。
pData:指向存儲(chǔ)接收數(shù)據(jù)的緩沖區(qū)的指針。
Size:要接收的數(shù)據(jù)的字節(jié)數(shù)。

函數(shù)返回值:

返回 HAL_StatusTypeDef 類型的值,表示函數(shù)執(zhí)行的狀態(tài)??赡艿姆祷刂蛋?HAL_OK(成功)和其他錯(cuò)誤代碼,如 HAL_ERROR。

函數(shù)作用:

這個(gè)函數(shù)用于配置串口接收,使其能夠在接收到數(shù)據(jù)后等待空閑中斷(IDLE interrupt)來(lái)標(biāo)志數(shù)據(jù)幀的接收完成。
一旦串口接收到完整的數(shù)據(jù)幀,即收到停止位后,等待一段連續(xù)的空閑時(shí)間,即在一個(gè)字節(jié)的時(shí)間內(nèi)沒(méi)有接收到新數(shù)據(jù),串口會(huì)產(chǎn)生空閑中斷(IDLE interrupt),從而觸發(fā)回調(diào)函數(shù)或中斷服務(wù)例程,標(biāo)志著一幀數(shù)據(jù)的接收完成。

函數(shù)調(diào)用流程:

在調(diào)用該函數(shù)后,串口會(huì)開(kāi)始接收數(shù)據(jù),并等待空閑中斷的觸發(fā)。
一旦接收到完整的數(shù)據(jù)幀,并且在一段連續(xù)的空閑時(shí)間內(nèi)沒(méi)有接收到新數(shù)據(jù),串口會(huì)觸發(fā)空閑中斷。
在空閑中斷觸發(fā)后,可以在空閑中斷的回調(diào)函數(shù)或者中斷服務(wù)例程中進(jìn)行數(shù)據(jù)處理,如拷貝接收到的數(shù)據(jù)到指定的緩沖區(qū),并進(jìn)一步處理或者通知應(yīng)用程序。

2.編寫中斷回調(diào)函數(shù)

當(dāng)觸發(fā)串口空閑中斷時(shí)會(huì)調(diào)用到void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)。這個(gè)回調(diào)函數(shù)。

3.完整代碼編寫

在這個(gè)代碼中我們?cè)诖谥种邪l(fā)送LED ON和LED OFF來(lái)控制LED燈的打開(kāi)和關(guān)閉。LED ON和LED OFF為不同長(zhǎng)度的數(shù)據(jù),使用普通的串口接收方法來(lái)接收這個(gè)長(zhǎng)度不定的數(shù)據(jù)是比較復(fù)雜的,現(xiàn)在我們可以使用DMA+空閑中斷接收來(lái)解決這個(gè)問(wèn)題。

uint8_t Rx_data[100] = {0};//保存接收到的數(shù)據(jù)//空閑中斷回調(diào)函數(shù)
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{if(huart->Instance == USART1){if(strstr(Rx_data, "LED ON") != NULL){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);}else if(strstr(Rx_data, "LED OFF") != NULL){HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);}HAL_UARTEx_ReceiveToIdle_IT(&huart1, Rx_data, 100);}		
}//接收到100字節(jié)會(huì)調(diào)用接收完成中斷回調(diào)函數(shù)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1){HAL_UARTEx_ReceiveToIdle_IT(&huart1, Rx_data, 100);}
}HAL_UARTEx_ReceiveToIdle_IT(&huart1, Rx_data, 100);//開(kāi)啟接收功能

總結(jié)

本篇文章就講解到這里,大家也可以自己寫代碼實(shí)際操作一下。

http://m.risenshineclean.com/news/60801.html

相關(guān)文章:

  • 網(wǎng)站開(kāi)發(fā)語(yǔ)言揭陽(yáng)百度seo公司
  • 做面包有關(guān)電影網(wǎng)站百度導(dǎo)航下載2021最新版
  • 網(wǎng)站技術(shù)報(bào)務(wù)費(fèi)如何做會(huì)計(jì)分錄搜索網(wǎng)站排名
  • 貴陽(yáng)網(wǎng)絡(luò)網(wǎng)站建設(shè)八上數(shù)學(xué)優(yōu)化設(shè)計(jì)答案
  • html網(wǎng)站開(kāi)發(fā)實(shí)戰(zhàn)教程seo營(yíng)銷是什么意思
  • 學(xué)術(shù)會(huì)議網(wǎng)站怎么做seo描述快速排名
  • 去除wordpress 廣告湖南正規(guī)關(guān)鍵詞優(yōu)化首選
  • 做淘寶相關(guān)網(wǎng)站seo下載站
  • 做招聘信息的網(wǎng)站有哪些內(nèi)容重慶網(wǎng)站關(guān)鍵詞排名
  • 雄安新區(qū)做網(wǎng)站公司東莞整站優(yōu)化推廣公司找火速
  • 余姚網(wǎng)站推廣優(yōu)化工具箱
  • 怎么建立一個(gè)網(wǎng)站csdn中國(guó)十大電商平臺(tái)有哪些
  • 貴州省交通建設(shè)工程質(zhì)量監(jiān)督局網(wǎng)站大數(shù)據(jù)精準(zhǔn)營(yíng)銷案例
  • 做網(wǎng)站好的網(wǎng)站建設(shè)公司百度世界500強(qiáng)排名
  • 做微信活動(dòng)是做網(wǎng)站還是做小程序好百度地圖導(dǎo)航2022最新版
  • 淘寶做首頁(yè)熱點(diǎn)的什么網(wǎng)站微信營(yíng)銷軟件哪個(gè)好用
  • 網(wǎng)站開(kāi)發(fā) 網(wǎng)絡(luò)工程 哪個(gè)好設(shè)計(jì)網(wǎng)頁(yè)的軟件
  • 做公眾號(hào)還是網(wǎng)站百度一下你就知道了主頁(yè)
  • 網(wǎng)站建設(shè)維護(hù)php網(wǎng)上互聯(lián)網(wǎng)推廣
  • 貴司不斷優(yōu)化網(wǎng)站建設(shè)軟文世界平臺(tái)
  • 企業(yè)網(wǎng)站免費(fèi)建站程序百度官網(wǎng)app下載安裝
  • 廈門的企業(yè)網(wǎng)站國(guó)際新聞今日頭條
  • 英文商務(wù)網(wǎng)站制作百度互聯(lián)網(wǎng)營(yíng)銷是什么
  • 網(wǎng)站備案信息核驗(yàn)單填寫成都網(wǎng)絡(luò)推廣優(yōu)化
  • 做百度移動(dòng)端網(wǎng)站優(yōu)web成品網(wǎng)站源碼免費(fèi)
  • 如何注冊(cè)公司網(wǎng)站免費(fèi)注冊(cè)百度競(jìng)價(jià)排名服務(wù)
  • wordpress+更新+慢贛州seo
  • 什么軟件可以做app軟件seo是什么職業(yè)做什么的
  • 福田慶三baby案例照批量?jī)?yōu)化網(wǎng)站軟件
  • 網(wǎng)站建設(shè)培訓(xùn)招生長(zhǎng)尾詞挖掘