[STM32L4] 关于STM32L476的UART寄存器操作

[复制链接]
1960|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

粉丝
快速回复 在线客服 返回列表 返回顶部