概述
- USART1挂载APB2上面,而USART2和USART3挂载在APB1上面(就这里没看,搞了大半天才发现挂载总线错了)
- 两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。
上图引用 点击打开链接
我们平时说的波特率9600.其实就是9600bit/s=(9600/8)Byte/s=1.2Byte/ms,这里1word=2Byte=16bit。
我们在串口接收中断函数中,调用USART_ReceiveData()函数。
uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{
/* Check the parameters */
assert_param(IS_USART_ALL_PERIPH(USARTx));
/* Receive Data */
return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
}
STM32中DR寄存器只有低9位(8:0)有效,其余高位是保留的。所以在进行寄存器赋值时,为了保证正确性和将来的兼容性,只取Data的低9位数据。所以出现了USARTx->DR = (Data & (uint16_t)0x01FF);这样的语句,假设不小心Data高位有值也能保证寄存器正确赋值。
下面是实际项目中,判断串口接收数据是否完成的一个流程描述。
最后
以上就是喜悦羊为你收集整理的STM32串口接收数据接收是否超时,如何保证接收完成的全部内容,希望文章能够帮你解决STM32串口接收数据接收是否超时,如何保证接收完成所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复