打印
[STM32L4]

关于STM32L476的UART寄存器操作

[复制链接]
1680|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laoxianccc|  楼主 | 2016-4-18 21:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近刚刚使用STM32L476,在使用寄存器操作串口时遇到一堆问题,最终予以解决。
问题点一:端口配置:
STM32L476的端口配置需要注意复位是的模式为模拟采样模式,为了不影响别的端口的使用,我们首先需要进行相对应的端口模式清零,即GPIOB->MODER &= 0xFFF0FFFF;之后再配置需要的模式即复用模式,
即GPIOB->MODER |= 0x000A0000。对于端口速度和输出模式采用类似的方法。在这之前使用RCC中的寄存器使能相应端口晶振以及USART3的晶振,然后记住在使能UART之前要把相应的uart配置事先配置好。之后在     GPIOB->AF[1]配置为相应的功能,可以根据DATASHEET查找。
问题点二:相关的UART3的中断的开关
因为没有全局中断这个概念,都是单独操作的,具体内容在cortex-M4资料里有,相应的开中断函数以及优先级则在cortex-m4内核代码里,如开中断要调用内核代码:NVIC_EnableIRQ(USART3_IRQn).不进行这步操作不会进入相应的中断的。
问题三:进了中断之后一直不出中断。
这个问题是由于没有在读数据之前(或之后)清除以下标志位.
在中断中要用USART3->RQR |= 0x00000008;//清除RXNE标志和USART3->ICR |= 0x00000008;//清除ORE标志。
我做的这个只是接收中断的,发送的和这个类似操作即可。
沙发
laoxianccc|  楼主 | 2016-4-18 21:44 | 只看该作者
以上是基于寄存器操作的,基于库的看起来费劲就不想看了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

107

帖子

1

粉丝