打印
[STM8]

STM8S103 UART波特率的奇怪问题

[复制链接]
4663|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eric_123|  楼主 | 2009-10-23 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按手册上的波特率设定,fmaster=10Mhz。
BRR1为41h,BRR2为02h,9600bps 示波器测得的位宽为106us;
BRR1为04h,BRR2为17h,2400bps的确是6.4us!!!!
看编译后的汇编确实是写入BRR1,BRR2内了。
另我用9600bps时,接收中断正常,发送中断老是会丢失最后2个字节,弄的我本来是10个字节的数据帧,需要发送12个字节。
折腾了一天,没弄明白。
沙发
汉之云| | 2009-10-26 10:13 | 只看该作者
fmaster=10Mhz, 你用的外钟是多少?时钟控制是如何设置的?

使用特权

评论回复
板凳
eric_123|  楼主 | 2009-10-26 11:40 | 只看该作者
外部时钟10MHz;
        CLK->ECKR|=0x01;                //开启外部时钟
        while(!(CLK->ECKR&0x02));        //等待外部时钟就绪
        CLK->CKDIVR&=0XF8;                //CPU无分频
        CLK->SWR=0XB4;                                //选择HSE为主时钟
        while(!(CLK->SWCR&0X08));                //等待时钟源就绪
        CLK->SWCR|=0X02;                        //使能时钟切换的执行

使用特权

评论回复
地板
l217914| | 2014-5-22 09:08 | 只看该作者
eric_123 发表于 2009-10-26 11:40
外部时钟10MHz;
        CLK->ECKR|=0x01;                //开启外部时钟
        while(!(CLK->ECKR&0x02));        //等待外部时钟就绪

你好,请问你最后问题解决了吗?

使用特权

评论回复
5
autooy| | 2014-5-22 10:15 | 只看该作者
10M的晶振,其9600的波特率,应该设置为:10 00 0000/9600=0X0411,不是02,是01;发送中断丢失最后2个,你考虑是不是需要发送之后延时一下,或者检测TC标志之后继续发送。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

1

粉丝