庆科的库不能在0x800 0000处编译吗?
时间:10-02
整理:3721RD
点击:
现在自己编写的程序,不想使用庆科的BOOTLAOD,所以直接将程序从0x800 0000开始执行。
然而使用庆科的:
mxchipInit();
程序执行不下去,一直在这个函数内转圈圈,即在下面的这四条指令内来回执行:
0x0801BDD2 F7FFFFCA BL.W host_rtos_get_time (0x0801BD6A)
0x0801BDD6 4602 MOV r2,r0
0x0801BDD8 BF00 NOP
0x0801BDDA F7FFFFC6 BL.W host_rtos_get_time (0x0801BD6A)
这是为什么呢?
注:原来使用的SYS_TICK设置:SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000); 因为mxchipInit()里已经有这个功能,所以在使用mxchipInit()时就删除了SysTick_Config()这个函数。
发现了个问题:
没有用NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0xc000);
修改后现象仍然和原来的一样,停在这里:
0x08027DDA F7FFFFC6 BL.W host_rtos_get_time (0x08027D6A)
0x08027DDE 1A80 SUBS r0,r0,r2
0x08027DE0 4288 CMP r0,r1
0x08027DE2 D3FA BCC 0x08027DDA
即一直在这几条指令中转圈。