串口编程知识点梳理汇总.docx

上传人:lao****ou 文档编号:603040 上传时间:2024-02-28 格式:DOCX 页数:6 大小:39.73KB
下载 相关 举报
串口编程知识点梳理汇总.docx_第1页
第1页 / 共6页
串口编程知识点梳理汇总.docx_第2页
第2页 / 共6页
串口编程知识点梳理汇总.docx_第3页
第3页 / 共6页
串口编程知识点梳理汇总.docx_第4页
第4页 / 共6页
串口编程知识点梳理汇总.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《串口编程知识点梳理汇总.docx》由会员分享,可在线阅读,更多相关《串口编程知识点梳理汇总.docx(6页珍藏版)》请在第一文库网上搜索。

1、四、串口编程对于stm32F103,USART1的TX和RX分别是PA9和PA1O,若开启了REMAP,则可以映射至IJPB6和PB7oUSART1映射关系如下表表47USART1重映像复用功能USART1_REMAP=0USART1_REMAP1USART1JXPA9PB6USART1_RXPA10PB7USART2和USART3映射关系如下表46USART2重映像复用功能USART2_REMAP:0USART2_REMAP门USART2_CTSPAOPD3USART2_RTSPA1PD4USART2_TXPA2PD5USART2_RXPA3PD6USART2_CKPA4PD71.重映像只适

2、用于100和144脚的封4表45USART3市:映像复用功能USART3_REMAP1:0=00(没有重映像)USART3_REMAP1:0=01(部分重映像)USART3_REMAP1:0=11(完全重映像)USART3_TXPB10PC10PD8USART3_RXPB11PC11PD9USART3_CKPB12PC12PD10USART3_CTSPB13PD11USART3_RTSPB14PD121.重映像只适用64、100和144脚的封装2.重映像只适用于100和144脚的封装USART的GPIO设置如下表USART引脚配置GP1。配置USARTX_TX全双工模式推挽复用输出半双工同步模

3、式推挽复用输出USARTX_RX全双工模式浮空输入或带上拉输入华双工同步模式未用,可作为通用I/OUSARTx_CK同步模式推挽复用输出USARTX_RTS硬件流量控制推挽复用输出USARTx_CTS硬件流后控制浮空输入或带上拉输入最基本的串口编程过程:开启串口时钟,设置IO口模式,串口复位,配置波特率、数据位长度、奇偶校验位,开启发送、接收使能,开启接收中断使能,设置接收中断分组和优先级,编写接收中断函数。STM32F103Rx共有3个串口,其中USART1接APB2,其它2个接APB1。USART1的寄存器地址是:0x40013800-3BFF,USART2的寄存器地址是:0x400044

4、00-47FF,USART3的寄存器地址是:0x40004800-4BFF.每个串口都有自己独立的配置寄存器(SR,DR,BRR,CR1,CR2,CR3,GTPR)Tab1e704.USART寄存器寄存器描述SRUSART状态寄存器DRUSART数据寄存:器BRRUSART波特率寄存器CR1USART控制寄存器1CR2USART控制寄存器2CR3USART控制寄存器3GTPRUSART保护时间和预分频寄存器配置过程如下:31302928272625242322212019181716保留1514131211109876543210ADC3ENUSART1ENTIM8ENSPI1ENTIM1EN

5、ADC2ENADC1ENIOPGENIOPFENIOPEENIOPDENIOPCENIOPBENIOPAEN保留AFIOENrwrwrwrwrwrwrwrwrwrwAPR2ENR使能寄存器rwrwrwrwrw31302928272625242322212019181716保留151413121110986543210ADC3RSTSARTRSTTIMSRSTSPI1RSTTIU1RSTADC2RSTADC1RSTIOPGRSTIOPFRSTIOPERSTIOPDRSTIOPCRSTIOPBRSTIOPARST保留AFIORSTrwrwWrwrwrwrwrwrwrwrwTWrwrwresrwAP

6、B2RSTR复位寄存器串口寄存器编程串口时钟使能串口1是在RCCAPB2ENR的第14位,其它串口在APB1ENR串口复位串口1是在RCC-APB2RSTR的笫14位,写1复位,写0结束复位串口波特率设置Tx/&波特率二4(6*USARTDIV)Fck是夕卜设时钟,对于USART1是PC1K2,即APB2上的时钟通过fck和波特率,t算得至IJUsartdiv并设置至jusart_brr中,BRR中低4为是小数部分,高12位是整数部分。定义字长USART_CR1的第12位,0:8个数据,1:9个数据定义停止位USART_CR2的第12、13位,00:1个停止位,10:2个停止位接收和发送使能U

7、SART_CR1的第2、3位(RE、TE)串口中断使能USART_CR1的第5位:RXNEIE接收缓冲区非空使能,即USART_SR中ORE或RXNE为1时USART-CR1的第8位:PE中断使能,即USART-SR中PE为1时(为什么要设置校验错误使能中断)串口使能USART_CR1的第13位UE,置1,串口模块使能设置串口中断,组,优先级MY_NVICnit(3,3,USART1IRQChanneIZ组2,从优先级3(最低)抢占式优先级3,在Stm32f10x_nvic.h文件中定义了中断通道名称。接收和发送的数据USART1-DR中是接收的数据和发送的数据。当USART-SR的第8位TC

8、为1时(发送完成),说明数据发送完成。编写串口中断函数voidUSART1IRQHandIer(VOid)在StartUp_stm32f10x_md.s有定义中断入口函数定义:USARTIJRQHandIerSART2JRQHand1erUSARTSJRQHandIer25.6.1状态寄存器(USART_SR)地址偏移:OxOO复位值:OxOOCO31302928272625242322212019181716保留1514131211109876543210保留CTS1BDTXETCRXNEID1EORENEFEPErcWOrcwrrcwrcwrrrrrRXNE:读数据寄存器非空(Readda

9、taregisternotempty)TC:发送完成(Transmissioncomp1ete)TXE:发送数据寄存器空(TranSmitdataregiSteremPty)RXNE(读数据寄存器非空),当该位被置1的时候,就是提示己经有数据被接收到了,并且可以读出来了。这时需要尽快去读取USAR1DR,通过读USART_DR可以将该位清零,也可以向该位写0,直接清除。TC(发送完成),当该位被置位的时候,表示USART_DR内的数据己经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读USART_SR,写USART_DR。2)直接向该位写0。串口库函数编程voi

10、dUSART1_Config(void)(GP1O-InitTypeDefGPIOJnitStructure;USARTJnitTypeDefUSARTJnitStructure;*configSART1c1ock,串口时钟使能7RCC_APB2PeriphC1ockCmd(RCC_APB2Periph_USART1RCC_APB2Periph_GPI0A,ENAB1E);USART-DeInit(USART1);复位串口1*SART1GPIOconfig串口IO配置7ConfigureUSART1Tx(PA.09)asa1ternatefunctionpush-pu11T1rinjiriiu

11、ctiiriJXrMIhi1IrJJiGPIO1nitStructure.GPIOMode=GPIOModeAFPP;GPIO_1nitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIOJnit(GPIOA,&GPIO_1nitStructure);*ConfigureUSART1Rx(PA.10)asinputf1oating*/GP1OnitStructure.GPIOPin=GPI0Pin10;GP1OnitStructure.GP1C1MOde=GPIOModeINF1OATING;GPIOJnit(GPIOA,&GPQnitStructure);*S

12、ART1modeconfig串口模式配置7USART_1nitStructure.USART_BaudRate=115200;USART_1nitStructure.USART_Word1ength=USART_Word1ength_8b;USART_1nitStructure.USART_StopBits=USART_StopBits_1;UsARTJnitStructure.USART-Parity=USART_Parity_No;USART_1nitStructure.UsARTeHardwareF1owControI=USART_HardwareF1owContro1_None;USA

13、RT_1nitStructure.USART_Mode=USART_Mode_RxUSART_Mode_Tx;SARTJnit(SART1,&USART_1nitStructure);USART_Cmd(USART1,ENAB1E);USART_ITConfig(USART1,USART_IT_RXNE,ENAB1E);开启读数据寄存器非空中断Tab1e722.USARTIT值USARTIT描述USART_IT_PE奇偶错误中断USART_IT_TXE发送中断USART_IT_TC传输完成中断USART_IT_RXNE接收中断USART_IT_ID1E空闲总线中断USART_IT_1BD11N中断检测中断USART_IT_CTSCTS中断USART_IT_ERR错误中断voidUSART.SendData(USARTJTypeDef*USARTx,uint16JData);发送数据到串口。uint16JUSART.ReceiveData(USARTJryPeDef*USARTx);接收串口数据4个状态标志函数 FIagStatusUSART_GetF1agStatus(USART_TypeDef*USARTx,ui

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服