日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在這里需要理解一個(gè)概念就是,使用hal庫(kù),首先一定要對(duì)標(biāo)準(zhǔn)庫(kù)中外設(shè)的使用,有一個(gè)很好的了解,在我這里出現(xiàn)這個(gè)原因就是由于對(duì)標(biāo)準(zhǔn)庫(kù)中外設(shè)的使用不夠了解,導(dǎo)致轉(zhuǎn)移到HAL庫(kù),出現(xiàn)各種問題。本次采用的是HAL庫(kù)串口2

在這里需要理解一個(gè)概念就是,使用hal庫(kù),首先一定要對(duì)標(biāo)準(zhǔn)庫(kù)中外設(shè)的使用,有一個(gè)很好的了解,在我這里出現(xiàn)這個(gè)原因就是由于對(duì)標(biāo)準(zhǔn)庫(kù)中外設(shè)的使用不夠了解,導(dǎo)致轉(zhuǎn)移到HAL庫(kù),出現(xiàn)各種問題。
本次采用的是HAL庫(kù)串口2中斷的接受,DMA方式發(fā)送。
具體想實(shí)現(xiàn)的功能是:上位機(jī)發(fā)送一幀固定的數(shù)據(jù)(15bit)前面2個(gè)字節(jié)固定的,在串口中斷中,檢測(cè)到了這個(gè)前面2個(gè)字節(jié)是正確的,則進(jìn)行數(shù)據(jù)的處理。處理好數(shù)據(jù)以后,在采用DMA方式發(fā)送出去對(duì)應(yīng)的數(shù)據(jù)。
出現(xiàn)的問題:每次調(diào)用函數(shù)這個(gè)函數(shù)后,下次就不能使用了

MYDMA_USART_Transmit(&UART2_Handler(u8*)USART2_TX_BUF,USART2_REC_LEN);//啟動(dòng)傳輸12

(ps : 該函數(shù)是原子哥提供的采用hal庫(kù)USART_DMA發(fā)送固定長(zhǎng)度的數(shù)據(jù)的函數(shù))
查看各種問題后,發(fā)現(xiàn)是由于發(fā)送完成以后,沒有清除中斷完成標(biāo)志,并且完成以后需要在關(guān)閉串口DMA.

//等待DMA1_Steam6傳輸完成if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6)){__HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除DMA1_Steam6傳輸完成標(biāo)志HAL_UART_DMAStop(&UART2_Handler);//傳輸完成以后關(guān)閉串口DMA}123456

一般情況下我們都是采用while(1)循環(huán)的方式來進(jìn)行等待DMA發(fā)送完成.

while(1){if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//等待DMA1_Steam6傳輸完成{__HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除DMA1_Steam6傳輸完成標(biāo)志HAL_UART_DMAStop(&UART2_Handler);//傳輸完成以后關(guān)閉串口DMA}break;}12345678

當(dāng)時(shí)采用這種方式會(huì)是的我們的CPU主權(quán)的不到很好的釋放,所以我們采用定時(shí)中斷的方式去實(shí)現(xiàn),這樣就不會(huì)占用CPU了??梢圆捎枚〞r(shí)400us判斷一次傳輸是否完成。

//定時(shí)器中斷回調(diào)函數(shù)voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){if(htim==(&TIM3_Handler)){if(__HAL_DMA_GET_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6))//等待DMA1_Steam6傳輸完成{__HAL_DMA_CLEAR_FLAG(&UART2TxDMA_Handler,DMA_FLAG_TCIF2_6);//清除DMA1_Steam6傳輸完成標(biāo)HAL_UART_DMAStop(&UART2_Handler);//傳輸完成以后關(guān)閉串口DMA}}}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉