在使用中颖 SH79F9476 进行 EUART 串口通讯时,按公式计算并配置了波特率寄存器,可实际通讯数据错乱。仔细检查发现,在计算波特率寄存器值时,将系统时钟频率定义错误,导致波特率偏差大。重新修正时钟频率定义,问题解决。相关计算代码如下:
// 假设正确系统时钟频率为24M
#define F_CPU 24000000UL
#define BAUD 9600
#define MYUBRR F_CPU/16/BAUD - 1
void uart_init(void) {
uint16_t ubrr = MYUBRR;
UBRR0H = (uint8_t)(ubrr >> 8);
UBRR0L = (uint8_t)ubrr;
// 其他串口配置
}
|
|