打印
[STM8]

STM8串口波特率57600时,晶振用多大,老是有误差,要误差为0

[复制链接]
5157|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
car_software|  楼主 | 2012-8-28 12:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8串口波特率57600时,晶振用多大,老是有误差,要误差为0才行。
沙发
figo20042005| | 2012-8-28 13:07 | 只看该作者
误差为0啊,感觉好高

使用特权

评论回复
板凳
捡漏王子| | 2012-8-28 13:33 | 只看该作者
波特率肯定有误差,只要能承受就行
晶振用多大关系不怎么大,看你使用的总线频率

使用特权

评论回复
地板
car_software|  楼主 | 2012-8-28 14:15 | 只看该作者
注:我用的是8M晶振,当串口波特率为9600或38400,通信正常, 为57600发送数据出错,
regsist设置如下:

void Uart1_Init(void)
{
// 8M/9600  = 833.33 =0x0341    // BAUD_RATE_9600
// 8M/38400 = 208.33 =0x00D0    // BAUD_RATE_38400
// 8M/57600 = 138.88 =0x008A    // BAUD_RATE_57600   //138(0x008A)或139(0x008B),发送数据会出错,2012-8-28 11:06:49
// USART_BRR1:  11~4   USART_BRR2: 15~12 3~0

#ifdef UART1_BAUD_RATE_9600        
        USART_BRR1=0x34;
        USART_BRR2=0x01;
#elif defined UART1_BAUD_RATE_38400        
        USART_BRR1=0x0D;
        USART_BRR2=0x00;
#elif defined UART1_BAUD_RATE_57600        
        USART_BRR1=0x08;
        USART_BRR2=0x0A;
#endif
               
        USART_CR2=b0010_1100;   // bit5->1 Enable RX interrupt    bit3->1 Enable TX     bit2->1 Enable RX  Spec/Page305
}

补充:其它没有设置的regsist,均为上电默认值;

使用特权

评论回复
5
不知道取啥名| | 2020-12-30 22:20 | 只看该作者

使用特权

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

本版积分规则

2

主题

44

帖子

0

粉丝