裸机教程很好,串口部分老是有乱码出现,终于发现是UART0的PCLK未打开,像这样初始化的时候打开PCLK就可以了:
#define PCLK_GATE (*((volatile unsigned long *)0x7E00F034))
void init_uart(void)
{
PCLK_GATE|= 1 << 1;//UART0选通PCLK时钟,66.5mhz
/* 1. 配置引脚 */
GPACON &= ~0xff;
GPACON |= 0x22;
/* 2. 设置数据格式等 */
ULCON0 = 0x3; // 数据位:8, 无校验, 停止位: 1, 8n1
UCON0 = 0x5; // 时钟:PCLK,禁止中断,使能UART发送、接收
UFCON0 = 0x01; // FIFO ENABLE
UMCON0 = 0; // 无流控
/* 3. 设置波特率 */
// DIV_VAL = (PCLK / (bps x 16 ) ) - 1 = (66500000/(115200x16))-1 = 35.08
// DIV_VAL = 35.08 = UBRDIVn + (num of 1’s in UDIVSLOTn)/16
UBRDIV0 = 35;
UDIVSLOT0 = 0x1;
}