国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

上門做指甲哪個網(wǎng)站百度seo工作室

上門做指甲哪個網(wǎng)站,百度seo工作室,自助建網(wǎng)站軟件平臺,海南省人才在線一、簡介 本文主要介紹STM32如何配合USART的IDLE中斷實現(xiàn)USART DMA接收不定長的數(shù)據(jù)。其中使用的接收緩存還是延用前面博客寫的乒乓緩存。使用DMA USART接收來替代中斷方式或輪詢方式的接收主要是為了提高代碼的運行效率,中斷方式的接收,每接收一個字節(jié)便…

一、簡介

? ? ? ? 本文主要介紹STM32如何配合USART的IDLE中斷實現(xiàn)USART DMA接收不定長的數(shù)據(jù)。其中使用的接收緩存還是延用前面博客寫的乒乓緩存。使用DMA USART接收來替代中斷方式或輪詢方式的接收主要是為了提高代碼的運行效率,中斷方式的接收,每接收一個字節(jié)便會產(chǎn)生一個中斷,當串口有大量數(shù)據(jù)需要接收時,會造成CPU不停的被中斷打斷,頻繁的出入棧造成整個系統(tǒng)不穩(wěn)定的情況且也會影響到主任務里其它流程的執(zhí)行時序,造成主任務里的流程滯后現(xiàn)象,影響其它事情的實時性。引進DMA的接收正是為了解決該問題。

二、設計思路

? ? ? ? USART 使用DMA方式接收需要考慮到從USART傳輸進來的數(shù)據(jù)可能會出現(xiàn)不定長等現(xiàn)象,在通信協(xié)議上該問題屬于正?,F(xiàn)象。但DMA的傳輸又需要指定特定長度因此在配置DMA時,我們很難得知要配置多少接收長度,接收長度配置多了,DMA不會產(chǎn)生傳輸完成標志,配置少了又可能造成頻繁觸發(fā)DMA現(xiàn)象導致數(shù)據(jù)不好處理,出現(xiàn)要拼包等現(xiàn)象。因此這里使用STM32的特性空閑中斷來判斷一次DMA的傳輸完成??臻e是指在串口接收到一幀數(shù)據(jù)后,沒有再接收到數(shù)據(jù)此時會產(chǎn)生一個空閑幀此時會置位IDLE位,如若配置置IDLEIE位則會進入中斷。注:首次配置USART初始化開啟TE位的時候也會產(chǎn)生空閑幀需要濾掉。

二、配置流程

? ? ? ? 1) USART 使能IDLEIE位

? ? ? ? ?使能USART1的空閑中斷

USART1->CR1 |= 1 << 4;                                // enable IDLE interrupt

? ? ? ? 2) USART 配置DMA接收初始化

DMA_USART1_Receive_Config(DMA1_Channel5, (u32)&USART1->DR);void DMA_USART1_Receive_Config(DMA_Channel_TypeDef* DMA_CHx, u32 cpar)
{DMA_CHx->CPAR = cpar;                    //cfg periph addr DMA_CHx->CCR |= 3 << 12;                 //cfg channel prio 3DMA_CHx->CCR &= ~(1 << 4);               //cfg periph to memDMA_CHx->CCR &= ~(1 << 5);               //cfg dma single transferDMA_CHx->CCR |= 1 << 7;                  //cfg mem transfer addr inc
}

? ? ? ? 3)使能USART DMA接收

DMA_UART1_RECEIVE_ENABLE(DMA1_Channel5, (u32)p_cur_Usart1_Handle, 256);void DMA_UART1_RECEIVE_ENABLE(DMA_Channel_TypeDef* DMA_CHx, u32 cmar, u16 cndtr)
{USART1->CR3 |= 1 << 6;                    //enable uart dma rxDMA_CHx->CCR &= ~(1 << 0);               //dma channel disableDMA_CHx->CMAR = (u32)cmar;               //cfg mem addrDMA_CHx->CNDTR = cndtr;                  //cfg transfer lendma_cfg_recieve_cnt = DMA_CHx->CNDTR;DMA_CHx->CCR |= 1;                       //dma channel en
}

? ? ? ? 4)USART IDLE中斷處理

? ? ? ? 在void USART1_IRQHandler(void)中斷函數(shù)里通過獲取DR寄存器清IDLE位。并置位recieve_idle 通知處理數(shù)據(jù)幀。

	if (USART1->SR & (1 << 4)){u8 temp;temp = USART1->DR;recieve_idle = 1;}

? ? ? ? 5)IDLE 的處理

? ? ? ? 主循環(huán)輪詢產(chǎn)生IDLE的話表示當前收到一幀完整數(shù)據(jù)幀,則需要處理,處理流程:關(guān)DMA USART接收->獲取DMA 傳輸數(shù)據(jù)量->切換接收緩存即取發(fā)送緩存->使能DMA USART接收。

void idle_process(void)
{if (recieve_idle){recieve_idle = 0;DMA_UART1_RECEIVE_DISABLE(DMA1_Channel5);p_cur_Usart1_Handle->len = GET_DMA_TRANSFER_CNT(DMA1_Channel5);change_curFifo();DMA_UART1_RECEIVE_ENABLE(DMA1_Channel5, (u32)p_cur_Usart1_Handle, 256);}
}

? ? ? ? 6)USART DMA發(fā)送

? ? ? ? 該內(nèi)容參考上一篇博客STM32 寄存器配置筆記——USART DMA發(fā)送

具體代碼如下:

?

?

http://aloenet.com.cn/news/42434.html

相關(guān)文章:

  • dw做網(wǎng)站一般設為什么樣浙江網(wǎng)站建設制作
  • 國外網(wǎng)站怎么上合肥seo管理
  • 經(jīng)過開發(fā)建設 網(wǎng)站上線了長尾關(guān)鍵詞排名工具
  • 網(wǎng)站建設以推廣外貿(mào)seo推廣
  • 做網(wǎng)站只用php不用html溫州seo
  • 給朋友做網(wǎng)站警察開找西安競價托管
  • 浙江建設職業(yè)繼續(xù)教育學院網(wǎng)站如何搭建網(wǎng)站平臺
  • 大學生兼職網(wǎng)站開發(fā)畢設論文上海服務政策調(diào)整
  • 個人做短視頻網(wǎng)站東莞百度seo
  • 手機如何做微商城網(wǎng)站成都推廣系統(tǒng)
  • 網(wǎng)站設置了刷新限制關(guān)鍵詞代發(fā)排名首頁
  • 做國外產(chǎn)品描述的網(wǎng)站如何優(yōu)化搜索引擎的準確性
  • 重慶建設廳網(wǎng)站如何自己編寫網(wǎng)站
  • 有贊可以做獨立網(wǎng)站嗎seo網(wǎng)絡排名優(yōu)化技巧
  • 網(wǎng)站建設的技術(shù)方案模板下載做app推廣去哪找商家
  • 給網(wǎng)站怎么做tag標簽他達拉非片多少錢一盒
  • 地方電商門戶網(wǎng)站如何建設公司網(wǎng)站制作需要多少錢
  • 玄武模板網(wǎng)站制作報價怎么聯(lián)系百度推廣
  • 深圳外貿(mào)網(wǎng)站開發(fā)建設網(wǎng)絡營銷出來可以干什么工作
  • 做動態(tài)網(wǎng)站有哪些平臺關(guān)于市場營銷的100個問題
  • 網(wǎng)站管理的內(nèi)容網(wǎng)站推廣系統(tǒng)
  • wordpress加授權(quán)網(wǎng)絡優(yōu)化工程師證書
  • 做視頻小網(wǎng)站犯法嗎可口可樂營銷策劃方案
  • 做網(wǎng)站的控件新品牌推廣策略
  • 如何選擇丹陽網(wǎng)站建設百度榜單
  • 遂溪手機網(wǎng)站建設公司百度指數(shù)專業(yè)版app
  • 我想網(wǎng)關(guān)鍵詞優(yōu)化舉例
  • h網(wǎng)站建設網(wǎng)絡優(yōu)化大師手機版
  • 做企業(yè)網(wǎng)站的好處域名注冊平臺有哪些
  • photoshop網(wǎng)站視覺設計步驟seo引流什么意思