STM32F0系列中断向量映射问题

本文介绍了如何为STM32F030K6T6这款Cortex-M0内核的单片机进行IAP升级。详细解释了中断向量映射的方法,并给出了具体的实现代码示例。

​​​​​​​

最近用Cortex-M0内核的STM32F030K6T6做个东西,需要做IAP升级,发现它的中断向量与M3、M4等内核的单片机不太一样,这里分享给大家。

IAP升级需要一个BootLoader程序,一个应用程序。BootLoader程序直接烧写到flash起始地址就行,中断向量也不用改。但是应用程序需要烧写到BootLoader程序后面,且中断向量必须重新映射。

M3、M4等内核的单片机,直接修改中断向量的偏移地址(VECT_TAB_OFFSET)就行。但在M0内核的库中,根本就没有这个定义。查阅相关资料发现,M0内核的中断向量需要用户自己从Flash映射到RAM中,即0x20000000地址。

实际操作也很简单,在程序开始加上这两句话:

#define IAP_ADDR                 ((uint32_t)0x08002800)


memcpy((void*)0x20000000,(void*)IAP_ADDR,0xB4);
__HAL_SYSCFG_REMAPMEMORY_SRAM();

其中0x20000000是SRAM的地址,IAP_ADDR是应用程序的起始地址,0xB4是中断向量表的大小。具体多大可以在startup.s文件里计算得到。以下以startup_stm32f030.s为例作说明:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值