




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目四串口通信任務(wù)1與PC串口通信項(xiàng)目四串口通信任務(wù)1任務(wù)2與PC串口通信控制LED亮滅知識(shí)目標(biāo):1.知道串行通信工作原理及特點(diǎn);2.掌握串口通信相關(guān)庫(kù)函數(shù)。技能目標(biāo):1.能正確使用串口通信相關(guān)庫(kù)函數(shù)。2.會(huì)串行通信的編程方法;素養(yǎng)目標(biāo):1.操作規(guī)范,符合5S管理要求;2.具備自主探究、勤學(xué)好問(wèn)的態(tài)度。學(xué)習(xí)目標(biāo)設(shè)計(jì)要求PC機(jī)給STM32的串口發(fā)送字符,STM32將接收到的字符再傳回PC機(jī),在PC機(jī)上通過(guò)串口調(diào)試助手完成上述功能,編寫(xiě)控制程序并進(jìn)行系統(tǒng)調(diào)試。硬件設(shè)計(jì)硬件連接:
知識(shí)導(dǎo)航串行通信是STM32與外界進(jìn)行信息交換的一種方式,被廣泛應(yīng)用于STM32雙機(jī)通信、多機(jī)通信以及STM32與PC機(jī)之間通信等方面。知識(shí)導(dǎo)航UART異步通信方式引腳連接方法RXD:數(shù)據(jù)輸入引腳(數(shù)據(jù)接受)TXD:數(shù)據(jù)發(fā)送引腳(數(shù)據(jù)發(fā)送)知識(shí)導(dǎo)航下面這些引腳默認(rèn)的功能都是GPIO,在作為串口使用時(shí),就要用到這些引腳的復(fù)用功能,在使用復(fù)用功能之前,必須對(duì)復(fù)用的端口進(jìn)行設(shè)置。串口號(hào)RXDTXD1PA10PA92PA3PA23PB11PB104PC11PC105PD2PC12串口對(duì)應(yīng)的引腳知識(shí)導(dǎo)航
STM32串口相關(guān)寄存器波特比率寄存器(USART_BRR)知識(shí)導(dǎo)航USART波特率與USART_BRR寄存器中的值USARTDIV關(guān)系如下: Tx/Rx波特率=其中:fPCLKx是給串口的時(shí)鐘(PCLK1用于USART2、3、UART4、5,PCLK2用于USART1),USARTDIV是一個(gè)無(wú)符號(hào)的定點(diǎn)數(shù)。
知識(shí)導(dǎo)航例1:如果DIV_Mantissa=27,DIV_Fraction=12(USART_BRR=0x1BC),則Mantissa(USARTDIV)=27Fraction(USARTDIV)=12/16=0.75所以USARTDIV=27.75知識(shí)導(dǎo)航例2:要求USARTDIV=25.62,如何設(shè)置寄存器USART_BRR?DIV_Fraction=16*0.62=9.92最接近的整數(shù)是:10=0xADIV_Mantissa=mantissa(25.620)=25=0x19所以USART_BRR=0x19A知識(shí)導(dǎo)航例3:要求USARTDIV=50.99,如何設(shè)置寄存器USART_BRR?DIV_Fraction=16*0.99=15.84最接近的整數(shù)是:16=0x10=>DIV_frac[3:0]溢出
=>進(jìn)位必須加到小數(shù)部分DIV_Mantissa=mantissa(50.990+進(jìn)位)=51=0x33所以USART_BRR=0x330,USARTDIV=51知識(shí)導(dǎo)航實(shí)例:設(shè)置USART1串口的波特率是115200bps,如何設(shè)置寄存器USART_BRR的值?USARTDIV=72000000/(16*115200)=39.0625整數(shù)部分DIV_Mantissa=39=0x27小數(shù)部分DIV_Fraction=16*0.0625=1所以USART_BRR=0x271知識(shí)導(dǎo)航
STM32串口相關(guān)寄存器控制寄存器1(USART_CR1)控制寄存器USART_CR1,只用了低14位,高18位保留知識(shí)導(dǎo)航位13(UE)USART使能。0:USART分頻器和輸出被禁止;1:USART模塊使能。位12(M)定義了數(shù)據(jù)字的長(zhǎng)度。0:一個(gè)起始位、8個(gè)數(shù)據(jù)位、n個(gè)停止位;1:一個(gè)起始位、9個(gè)數(shù)據(jù)位、n個(gè)停止位。位6(TCIE)發(fā)送完成中斷使能。0:禁止產(chǎn)生中斷;1:當(dāng)USART_SR中的TC為’1’時(shí),產(chǎn)生USART中斷。位5(RXNEIE)接收緩沖區(qū)非空中斷使能。0:禁止產(chǎn)生中斷;1:當(dāng)USART_SR中的ORE或者RXNE為“1”時(shí),產(chǎn)生USART中斷。位3(TE)發(fā)送使能發(fā)送器。0:禁止發(fā)送;1:使能發(fā)送。位2(RE)接收使能。0:禁止接收;1:使能接收,并開(kāi)始搜尋RX引腳上的起始位。知識(shí)導(dǎo)航
STM32串口相關(guān)寄存器數(shù)據(jù)寄存器(USART_DR)位8:0(DR)是數(shù)據(jù)值,這9位包含了發(fā)送或接收的數(shù)據(jù)。USART_DR是由兩個(gè)寄存器組成的,一個(gè)是用發(fā)送(TDR),一個(gè)是用接收(RDR),該寄存器兼具讀和寫(xiě)的功能。TDR寄存器提供了內(nèi)部總線(xiàn)和輸出移位寄存器之間的并行接口;RDR寄存器提供了輸入移位寄存器和內(nèi)部總線(xiàn)之間的并行接口。知識(shí)導(dǎo)航
STM32串口相關(guān)寄存器狀態(tài)寄存器(USART_SR)位6(TC)發(fā)送完成標(biāo)志位。0:發(fā)送還未完成;1:發(fā)送完成。位5(RXNE)讀數(shù)據(jù)寄存器非空標(biāo)志位。0:數(shù)據(jù)沒(méi)有收到;1:收到數(shù)據(jù),可以讀出。位0(PE)是校驗(yàn)錯(cuò)誤。0:沒(méi)有奇偶校驗(yàn)錯(cuò)誤;1:奇偶校驗(yàn)錯(cuò)誤。知識(shí)導(dǎo)航函數(shù)USART_Init函數(shù)原型:voidUSART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);函數(shù)功能:完成指定串口初始化,主要是配置串口的參數(shù)。參數(shù)1:選擇要初始化的串口。參數(shù)2:結(jié)構(gòu)USART_InitTypeDef的指針。知識(shí)導(dǎo)航USART_InitTypeDef結(jié)構(gòu)體typedefstruct{u32USART_BaudRate;u16USART_WordLength;u16USART_StopBits;u16USART_Parity;u16USART_HardwareFlowControl;u16USART_Mode;u16USART_Clock;u16USART_CPOL;u16USART_CPHA;u16USART_LastBit;}USART_InitTypeDef;知識(shí)導(dǎo)航USART_BaudRate:用于設(shè)置串口傳輸?shù)牟ㄌ芈?。USART_WordLength:定義一幀數(shù)據(jù)中傳輸或接收到的數(shù)據(jù)位數(shù)。知識(shí)導(dǎo)航USART_StopBits:指定發(fā)送的停止位數(shù)目。USART_Parity:定義奇偶模式。知識(shí)導(dǎo)航USART_HardwareFlowControl:指定硬件流控制模式使能還是禁止。USART_Mode:指定使能或禁止發(fā)送和接收模式知識(shí)導(dǎo)航實(shí)例USART_InitTypeDefUSART_InitStrue;USART_InitStrue.USART_BaudRate=115200;USART_InitStrue.USART_WordLength=USART_WordLength_8b;USART_InitStrue.USART_StopBits=USART_StopBits_1;USART_InitStrue.USART_Parity=USART_Parity_No;USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;USART_Init(USART1,&USART_InitStrue);知識(shí)導(dǎo)航函數(shù)USART_Cmd函數(shù)原型:voidUSART_Cmd(USART_TypeDef*USARTx,FunctionalStateNewState);
函數(shù)功能:用于使能串口。參數(shù)1:要使能的串口。參數(shù)2:串口的狀態(tài)Enable或Disable。例如:
USART_Cmd(USART1,ENABLE);知識(shí)導(dǎo)航函數(shù)USART_SendData函數(shù)原型:
voidUSART_SendData(USART_TypeDef*USARTx,u8Data);
函數(shù)功能:通過(guò)串口USARTx發(fā)送單個(gè)數(shù)據(jù)。參數(shù)1:要發(fā)送數(shù)據(jù)的串口USARTx。參數(shù)2:待發(fā)送的數(shù)據(jù)。例如:
USART_SendData(USART1,dat);知識(shí)導(dǎo)航函數(shù)USART_ReceiveData函數(shù)原型:
u8USART_ReceiveData(USART_TypeDef*USARTx);
函數(shù)功能:返回USARTx新接收到的數(shù)據(jù)。參數(shù):用于接收數(shù)據(jù)的串口USARTx。例如:
dat=USART_ReceiveData(USART1);知識(shí)導(dǎo)航函數(shù)USART_GetFlagStatus函數(shù)原型:
FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,u16USART_FLAG);
函數(shù)功能:檢查指定的USART標(biāo)志位設(shè)置與否。參數(shù)1:待檢查的串口USARTx。參數(shù)2:待檢查的USART標(biāo)志位。返回值:SET(接收/發(fā)送寄存器非空)或RESET(接收/發(fā)送寄存器為空)。知識(shí)導(dǎo)航知識(shí)導(dǎo)航實(shí)例if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET){ intdat; dat=USART_ReceiveData(USART1); USART_SendData(USART1,dat); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);}任務(wù)實(shí)現(xiàn)串口時(shí)鐘使能,GPIO時(shí)鐘使能:RCC_APB2PeriphClockCmd();GPIO端口模式設(shè)置:GPIO_Init();PA9設(shè)置成復(fù)用功能的推挽輸出(GPIO_Mode_AF_PP)PA10設(shè)置成浮空輸入(GPIO_Mode_IN_FLOATING)串口參數(shù)初始化:USART_Init();使能串口:USART_Cmd();數(shù)據(jù)發(fā)送和接收:USART_GetFlagStatus()、USART_SendData()、USART_ReceiveData()。拓展練習(xí):利用STM32中斷系統(tǒng)實(shí)現(xiàn):PC機(jī)給STM32的串口發(fā)送字符,STM32將接收到的字符再傳回PC機(jī)。技能訓(xùn)練知識(shí)導(dǎo)航函數(shù)USART_ITConfig函數(shù)原型:
voidUSART_ITConfig(USART_TypeDef*USARTx,u16USART_IT,FunctionalStateNewState);
函數(shù)功能:使能或禁止指定的USART中斷。參數(shù)1:指定的串口USARTx。參數(shù)2:待使能或禁止的USART中斷源。參數(shù)3:設(shè)置USARTx中斷的狀態(tài)(ENABLE或者DISABLE)。知識(shí)導(dǎo)航例如:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);知識(shí)導(dǎo)航函數(shù)USART_GetITStatus函數(shù)原型:
ITStatusUSART_GetITStatus(USART_TypeDef*USARTx,u16USART_IT);
函數(shù)功能:檢查指定的USART中斷是否發(fā)生。參數(shù)1:待檢查的串口USARTx。參數(shù)2:待檢查的USART中斷源。返回值:SET(發(fā)生中斷)或RESET(未發(fā)生中斷)。知識(shí)導(dǎo)航中斷服務(wù)函數(shù)USART1_IRQHandlervoidUSART1_IRQHandler(void){ if(USART_GetITStatus(USART1,USART_IT_RXNE)==
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 碳素?fù)诫s劑在鐵合金冶煉中的應(yīng)用考核試卷
- 森林公園生態(tài)旅游市場(chǎng)細(xì)分與定位考核試卷
- 農(nóng)業(yè)農(nóng)業(yè)機(jī)械產(chǎn)業(yè)節(jié)能減排配合服務(wù)批發(fā)考核試卷
- 礦物加工廠職業(yè)衛(wèi)生與員工健康考核試卷
- 漁業(yè)資源保護(hù)與海洋資源長(zhǎng)期可持續(xù)發(fā)展戰(zhàn)略全面實(shí)施考核試卷
- 電信行業(yè)區(qū)塊鏈技術(shù)探索與應(yīng)用考核試卷
- 紅富士蘋(píng)果病蟲(chóng)害防治考核試卷
- 武漢民政職業(yè)學(xué)院《描述統(tǒng)計(jì)學(xué)和概率》2023-2024學(xué)年第一學(xué)期期末試卷
- 石家莊工程職業(yè)學(xué)院《環(huán)境學(xué)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西體育職業(yè)學(xué)院《高級(jí)應(yīng)用氣象統(tǒng)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 醫(yī)療機(jī)構(gòu)從業(yè)人員行為規(guī)范手冊(cè)模板
- 實(shí)驗(yàn)室安全培訓(xùn)課件
- 企業(yè)安全生產(chǎn)與環(huán)境保護(hù)制度
- T-CPMA 034-2023 醫(yī)務(wù)人員醫(yī)院感染預(yù)防與控制
- 2024年北京市東城區(qū)中考一模道德與法治試題
- 肺部感染的護(hù)理課件
- 有余數(shù)的除法算式300題
- 前期物業(yè)服務(wù)前期介入工作方案
- 水泵維保方案
- 2024年醫(yī)藥衛(wèi)生考試-醫(yī)院設(shè)備科筆試歷年真題薈萃含答案
- 園林植物的識(shí)別與應(yīng)用-草本花卉的識(shí)別與應(yīng)用
評(píng)論
0/150
提交評(píng)論