完善资料让更多小伙伴认识你,还能领取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.软件解决:可以在运行应用程序时,手动修改向量表中的地址,将其指向重新映射后的地址,从而实现正确运行。这种方法需要在每次切换到应用程序时执行。
|
|
|
|
只有小组成员才能发言,加入小组>>
798 浏览 0 评论
1154 浏览 1 评论
2531 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1086浏览 3评论
195浏览 2评论
461浏览 2评论
374浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 23:35 , Processed in 1.015121 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号