- 打卡等级:偶尔看看III
- 打卡总天数:31
- 最近打卡:2026-07-03 08:39:59
已绑定手机
中级会员
- 积分
- 274
|
遇到一个uart2异常问题:12M晶振,波特率115200,
在某个未知情况下,uart2会异常,无法通信,
即使重新初始化串口也不行,必须设备断电重启,
请帮分析下是什么原因。
uart2初始化函数如下:
void vIotUartInit(void)
{
/*********** 波特率固定使用定时器2 *****************/
u16 dat = 65536UL - (MAIN_FOSC / 4) / BAUDRATE;
AUXR &= ~(1 << 4); // Timer stop
AUXR &= ~(1 << 3); // Timer2 set As Timer
AUXR |= (1 << 2); // Timer2 set as 1T mode
T2H = dat / 256;
T2L = dat % 256;
IE2 &= ~(1 << 2); // 禁止中断
AUXR |= (1 << 4); // Timer run enable
S2CON &= ~(1 << 7); // 8位数据, 1位起始位, 1位停止位, 无校验
IE2 |= 1; // 允许中断
S2CON |= (1 << 4); // 允许接收
P_SW2 &= ~0x01;
P_SW2 |= 0; // UART2 switch to: 0: P1.0 P1.1, 1: P4.6 P4.7
/* 管脚P1.0 P1.1 */
P1M1 &= ~(0x03);
P1M0 &= ~(0x03); // 上拉准双向口
}
|
|