完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
最近用上了新唐的MCU,向量页重新映射的问题一直无法解决。
#define APPLICAtiON_START_ADDR (0x6000) __asm INT32U spChange(INT32U _sp) { MSR MSP, r0 BX lr } void application_run(void) { typedef void(*app_entry)(void); INT32U *vectorTable = (INT32U *)(APPLICATION_START_ADDR); static INT32U _sp = 0; static INT32U _pc = 0; static app_entry app = 0; _sp = vectorTable[0]; _pc = vectorTable[1]; SYS_UnlockReg();//解除寄存器写保护 FMC_ENABLE_ISP();//使能ISP app = (app_entry)_pc; FMC_SetVectorPageAddr(APPLICATION_START_ADDR); //重置中断向量表 spChange(_sp); app(); while(1); } |
|
相关推荐
1个回答
|
|
START_ADDR); app_entry app = (app_entry)(vectorTable[1]); spChange(vectorTable[0]); (*app)();} 上面的代码是经典的MCU切换到应用程序的代码,但是如果向量页重新映射了,那么这个代码就会失效。解决这个问题有两种方法: 1.硬件解决:大多数MCU都提供了向量地址寄存器,可以通过这个寄存器设置向量页的地址,使得应用程序能够正确运行。 2.软件解决:可以在运行应用程序时,手动修改向量表中的地址,将其指向重新映射后的地址,从而实现正确运行。这种方法需要在每次切换到应用程序时执行。
|
|
|
|
只有小组成员才能发言,加入小组>>
587 浏览 0 评论
1061 浏览 1 评论
2434 浏览 5 评论
2759 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2581 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
608浏览 9评论
605浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
716浏览 6评论
585浏览 5评论
625浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-20 04:51 , Processed in 0.868399 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号