欢迎来到天天文库
浏览记录
ID:40657993
大小:555.00 KB
页数:6页
时间:2019-08-05
《04-串口编程-yy》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、四、串口编程对于stm32F103,USART1的TX和RX分别是PA9和PA10,若开启了REMAP,则可以映射到PB6和PB7。USART1映射关系如下表USART2和USART3映射关系如下1.重映像只适用于100和144脚的封装USART的GPIO设置如下表最基本的串口编程过程:开启串口时钟,设置IO口模式,串口复位,配置波特率、数据位长度、奇偶校验位,开启发送、接收使能,开启接收中断使能,设置接收中断分组和优先级,编写接收中断函数。STM32F103Rx共有3个串口,其中USART1接APB2,其它2个接APB1。USART1的寄存器地址是:0x40013800-3B
2、FF,USART2的寄存器地址是:0x40004400-47FF,USART3的寄存器地址是:0x40004800-4BFF.每个串口都有自己独立的配置寄存器(SR,DR,BRR,CR1,CR2,CR3,GTPR)配置过程如下:APR2ENR使能寄存器APB2RSTR复位寄存器串口寄存器编程串口时钟使能串口1是在RCC-APB2ENR的第14位,其它串口在APB1ENR串口复位串口1是在RCC-APB2RSTR的第14位,写1复位,写0结束复位串口波特率设置Fck是外设时钟,对于USART1是PCLK2,即APB2上的时钟通过fck和波特率,计算得到USARTDIV并设置到US
3、ART_BRR中,BRR中低4为是小数部分,高12位是整数部分。定义字长USART_CR1的第12位,0:8个数据,1:9个数据定义停止位USART_CR2的第12、13位,00:1个停止位,10:2个停止位接收和发送使能USART_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_NVIC_
4、Init(3,3,USART1_IRQChannel,2)组2,抢占式优先级3,从优先级3(最低)在stm32f10x_nvic.h文件中定义了中断通道名称。接收和发送的数据USART1-DR中是接收的数据和发送的数据。当USART-SR的第8位TC为1时(发送完成),说明数据发送完成。编写串口中断函数voidUSART1_IRQHandler(void)在startup_stm32f10x_md.s有定义中断入口函数定义:USART1_IRQHandlerUSART2_IRQHandlerUSART3_IRQHandlerRXNE:读数据寄存器非空(Readdataregis
5、ternotempty)TC:发送完成(Transmissioncomplete)TXE:发送数据寄存器空(Transmitdataregisterempty)RXNE(读数据寄存器非空),当该位被置1的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时需要尽快去读取USART_DR,通过读USART_DR可以将该位清零,也可以向该位写0,直接清除。TC(发送完成),当该位被置位的时候,表示USART_DR内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读USART_SR,写USART_DR。2)直接向该位写0。串口库函数编程v
6、oidUSART1_Config(void){GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;/*configUSART1clock,串口时钟使能*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1
7、RCC_APB2Periph_GPIOA,ENABLE);USART_DeInit(USART1);//复位串口1/*USART1GPIOconfig串口IO配置*//*ConfigureUSART1Tx(PA.09)asalternatefunc
8、tionpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/*ConfigureUSART1Rx(PA.10)asinputfloating*/GPIO_InitStructure.GPI
此文档下载收益归作者所有