ARM微控制器與嵌入式系統(tǒng) 課件 23 USART編程要點(diǎn)_第1頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 23 USART編程要點(diǎn)_第2頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 23 USART編程要點(diǎn)_第3頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 23 USART編程要點(diǎn)_第4頁(yè)
ARM微控制器與嵌入式系統(tǒng) 課件 23 USART編程要點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論