我的上电时钟初始化代码,不知道为什么这样设置波特率115200一直输出不正确。 void OSC_Init(void) { CLKCON &= ~0x40; while(SLEEP&0x40); CLKCON &= ~0x41; } void Usart0_Init(void) { IEN0&=0x7f; PERCFG&=0xfe; P0SEL=0x0c; //P0.2-P0.3为外设,其余为通用io P2DIR&= ~0XC0; U0CSR=0x80; U0UCR=0x00; U0GCR=0x20; U0GCR|=0x0c; //115200 U0BAUD=216; UTX0IF=0; URX0IF=0; URX0IE=1; EA=1; } 请问怎么设置时钟,或者是我串口0初始化设置错了吗?产品cc2511
时间: 2023-08-04 18:02:39 浏览: 123
串行通信中波特率的设置问题
您的串口初始化代码看起来没有问题,但是可能是时钟初始化设置有误导致串口输出不正确。您可以尝试在时钟初始化代码中增加对系统时钟频率的设置,例如:
```
void OSC_Init(void) {
// 设置系统时钟频率为 24MHz
CLKCON = (CLKCON & ~0x07) | 0x00;
// 等待时钟稳定
while(!(CLKCON & 0x40));
// 设置时钟源为内部高速振荡器
CLKCON &= ~0x41;
}
```
另外,您可以检查一下您的调试工具或终端软件是否设置正确了波特率为115200。如果还是无法解决问题,您可以尝试降低波特率,例如9600或19200,看看是否能够正常输出。
阅读全文