版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARM微控制器與嵌入式系統(tǒng)
USART編程要點(diǎn)主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容串口硬件連接串口編程要點(diǎn)USART結(jié)構(gòu)體初始化USART庫(kù)函數(shù)USART發(fā)送接收數(shù)據(jù)串口硬件連接以單片機(jī)與PC通信為例:USART通過(guò)3個(gè)引腳與其他設(shè)備連接在STM32的USART1中:RX:數(shù)據(jù)串行輸入。PA10TX:發(fā)送數(shù)據(jù)輸出。PA9GND串口硬件連接TXPA10RXPA9串口硬件連接串口編程要點(diǎn)1.使能RX和TX引腳GPIO時(shí)鐘和USART時(shí)鐘;2.初始化GPIO,并將GPIO復(fù)用到USART上;3.配置USART參數(shù);4.配置中斷控制器并使能USART接收中斷;5.使能USART;6.在USART接收中斷服務(wù)函數(shù)實(shí)現(xiàn)數(shù)據(jù)接收和發(fā)送。串口編程要點(diǎn)1.使能RX和TX引腳GPIO時(shí)鐘和USART時(shí)鐘使能GPIO時(shí)鐘:PA9和PA10的GPIO口時(shí)鐘RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);串口編程要點(diǎn)1.使能RX和TX引腳GPIO時(shí)鐘和USART時(shí)鐘使能USART時(shí)鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);串口編程要點(diǎn)2.初始化GPIO,并將GPIO復(fù)用到USART上;初始化GPIOGPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_9;GPIO_Init(GPIOA,&GPIO_InitStructure);串口編程要點(diǎn)2.初始化GPIO,并將GPIO復(fù)用到USART上;將GPIO復(fù)用到USART上voidGPIO_PinAFConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_PinSource,uint8_tGPIO_AF)GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體typedefstruct{uint32_tUSART_BaudRate;//波特率BRRuint16_tUSART_WordLength;//字長(zhǎng)CR1_Muint16_tUSART_StopBits;//停止位CR2_STOPuint16_tUSART_Parity;//校驗(yàn)控制CR1_PCE、CR1_PSuint16_tUSART_Mode;//模式選擇CR1_TE、CR1_REuint16_tUSART_HardwareFlowControl;//硬件流選擇CR3_CTSE、CR3_RTSE}USART_InitTypeDef;串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_BaudRate;波特率一般設(shè)置為2400、9600、19200、115200。標(biāo)準(zhǔn)庫(kù)函數(shù)會(huì)根據(jù)設(shè)定值計(jì)算得到USARTDIV值,并設(shè)置USART_BRR寄存器值USART_InitStructure.USART_BaudRate=115200;串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_WordLength數(shù)據(jù)幀字長(zhǎng),可選8位或9位。如果沒(méi)有使能奇偶校驗(yàn)控制,一般使用8數(shù)據(jù)位;如果使能了奇偶校驗(yàn)則一般設(shè)置為9數(shù)據(jù)位。USART_InitStructure.USART_WordLength=USART_WordLength_8b;串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_StopBits停止位設(shè)置,可選0.5個(gè)、1個(gè)、1.5個(gè)和2個(gè)停止位,一般我們選擇1個(gè)停止位。USART_InitStructure.USART_StopBits=USART_StopBits_1;串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_Parity奇偶校驗(yàn)控制選擇??蛇x擇無(wú)校驗(yàn),偶校驗(yàn),奇校驗(yàn)USART_InitStructure.USART_Parity=USART_Parity_No;串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_ModeUSART模式選擇,有USART_Mode_Rx和USART_Mode_TxUSART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//同時(shí)使能收發(fā)串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體USART_HardwareFlowControl硬件流控制選擇,只有在硬件流控制模式才有效可選有⑴使能RTS、⑵使能CTS、⑶同時(shí)使能RTS和CTS、⑷不使能硬件流。USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化3.配置USART參數(shù);--USART結(jié)構(gòu)體
/*完成USART初始化配置*/USART_Init(DEBUG_USART,&USART_InitStructure);串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化4.配置中斷控制器并使能USART接收中斷;NVIC_Configuration();
/*嵌套向量中斷控制器NVIC配置*/USART_ITConfig(DEBUG_USART,USART_IT_RXNE,ENABLE);/*使能串口接收中斷*/ 串口編程要點(diǎn)-USART結(jié)構(gòu)體初始化5.使能USART;USART_Cmd(DEBUG_USART,ENABLE);6.在USART接收中斷服務(wù)函數(shù)實(shí)現(xiàn)數(shù)據(jù)接收和發(fā)送。常用的USART庫(kù)函數(shù)函數(shù)USART_Init初始化異步串口,包括選定使用的串口,設(shè)定串口的數(shù)據(jù)傳輸速率、數(shù)據(jù)位、檢驗(yàn)方式、停止位、流量控制方式USART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);USART_Init(USART1,&USART_InitStructure);常用的USART庫(kù)函數(shù)函數(shù)USART_Cmd使能或失能USART外設(shè)voidUSART_Cmd(USART_TypeDef*USARTx,FunctionalStateNewState);USART_Cmd(USART1,ENABLE);//使能USART_Cmd(USART1,DISABLE);//失能常用的USART庫(kù)函數(shù)函數(shù)USART_ITConfig使能或失能指定的USART中斷voidUSART_ITConfig(USART_TypeDef*USARTx,uint16_tUSART_IT,FunctionalStateNewState);常用的USART_IT的值有:USART_IT_TXE(發(fā)送數(shù)據(jù)寄存器為空),USART_IT_RXNE(接收數(shù)據(jù)寄存器非空,即有數(shù)據(jù)可讀)USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能接收中斷常用的USART庫(kù)函數(shù)函數(shù)USART_SendData數(shù)據(jù)發(fā)送函數(shù),通過(guò)外設(shè)USARTx發(fā)送單個(gè)數(shù)據(jù)voidUSART_SendData(USART_TypeDef*USARTx,uint16_tData);USART_SendData(USART1,0x26);//通過(guò)USART1發(fā)送字符0x26這里要說(shuō)明的是發(fā)送的Data是字符常用的USART庫(kù)函數(shù)函數(shù)USART_ReceiveData數(shù)據(jù)接收函數(shù),返回外設(shè)USARTx接收的數(shù)據(jù)uint16_tUSART_ReceiveData(USART_TypeDef*USARTx);RxData=USART_ReceiveData(USART1);//從USART1接收的字符存入RxData中常用的USART庫(kù)函數(shù)函數(shù)USART_GetFlagStatus檢查指定的USART標(biāo)志位設(shè)置與否FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,uint32_tUSART_FLAG);USART_FLAG為需要檢查的USART標(biāo)志位,可以取一個(gè)或多個(gè)值的組合作為該參數(shù)的值USART_FLAG的值有:USART_FLAG_RXNE(接收數(shù)據(jù)完成),USART_FLAG_TXE(發(fā)送數(shù)據(jù)寄存器為空),USART_FLAG_TC(發(fā)送數(shù)據(jù)完成)Status=USART_GetFlagStatus(USART1,USART_FLAG_TXE);//檢查USART1的發(fā)送標(biāo)志位常用的USART庫(kù)函數(shù)函數(shù)USART_ClearFlag清除USART的待處理標(biāo)志位voidUSART_ClearFlag(USART_TypeDef*USARTx,uint32_tUSART_FLAG);USART_ClearFlag(USART1,USART_FLAG_ORG);//清除USART1的溢出錯(cuò)誤標(biāo)志位常用的USART庫(kù)函數(shù)函數(shù)USART_GetITStatus檢查指定的USART中斷發(fā)生與否ITStatusUSART_GetITStatus(USART_TypeDef*USARTx,uint32_tUSART_IT);USART_IT為需要檢查的USART中斷標(biāo)志位常用的USART_IT的值有:USART_IT_TXE(發(fā)送數(shù)據(jù)寄存器為空),USART_IT_RXNE(接收數(shù)據(jù)寄存器非空,即有數(shù)據(jù)可讀)Status=USART_GetITStatus(USART1,USART_IT_TXE);//檢查USART1的發(fā)送中斷標(biāo)志位常用的USART庫(kù)函數(shù)函數(shù)USART_ClearITPendingBit清除USART的中斷標(biāo)志位voidUSART_ClearITPendingBit(USART_TypeDef*USARTx,uint32_tUSART_IT);USART_ClearITPendingBit(USART1,USART_IT_TXE);//清除USART1的發(fā)送數(shù)據(jù)中斷標(biāo)志位常用的庫(kù)函數(shù)函數(shù)GPIO_PinAFConfig配置GPIO的某個(gè)引腳為具體的第二功能
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)大全人事管理篇十篇
- 《行政職業(yè)能力測(cè)驗(yàn)》2024年公務(wù)員考試尤溪縣臨考沖刺試卷含解析
- 八下期末考拔高測(cè)試卷(5)(解析版)
- 寒假自習(xí)課 25春初中道德與法治八年級(jí)下冊(cè)教學(xué)課件 第三單元 第五課 第2課時(shí) 基本政治制度
- 《皮外骨傷科病證》課件
- 鐵路線路設(shè)計(jì)合同三篇
- 服裝店衛(wèi)生消毒指南
- 幼兒園工作總結(jié)攜手陪伴成長(zhǎng)無(wú)憂
- 餐飲行業(yè)助理工作總結(jié)
- 感恩父母演講稿錦集八篇
- 明細(xì)賬(三欄式)模板
- 正大天虹方矩管鍍鋅方矩管材質(zhì)書(shū)
- 2024年山東魯商集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 妊娠劇吐伴酮癥護(hù)理查房課件
- 200#溶劑油安全技術(shù)說(shuō)明書(shū)
- 單位洗車房管理制度
- 廣西壯族自治區(qū)欽州市浦北縣2022-2023學(xué)年七年級(jí)上學(xué)期期末英語(yǔ)試題
- 動(dòng)力學(xué)全套課件
- 廣東省深圳市2022-2023學(xué)年六年級(jí)上學(xué)期語(yǔ)文期末試卷(含答案)6
- 2022-2023學(xué)年北京市海淀區(qū)高一(上)期末生物試卷(附答案詳解)
- 河南省出版物經(jīng)營(yíng)許可證申請(qǐng)登記表
評(píng)論
0/150
提交評(píng)論