IAR里面无法执行到main函数

2019-07-16 08:39发布

本帖最后由 hubeigaokao 于 2015-12-20 22:08 编辑

我是ARM新手,在IAR下开发LPC4300的串口程序,用的都是官方的函数库,在用Jlink调试中一直无法进入main()函数,SystemInit()其实就是一个初始化时钟以及FPU的代码,但程序总是在某行原地打转,如fpu_init()中的Mvfr1 = *regMvfr1; 代码应该没有问题,都是官方函数,可能是硬件有问题吗?    请大侠帮忙看一下,附件是相关代码,非常感谢,在线等!



  1. void fpuInit(void)
  2. {
  3. // from arm trm manual:
  4. //                ; CPACR is located at address 0xE000ED88
  5. //                LDR.W R0, =0xE000ED88
  6. //                ; Read CPACR
  7. //                LDR R1, [R0]
  8. //                ; Set bits 20-23 to enable CP10 and CP11 coprocessors
  9. //                ORR R1, R1, #(0xF << 20)
  10. //                ; Write back the modified value to the CPACR
  11. //                STR R1, [R0]

  12.                
  13.     volatile uint32_t* regCpacr = (uint32_t*) LPC_CPACR;
  14.     volatile uint32_t* regMvfr0 = (uint32_t*) SCB_MVFR0;
  15.     volatile uint32_t* regMvfr1 = (uint32_t*) SCB_MVFR1;
  16.     volatile uint32_t Cpacr;
  17.     volatile uint32_t Mvfr0;
  18.     volatile uint32_t Mvfr1;   
  19.     char vfpPresent = 0;

  20.     Mvfr0 = *regMvfr0;
  21.     Mvfr1 = *regMvfr1;

  22.     vfpPresent = ((SCB_MVFR0_RESET == Mvfr0) && (SCB_MVFR1_RESET == Mvfr1));
  23.    
  24.     if(vfpPresent)
  25.     {
  26.         Cpacr = *regCpacr;
  27.         Cpacr |= (0xF << 20);
  28.         *regCpacr = Cpacr;   // enable CP10 and CP11 for full access
  29.     }

  30. }
复制代码


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 分 系统初始化函数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。