在某采用小端存储的S3C2440系统中,处理器外设时钟PCLK=66.68MH。现需使用其UART1接口实现串行通信,要求帧格式为:8位数据位,2位停止位,偶校验。试编写关键的初始化程序语句。
时间: 2024-02-25 09:54:29 浏览: 457
在S3C2440系统中,UART1接口的初始化程序语句如下:
```c
#define PCLK 66680000 // 处理器时钟频率为66.68MHz
#define UART1 0x50000000 // UART1接口的基地址
// 波特率设置,假设为9600
#define UART_BAUDRATE 9600
#define UART_BRD ((PCLK/16/UART_BAUDRATE)-1)
// 初始化UART1接口
void uart1_init() {
// 1. 设置时钟分频器
*((volatile unsigned long *)(UART1 + 0x04)) = (unsigned long)(UART_BRD);
// 2. 设置线控寄存器
*((volatile unsigned long *)(UART1 + 0x0C)) = (unsigned long)(0x3); // 8位数据位,偶校验
*((volatile unsigned long *)(UART1 + 0x04)) &= ~(0x1 << 2); // 2位停止位
// 3. 使能UART1接口
*((volatile unsigned long *)(UART1 + 0x00)) = (unsigned long)(0x3); // 使能UART1接口
}
```
注:以上代码假设系统时钟频率为66.68MHz,波特率为9600,帧格式为8位数据位,2位停止位,偶校验。代码中使用了S3C2440的寄存器映射机制,直接访问寄存器的地址来进行初始化。同时,在小端存储的系统中,需要注意字节序的问题。
阅读全文