完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
5个回答
|
|
|
|
|
|
因为串口系统是以16倍波特率的时钟工作;
小数部分乘16是为了用小数部分参加分频,但浮点数的小数部分是不能直接作为分频因子使用的,所以要乘16; 实际上可以将串口系统看成是以和波特率相同的时钟工作,就可以直接用整数计算了;具体理由请童鞋自己思考 |
|
|
|
楼上正解
|
|
|
|
|
|
|
|
我知道了!
有没有想过为什么会有小数部分,如果直接把fclk拿来进行波特率计算怎么做到小数级别的? 所以我们要预分频16。 换句话说,假设我fclk是48MHz,想要得到24MHz的波特率,那么我应该拿一个计数器,每2下fclk得到一个输出时钟周期,做到2分频。 那如果我想要1.5分频,得到32MHz,显然不能够每记数1.5下fclk得到一个输出时钟周期吧,因此需要一个预分频。 预分频之后,我就能实现从1/16到15/16所有小数的分频。比如说我要做到USARTDIV=1.5,那么就是fclk每记数16*(1.5)=18下得到一个输出时钟周期,我要做到USARTDIV=3.625,那么就是记数16*(3.625)=58下得到一个输出时钟周期。 那么如果想要USARTDIV=1.95怎么办,不好意思做不到,只能往最近的分母为16的分数靠,我们就0.95*16=15.2,向下取整15,得到USARTDIV=1+15/16。这就是为什么小数要乘以16。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览 1 评论
1962 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 22:40 , Processed in 0.655957 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号