21ic问答首页 - STC15W4K61S4,内部rc串口二异常
STC15W4K61S4,内部rc串口二异常
24kdewhite2020-12-29
使用内部22.1184m rc,产生115200或者9600的波特率,输出都是乱码,
只有换成内部11.0592m rc输出才能正常,是什么原因?
这款单片机内部rc最高27m,串口计算器在22.1184m时115200和9600误差是零,下载校准频率误差不超过0.1%
什么原因可能导致的在非115200波特率时乱码?
初始化如下
void UartInit(void) //115200bps@22.1184MHz
{
P_SW2 &= 0xfe; //选择p10/p11位置为串口2
S2CON = 0x50; //8位数据,可变波特率
AUXR &= 0xFB; //定时器2时钟为Fosc/12,即12T
T2L = 0xFC; //设定定时初值
T2H = 0xFF; //设定定时初值
AUXR |= 0x10; //启动定时器2
IE2 |= 0x01; //使能串口2中断
AUXR |= 0x14; //启动定时器2
}
只有换成内部11.0592m rc输出才能正常,是什么原因?
这款单片机内部rc最高27m,串口计算器在22.1184m时115200和9600误差是零,下载校准频率误差不超过0.1%
什么原因可能导致的在非115200波特率时乱码?
初始化如下
void UartInit(void) //115200bps@22.1184MHz
{
P_SW2 &= 0xfe; //选择p10/p11位置为串口2
S2CON = 0x50; //8位数据,可变波特率
AUXR &= 0xFB; //定时器2时钟为Fosc/12,即12T
T2L = 0xFC; //设定定时初值
T2H = 0xFF; //设定定时初值
AUXR |= 0x10; //启动定时器2
IE2 |= 0x01; //使能串口2中断
AUXR |= 0x14; //启动定时器2
}
赞0
评论
2020-12-30
是中断问题,我没有使用忙标志,导致波特率高了就有问题
赞0
评论
2020-12-31
赞0
评论
2020-12-30
您需要登录后才可以回复 登录 | 注册