共2条
1/1 1 跳转至页
LPC2132,LPC2100 急救:谁有LPC2132启动源代码发给我一份,用LPC2100模板不能中断
问
谁有LPC2132的启动源代码发给我一份,我急着用,先谢谢!
另外有几个问题想请教大家:
1、我现用LPC2132开发产品,开始时我采用原使用的LPC2104启动代码(vectors.s+init.s+target.c)进行开发,用有RAM中进行JTAG调试,没有任何问题,但ISP烧到LPC2132后,程序根本就启动不起来,不知道是什么问题引起的?因为原来用LPC2104时ISP是没有任何问题的。
2、后来我改周工的LPC2100专用模板来做启动引导,ISP下去,程序可以起来,但串口波特率不对,后我将target.c中的
void TargetResetInit(void)
{
/*
#ifdef __DEBUG_RAM
MEMMAP = 0x2; //remap
#endif
#ifdef __DEBUG_FLASH
MEMMAP = 0x1; //remap
#endif
#ifdef __IN_CHIP
MEMMAP = 0x1; //remap
#endif
*/
/* 设置系统各部分时钟 */
/* Set system timers for each component */
/* PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0);
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
*/
注释掉以后,串口波特率就正确了,但就是产生不了串口中断。
3、不能中断后,我将Startup.s中的
MSR CPSR_c, #0xdf
LDR SP, StackUsr
改成:
MSR CPSR_c, #0x5f
LDR SP, StackUsr
在RAM中进行JTAG调试可以中断,但ISP下载后程序又不能运行,弄得我现在真的没办法。
程序都调好了,产品又等着出,就是程序启动不起来,请大家尽快帮帮忙。
希望谁有LPC2132的启动源代码发给我一份,我急着用,先谢谢!
E-MAIL:sunlong05@163.com 答 1: re:1. TargetResetInit函数中的代码不要注释,而是在用户程序计算波特率时使用Fpclk来算,举例如下:
#define UART_BPS 115200 /* 定义通讯波特率 */
/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART0_Ini(void)
{ uint16 Fdiv;
U0LCR = 0x83; // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03;
}
2. 调试工程时,直接使用DebugInFLASH调试目标,使用EasyJTAG调试。这样,调试时代码即烧写到片内FLASH中,调试完成后即可脱机运行。
EasyJTAG驱动: http://www.zlgmcu.com/download/downs.asp?ID=1430
答 2: 我怎么用DebugInFLASH出现写FLASH错误?我用DebugInFLASH调试LOAD到AXD时,下面就会出现写FLASH错误,不知道是哪里配置问题? 答 3: re先要擦除flash
另外有几个问题想请教大家:
1、我现用LPC2132开发产品,开始时我采用原使用的LPC2104启动代码(vectors.s+init.s+target.c)进行开发,用有RAM中进行JTAG调试,没有任何问题,但ISP烧到LPC2132后,程序根本就启动不起来,不知道是什么问题引起的?因为原来用LPC2104时ISP是没有任何问题的。
2、后来我改周工的LPC2100专用模板来做启动引导,ISP下去,程序可以起来,但串口波特率不对,后我将target.c中的
void TargetResetInit(void)
{
/*
#ifdef __DEBUG_RAM
MEMMAP = 0x2; //remap
#endif
#ifdef __DEBUG_FLASH
MEMMAP = 0x1; //remap
#endif
#ifdef __IN_CHIP
MEMMAP = 0x1; //remap
#endif
*/
/* 设置系统各部分时钟 */
/* Set system timers for each component */
/* PLLCON = 1;
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0);
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
*/
注释掉以后,串口波特率就正确了,但就是产生不了串口中断。
3、不能中断后,我将Startup.s中的
MSR CPSR_c, #0xdf
LDR SP, StackUsr
改成:
MSR CPSR_c, #0x5f
LDR SP, StackUsr
在RAM中进行JTAG调试可以中断,但ISP下载后程序又不能运行,弄得我现在真的没办法。
程序都调好了,产品又等着出,就是程序启动不起来,请大家尽快帮帮忙。
希望谁有LPC2132的启动源代码发给我一份,我急着用,先谢谢!
E-MAIL:sunlong05@163.com 答 1: re:1. TargetResetInit函数中的代码不要注释,而是在用户程序计算波特率时使用Fpclk来算,举例如下:
#define UART_BPS 115200 /* 定义通讯波特率 */
/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART0_Ini(void)
{ uint16 Fdiv;
U0LCR = 0x83; // DLAB = 1,可设置波特率
Fdiv = (Fpclk / 16) / UART_BPS; // 设置波特率
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03;
}
2. 调试工程时,直接使用DebugInFLASH调试目标,使用EasyJTAG调试。这样,调试时代码即烧写到片内FLASH中,调试完成后即可脱机运行。
EasyJTAG驱动: http://www.zlgmcu.com/download/downs.asp?ID=1430
答 2: 我怎么用DebugInFLASH出现写FLASH错误?我用DebugInFLASH调试LOAD到AXD时,下面就会出现写FLASH错误,不知道是哪里配置问题? 答 3: re先要擦除flash
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |