本帖最后由 hubeigaokao 于 2015-12-20 22:08 编辑
我是ARM新手,在IAR下开发LPC4300的串口程序,用的都是官方的函数库,在用Jlink调试中一直无法进入main()函数,SystemInit()其实就是一个初始化时钟以及FPU的代码,但程序总是在某行原地打转,如fpu_init()中的Mvfr1 = *regMvfr1; 代码应该没有问题,都是官方函数,可能是硬件有问题吗? 请大侠帮忙看一下,附件是相关代码,非常感谢,在线等!
- void fpuInit(void)
- {
- // from arm trm manual:
- // ; CPACR is located at address 0xE000ED88
- // LDR.W R0, =0xE000ED88
- // ; Read CPACR
- // LDR R1, [R0]
- // ; Set bits 20-23 to enable CP10 and CP11 coprocessors
- // ORR R1, R1, #(0xF << 20)
- // ; Write back the modified value to the CPACR
- // STR R1, [R0]
-
- volatile uint32_t* regCpacr = (uint32_t*) LPC_CPACR;
- volatile uint32_t* regMvfr0 = (uint32_t*) SCB_MVFR0;
- volatile uint32_t* regMvfr1 = (uint32_t*) SCB_MVFR1;
- volatile uint32_t Cpacr;
- volatile uint32_t Mvfr0;
- volatile uint32_t Mvfr1;
- char vfpPresent = 0;
- Mvfr0 = *regMvfr0;
- Mvfr1 = *regMvfr1;
- vfpPresent = ((SCB_MVFR0_RESET == Mvfr0) && (SCB_MVFR1_RESET == Mvfr1));
-
- if(vfpPresent)
- {
- Cpacr = *regCpacr;
- Cpacr |= (0xF << 20);
- *regCpacr = Cpacr; // enable CP10 and CP11 for full access
- }
- }
复制代码
-
-
fpu_init.c
下载积分: 积分 -1 分
3.61 KB, 下载次数: 7, 下载积分: 积分 -1 分
fpu初始函数
-
-
iar_startup_lpc18xx43xx.s
下载积分: 积分 -1 分
9.25 KB, 下载次数: 10, 下载积分: 积分 -1 分
LPC启动代码
-
-
sysinit.c
下载积分: 积分 -1 分
3.21 KB, 下载次数: 6, 下载积分: 积分 -1 分
系统初始化函数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>