华大MCU填坑之USART
先吐槽下,华大的函数库都是坑,而且很浪费CPU资源,在此建议有能力、有时间的一定要去学习他的寄存器操作,一是防坑,二可以提高个人能力,毕竟这是基础的东西(俗话说:基础不牢,地动山摇)。进入主题,这个说是串口BUG,实际是系统时钟问题。本人使用外部8M晶振,按照官方例程,将串口配置完成后,测试。设置波特率为9600,实际使用波特率只有2400。使用仿真查看系统时钟频率,这点华大的库提供了一个比较便利的函数 Clk_GetHClkFreq()
仿真发现,程序运行到u32Val = CLK_XTH_VAL;时,Val值为32000000,GO TO一下
发现外部高速时钟频率默认值是32000000。我的天呐,以后换个外部高速晶振都得来改下这个值。。。惊掉下巴!!! 在使用华大MCU的串口时还要注意波特率与系统主频的匹配,在他们的用户手册里有“Mode1/Mode3波特率设置示例”需要跑更高的波特率时,主频速率也要跟上。 这里备注个“双波特率”,根据华大提供的公式理解,就是将(主频*2),具体功能未查到,也未细研究,如有知道的大佬欢迎留言解惑。 本帖最后由 azrm 于 2022-1-27 00:09 编辑
没遇到过,我直接使用的官方例子里面的,时钟频率和窗串口都是正常的,串口分频设置为16,就可以满足9600到115200之前的波特率了。我用的f460,没遇到过你说的情况,f005我也用过,用的外部8m晶振,9600波特率,暂时还没啥问题。 哦,对了,我用的是f460,可能和你使用的型号不一样 没遇到过,我直接使用的官方例子里面的,时钟频率和窗串口都是正常的,串口分频设置为16,就可以满足9600到115200之前的波特率了。我用的f460,没遇到过你说的情况,f005我也用过,用的外部8m晶振,9600波特率,暂时还没啥问题。 因为STK板用的是32M的外部晶振。
楼主有没有更好的办法让程序知道外部晶振的频率??? 这本不叫坑,只是需要手工改宏定义而已,从另一方面来说,楼主没有很好的熟悉华大的例程而已 还以为真的是什么大坑了 如果真是这样的话 很难找问题
这样也能提高调试水平
看来无论什么都要持怀疑态度啊
虽然能提高能力 但是真的不好找原因
对官方数据也要怀疑了
那还是自己从头写代码比较好
串口有什么bug 现在都是库函数配置了。
页:
[1]
2