调试日记:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1.KEIL中选择编译器, KEIL目录下的BLINKY的EXAMPLE,重新安装MDK后STARTUP.S 文件不能编译,并且TARGET设置也不一样.经过比较,发现在这里可以改变.
右键点TARGET,选MANAGE COMPONENTS
可以看到,ARM TOOL下有三个编译工具可选择.MDK是REALVIEW, KEIL目录下DEFAULT是用CARM, 另外还有一个是GUN.
2.关于LPC2103的改变系统时钟频率后,串口不能正常输出的问题.
在调试LPC2103的项目时,原来用11059200, 缺省的STARTUP.S设置PLL
PLL_SETUP EQU 1
PLLCFG_Val EQU 0x00000023
也就是4倍频, 后改为5倍频,
PLLCFG_Val EQU 0x00000024
发现串口不能正常打印输出.
经过调试,需要做以下修改.
1) 定义下面的常量
/* System configuration .Fosc、Fcclk、Fcco、Fpclk must be defined */
/* 系统设置, Fosc、Fcclk、Fcco、Fpclk必须定义*/
#define Fosc 11059200 //Crystal frequence,10MHz~25MHz,should be the same as actual status.
//应当与实际一至晶振频率,10MHz~25MHz,应当与实际一至
#define Fcclk (Fosc * 5) //System frequence,should be (1~32)multiples of Fosc,and should be equal or less than 60MHz.
//系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ
#define Fcco (Fcclk * 4) //CCO frequence,should be 2、4、8、16 multiples of Fcclk, ranged from 156MHz to 320MHz.
//CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz
#define Fpclk ((Fcclk / 4) * 4) //VPB clock frequence , must be 1、2、4 multiples of (Fcclk / 4).
//VPB时钟频率,只能为(Fcclk / 4)的1、2、4倍
2) 初始化UART
void Init_Uart0(uint32 bps)
{
//
// Initialize UART 1 function
//
uint16 Fdiv;
//PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x05; /* Select the pins for Uart 选择管脚为UART0 */
U0LCR = 0x83; /* Enable to access the frequenc regecter 允许访问分频因子寄存器 */
Fdiv = (Fpclk / 16) / bps; /* Set the baudrate设置波特率 */
率 */
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03; /* Disable to access the frequenc regecter 禁止访问分频因子寄存器 */
/* set to 8,1,n 且设置为8,1,n */
//U0IER = 0x00; /* Disable interrupt禁止中断 */
//U0FCR = 0x07; /* initial FIFO 初始化FIFO */
}
3) 设定VPBDIV的值
在STARTUP.S文件中需要改变VPBDIV的值.
VPBDIV_SETUP EQU 1
VPBDIV_Val EQU 0x00000001
VPBDIV
00, Fpclk = ((Fcclk / 4) * 1)
01, Fpclk = ((Fcclk / 4) * 4)
02, Fpclk = ((Fcclk / 4) * 2)
3.以前用EASYJTAG调试的程序发现串口不能正常工作,用示波器观察发现TXD1 PIN上并没有输出. 后来发现, 在AXD中当前的processor是LPC2104,但实际的开发板上是LPC2210
修改后正常.
文章评论(0条评论)
登录后参与讨论