在STM32F103等cortex-m3/m4内核的单片机上可以通过设置SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;该寄存器的值来实现中断向量表的重定义。但在STM32F0xx系列以cortex-m0为内核的单片机中却怎么也找不到这个设置中断向量表的寄存器,可以通过以下方法来实现中断向量表重定义。
基本思想:
1、将中断向量表放入到RAM的起始地址(只需要在应用程序中保留RAM其实地址的0x100大小不使用即可)。
2、在bootload中将应用程序的中断向量表从Flash中拷贝到SRAM中。
3、复制STM32F0 中断向量表位于SRAM中
具体实现代码如下:
static void JumpToApp(void)
{
ApplicationAddress = APP_FLASHADDR;
if (((*(uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{
m_JumpAddress = *(uint32_t*) (ApplicationAddress + 4);
JumpToApplication = (FunVoidType) m_JumpAddress;
__set_MSP(*(uint32_t*) ApplicationAddress);
JumpToApplication();
}
}
int main(void)
{
memcpy((void*)0x20000000, (void*)APP_FLASHADDR, 0x100);
SYSCFG->CFGR1 |= 0x03;
JumpToApp();
while (1);
}
上一篇:STM32,KEIL,MDK新建一个工程
下一篇:STM32RTC安装电池后掉电不走时原因与处理
推荐阅读最新更新时间:2024-03-16 16:16
设计资源 培训 开发板 精华推荐
- 观看安森美半导体高灵敏度触摸传感器应用视频,轻松答题赢好礼!
- MPS探索营 “正经玩技术”!创意征集 | 解锁锂电池充电的无限玩法!
- 限时秒杀,100本专业书籍——TI 中国大学计划20周年
- TI 汽车应用在线展厅与你零距离接触,答题赢礼
- 五一活动上线!动动手,一起来场旧物\"劳动\"大改造吧
- 【专题】TI MSP430FR59xx——将低功耗设计进行到底!
- 调查:全新 TI E2E中文社区等你体验,等你抽奖!还可邀请好友助你一臂之力!
- 技术直播:TI 60G毫米波传感器概述和应用介绍,种草封装了天线的智能传感器IWR6843
- 【投票瓜分2500元红包】2022得捷电子创新设计大赛优秀作品人气奖由你来定!
- 有奖问答 | 富士通铁电随机存储器 FRAM 知多少