stm32串口1和其他串口区别

最近做项目需要用到stm32f103系列芯片的多个串口,老项目程序中只有个串口1配置,拿来用的时候模仿串口1配置了串口2,就改了相应的IO口,使能了不同的时钟寄存器,但是在测试过程中发现串口2发送的数据总是不正确,最后找到问题原因了:两串口使用的时钟不同!

在stm32中文参考手册中有这么一句:

只有USART1使用PCLK2(最高72MHz)。其它USART使用PCLK1(最高36MHz)。

所以我这边的问题解决方法就是把计算波特率的函数中原来写着72的参数改成了36,问题就迎刃而解了。

对于用寄存器方式来写程序的人来说,使能串口1用RCC->APB2ENR|=1<<14;使能串口2用RCC->APB1ENR|=1<<17;              

对于用库函数方式来写程序的人来说,使能串口1用RCC_APB2PeriphClockCmd,使能串口2用RCC_APB1PeriphClockCmd。

看出差别了吧,两者用的时钟都不一样,所以在计算波特率的时候注意一下,其他串口都类似串口2,只有串口1比较特殊,所用时钟为PCLK2。

但是在stm32f4系列里面,串口1和串口6是用的PCLK2,其他串口用的PCLK1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值