



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一建立STM32cubeMX工程1 .建立新工程,選擇芯片STM32F302CCTx2 .在Pinout中時鐘配置為高速外部時鐘,UART配置為異步通信,cube會自動分配引腳。3 .ClockConfiguration中配置如下4 .configuration中點(diǎn)擊USART1可進(jìn)入配置在USART1configuration中ParameterSettingST以配置波特率,發(fā)送數(shù)據(jù)字長,奇偶校驗(yàn)位和停止位等。NVICSetting可以配置中斷優(yōu)先級。5 .生成keil軟件代碼點(diǎn)擊工具欄中的齒輪按鈕,可以選擇代碼的開發(fā)平臺,ok結(jié)束。(文件保存路徑一定要是全英文的)進(jìn)過了我們一系列的配置,
2、cube會為我們自動生成keil軟件的代碼,代碼中包括工程所需的固件庫,配套的頭文件,啟動文件及用戶文件。在main.c中包括了我們工程所需外設(shè)的初始化,包括了系統(tǒng)時鐘初始化,中斷初始化,GPIO初始化,USART1初始化,HAL庫初始化。我們只需要在main.c中添加我們自己的代碼就可以了。二keil軟件代碼及HAL庫使用UART_HandleTypeDefhuart1;生成的代碼中有聲明一個USART處理的結(jié)構(gòu)體HAL庫中串口的數(shù)據(jù)收發(fā)有四個函數(shù)HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,uint8_t*pData
3、,uint16_tSize,uint32_tTimeout);HAL_StatusTypeDefHAL_UART_Receive(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize,uint32_tTimeout);指針huart指向我們之前定義的USART處理結(jié)構(gòu)體,我們將在函數(shù)中對結(jié)構(gòu)體中的參數(shù)進(jìn)行操作。pDate是我們自己定義的數(shù)據(jù)發(fā)送接收緩存,Size發(fā)送接收數(shù)據(jù)個數(shù),Timeout超時持續(xù)時間。UART狀態(tài)的結(jié)構(gòu)體:我們在發(fā)送接收函數(shù)中要經(jīng)常對USART的狀態(tài)進(jìn)行判斷,以便我們對函數(shù)結(jié)構(gòu)體中的參數(shù)進(jìn)行操作,發(fā)送函數(shù)一開始定義了一個u
4、int16_t*tmp的指針。我們在這里判斷發(fā)送接收的字長(8byte或9byte),當(dāng)傳送的數(shù)據(jù)是9位數(shù)據(jù)時,HAL_UART_Receive_IT函數(shù)第二參數(shù)要求傳參uint8_t類型,到這里不夠,于是強(qiáng)轉(zhuǎn)uint16_t類型,將低9位數(shù)據(jù)保留移交給tmp,同時指針移動2個8位,也就是huart->pRxBuffPtr+=2。這樣,就能解釋為何在下面的8位數(shù)據(jù)位不需要tmp中間變量了,直接將數(shù)據(jù)放入我們的數(shù)據(jù)緩存地址。中斷處理函數(shù):打開中斷后會先調(diào)用這個中斷處理函數(shù)(該函數(shù)在啟動文件stm32f3xx_it.c中)在voidHAL_UART_IRQHandler(UART_Handl
5、eTypeDef*huart)函數(shù)中會使用_HAL_UART_GET_IT和_HAL_UART_GET_IT_SOURCE先檢查各個中斷是否被占用和是否失效,在調(diào)用中斷之前還會進(jìn)行錯誤的檢查。OverRunError、Noise、FramingError、ParityError等調(diào)用UART_Receive_IT()中斷接收函數(shù)。調(diào)用UART_Transmit_IT();中斷發(fā)送函數(shù)。(注意UART_Transmit_IT()和HAL_UART_Transmit_IT()函數(shù))HAL_UART_Transmit_IT在主函數(shù)中調(diào)用UART_Transmit_IT在中斷處理函數(shù)IRQHandle
6、()中調(diào)用HAL_StatusTypeDefHAL_UART_Transmit_IT(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize);HAL_StatusTypeDefHAL_UART_Receive_IT(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize);中斷函數(shù)一開始會判斷是否處于發(fā)送狀態(tài),如果不是返回HAL_BUSY。數(shù)據(jù)處理與之前的HAL_UART_Receive_IT()接收函數(shù)一致,當(dāng)用口接收到一個數(shù)據(jù)時,HAL庫在這時不會關(guān)閉中斷,它在將指定RxXferCount的接收個數(shù)遞減,如果不為零,是不會往下執(zhí)行的,中斷依舊開著,回調(diào)也不會執(zhí)行,會把數(shù)據(jù)一直往指定地址空間放,直到計(jì)數(shù)器為0時結(jié)束。這時才調(diào)用HAL_UART_RxCpltCallback()回調(diào)函數(shù);數(shù)據(jù)幀的個數(shù)必須是所傳參數(shù)的整數(shù)倍,例如,你想一個中斷收5個數(shù)據(jù),但是實(shí)際數(shù)據(jù)只有3個,它會一直等到5個才結(jié)束接收,不然不會去調(diào)回調(diào)函數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會場布置合同范本
- 鄉(xiāng)鎮(zhèn)商品房出租合同范本
- pe管材及管件購銷合同范本
- 協(xié)議離婚陰陽合同范本
- 酒店投資合作合同范本
- 燒豬店鋪轉(zhuǎn)讓合同范本
- 櫥柜衣柜制作及其安裝合同范本
- 國際采購合同范本
- 合法用工合同范本
- 教育機(jī)構(gòu)培訓(xùn)合同范本
- 職業(yè)健康安全交底
- GB∕T 28610-2020 甲基乙烯基硅橡膠
- GB∕T 7588.1-2020 電梯制造與安裝安全規(guī)范 第1部分:乘客電梯和載貨電梯
- 4.昆蟲備忘錄 課件(共15張PPT)
- DB37∕T 5191-2021 高延性混凝土加固技術(shù)規(guī)程
- 2022年全省公訴業(yè)務(wù)知識考試參考答案
- 田字格(綠色標(biāo)準(zhǔn))
- 鎮(zhèn)政府(街道辦事處)辦公大樓平面圖
- 軟壓光機(jī)計(jì)算說明
- 森林防火安全責(zé)任書(施工隊(duì)用)
- 水庫應(yīng)急搶險與典型案例分析
評論
0/150
提交評論