stm32cubeMX串口使用文檔_第1頁(yè)
stm32cubeMX串口使用文檔_第2頁(yè)
stm32cubeMX串口使用文檔_第3頁(yè)
stm32cubeMX串口使用文檔_第4頁(yè)
stm32cubeMX串口使用文檔_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.一建立STM32cubeMX工程1.建立新工程,選擇芯片STM32F302CCTx精品文檔放心下載2.在Pinout中時(shí)鐘配置為高速外部時(shí)鐘,UART配置為異步通信,cube會(huì)自動(dòng)分配引腳。精品文檔放心下載3.ClockConfiguration中配置如下精品文檔放心下載.4.configuration中點(diǎn)擊USART1可進(jìn)入配置感謝閱讀在USART1configuration中ParameterSettings可以配置波特率,發(fā)送數(shù)據(jù)字長(zhǎng),奇偶謝謝閱讀校驗(yàn)位和停止位等。NVICSetting可以配置中斷優(yōu)先級(jí)。謝謝閱讀.5.生成keil軟件代碼點(diǎn)擊工具欄中的齒輪按鈕,可以選擇代碼的開發(fā)平臺(tái),ok結(jié)束。(文件保存路徑一定要是感謝閱讀全英文的)進(jìn)過了我們一系列的配置,cube會(huì)為我們自動(dòng)生成keil軟件的代碼,代碼中包括工程所需精品文檔放心下載的固件庫(kù),配套的頭文件,啟動(dòng)文件及用戶文件。在main.c中包括了我們工程所需外設(shè)的謝謝閱讀初始化,包括了系統(tǒng)時(shí)鐘初始化,中斷初始化,GPIO初始化,USART1初始化,HAL庫(kù)初謝謝閱讀.始化。我們只需要在main.c中添加我們自己的代碼就可以了。精品文檔放心下載二keil軟件代碼及HAL庫(kù)使用UART_HandleTypeDefhuart1;生成的代碼中有聲明一個(gè)USART處理的結(jié)構(gòu)體精品文檔放心下載.HAL庫(kù)中串口的數(shù)據(jù)收發(fā)有四個(gè)函數(shù)HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef*huart, uint8_t感謝閱讀*pData,uint16_tSize,uint32_tTimeout);精品文檔放心下載HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t精品文檔放心下載*pData,uint16_tSize,uint32_tTimeout);感謝閱讀指針huart指向我們之前定義的USART處理結(jié)構(gòu)體,我們將在函數(shù)中對(duì)結(jié)構(gòu)體中的參數(shù)進(jìn)精品文檔放心下載行操作。pDate是我們自己定義的數(shù)據(jù)發(fā)送接收緩存,Size發(fā)送接收數(shù)據(jù)個(gè)數(shù),Timeout精品文檔放心下載超時(shí)持續(xù)時(shí)間。UART狀態(tài)的結(jié)構(gòu)體:我們?cè)诎l(fā)送接收函數(shù)中要經(jīng)常對(duì)USART的狀態(tài)進(jìn)行判斷,以便我們對(duì)函數(shù)結(jié)構(gòu)體中的參數(shù)精品文檔放心下載進(jìn)行操作,發(fā)送函數(shù)一開始定義了一個(gè)uint16_t*tmp的指針。我們?cè)谶@里判斷發(fā)送接收的字長(zhǎng)(8byte精品文檔放心下載或9byte),當(dāng)傳送的數(shù)據(jù)是9位數(shù)據(jù)時(shí),HAL_UART_Receive_IT函數(shù)第二參數(shù)要求傳參精品文檔放心下載.uint8_t類型,到這里不夠,于是強(qiáng)轉(zhuǎn)uint16_t類型,將低9位數(shù)據(jù)保留移交給tmp,同感謝閱讀時(shí)指針移動(dòng)2個(gè)8位,也就是huart->pRxBuffPtr+=2。這樣,就能解釋為何在下面的8精品文檔放心下載位數(shù)據(jù)位不需要tmp中間變量了,直接將數(shù)據(jù)放入我們的數(shù)據(jù)緩存地址。謝謝閱讀中斷處理函數(shù):打開中斷后會(huì)先調(diào)用這個(gè)中斷處理函數(shù)(該函數(shù)在啟動(dòng)文件stm32f3xx_it.c中)謝謝閱讀在 void HAL_UART_IRQHandler(UART_HandleTypeDef*huart)函數(shù)中會(huì)使用精品文檔放心下載__HAL_UART_GET_IT和__HAL_UART_GET_IT_SOURCE先檢查各個(gè)中斷是否被占用和是感謝閱讀否失效,在調(diào)用中斷之前還會(huì)進(jìn)行錯(cuò)誤的檢查。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()中調(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ù)一開始會(huì)判斷是否處于發(fā)送狀態(tài),如果不是返回HAL_BUSY。精品文檔放心下載數(shù)據(jù)處理與之前的HAL_UART_Receive_IT()接收函數(shù)一致,當(dāng)串口接收到一個(gè)數(shù)據(jù)時(shí),HAL感謝閱讀庫(kù)在這時(shí)不會(huì)關(guān)閉中斷,它在將指定RxXferCount的接收個(gè)數(shù)遞減,如果不為零,是不會(huì)謝謝閱讀往下執(zhí)行的,中斷依舊開著,回調(diào)也不會(huì)執(zhí)行,會(huì)把數(shù)據(jù)一直往指定地址空間放,直到計(jì)數(shù)感謝閱讀器為0時(shí)結(jié)束。這時(shí)才調(diào)用HAL_UART_RxCpltCallback()回調(diào)函數(shù);謝謝閱讀數(shù)據(jù)幀的個(gè)數(shù)必須是所傳參數(shù)的整數(shù)倍,例如,你想一個(gè)中斷收5個(gè)數(shù)據(jù),但是實(shí)際數(shù)據(jù)精品文檔放心下載只有3個(gè),它會(huì)一直等到5個(gè)才結(jié)束接收,不然不會(huì)去調(diào)回調(diào)函數(shù),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論