[综合信息] 华大MCU填坑之USART

[复制链接]
 楼主| 狗啃模拟 发表于 2022-1-26 22:54 | 显示全部楼层 |阅读模式
先吐槽下,华大的函数库都是坑,而且很浪费CPU资源,在此建议有能力、有时间的一定要去学习他的寄存器操作,一是防坑,二可以提高个人能力,毕竟这是基础的东西(俗话说:基础不牢,地动山摇)。

进入主题,这个说是串口BUG,实际是系统时钟问题。本人使用外部8M晶振,按照官方例程,将串口配置完成后,测试。设置波特率为9600,实际使用波特率只有2400。使用仿真查看系统时钟频率,这点华大的库提供了一个比较便利的函数 Clk_GetHClkFreq()

 楼主| 狗啃模拟 发表于 2022-1-26 23:10 | 显示全部楼层
 楼主| 狗啃模拟 发表于 2022-1-26 23:13 | 显示全部楼层
仿真发现,程序运行到u32Val = CLK_XTH_VAL;时,Val值为32000000,GO TO一下
9968861f164f9ac9e2.png
 楼主| 狗啃模拟 发表于 2022-1-26 23:13 | 显示全部楼层
发现外部高速时钟频率默认值是32000000。我的天呐,以后换个外部高速晶振都得来改下这个值。。。惊掉下巴!!!

评论

@eelux :说的很有道理  发表于 2022-1-27 16:32
你有没有更好的方法可以让软件自动知道外部晶体的值?  发表于 2022-1-27 09:58
 楼主| 狗啃模拟 发表于 2022-1-26 23:14 | 显示全部楼层
  在使用华大MCU的串口时还要注意波特率与系统主频的匹配,在他们的用户手册里有“Mode1/Mode3波特率设置示例”需要跑更高的波特率时,主频速率也要跟上。
 楼主| 狗啃模拟 发表于 2022-1-26 23:17 | 显示全部楼层
这里备注个“双波特率”,根据华大提供的公式理解,就是将(主频*2),具体功能未查到,也未细研究,如有知道的大佬欢迎留言解惑。
azrm 发表于 2022-1-26 23:52 来自手机 | 显示全部楼层
本帖最后由 azrm 于 2022-1-27 00:09 编辑

没遇到过,我直接使用的官方例子里面的,时钟频率和窗串口都是正常的,串口分频设置为16,就可以满足9600到115200之前的波特率了。我用的f460,没遇到过你说的情况,f005我也用过,用的外部8m晶振,9600波特率,暂时还没啥问题。
azrm 发表于 2022-1-27 00:02 来自手机 | 显示全部楼层
哦,对了,我用的是f460,可能和你使用的型号不一样
azrm 发表于 2022-1-27 00:11 来自手机 | 显示全部楼层
没遇到过,我直接使用的官方例子里面的,时钟频率和窗串口都是正常的,串口分频设置为16,就可以满足9600到115200之前的波特率了。我用的f460,没遇到过你说的情况,f005我也用过,用的外部8m晶振,9600波特率,暂时还没啥问题。
martinhu 发表于 2022-1-27 14:32 | 显示全部楼层
因为STK板用的是32M的外部晶振。
楼主有没有更好的办法让程序知道外部晶振的频率???
wubangmi 发表于 2022-1-27 16:34 | 显示全部楼层
这本不叫坑,只是需要手工改宏定义而已,从另一方面来说,楼主没有很好的熟悉华大的例程而已
七毛钱 发表于 2022-2-6 21:05 来自手机 | 显示全部楼层
还以为真的是什么大坑了
tfqi 发表于 2022-2-7 10:29 | 显示全部楼层
如果真是这样的话 很难找问题
tfqi 发表于 2022-2-7 10:30 | 显示全部楼层
这样也能提高调试水平
nawu 发表于 2022-2-7 10:51 | 显示全部楼层
看来无论什么都要持怀疑态度啊
aoyi 发表于 2022-2-7 11:33 | 显示全部楼层
虽然能提高能力 但是真的不好找原因
zljiu 发表于 2022-2-7 11:52 | 显示全部楼层
对官方数据也要怀疑了
gwsan 发表于 2022-2-7 12:30 | 显示全部楼层
那还是自己从头写代码比较好
dzfansman 发表于 2022-2-13 14:13 | 显示全部楼层
串口有什么bug  
modesty3jonah 发表于 2022-2-13 16:43 | 显示全部楼层
现在都是库函数配置了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

877

帖子

2

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