打印
[APM32F0]

在M0+中直接进行中断向量表偏移,新内核中的新方式!

[复制链接]
492|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 路上的工匠 于 2022-4-21 15:11 编辑

  越来越多的应用会用到IAP升级,通过BOOTLOADER+APP的方式来实现固件升级功能,ARM -M3以及后面更高级的内核都可以通过设置SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET来实现中断向量表的偏移,提供了很大的便利,但是STM32 较老的M0核因为没有此寄存器,要实现中断向量表的重映射,需要:
1、将中断向量表放入到RAM的起始地址(只需要在应用程序中保留RAM起始地址的0x100大小不使用即可)。
2、在Bootloader中将应用程序的中断向量表从Flash中拷贝到RAM中。
3、设置STM32F0xx中断向量表位于RAM中,
过程较为繁琐,也会占用RAM资源,随着技术的发展,ARM也捕捉到了这个痛点,所以在M0+核增加了SCB->VTOR功能,不过需要手动开启,那么到底怎么做呢,以APM32F0XX_SDK_V1.6为例。
1.移植最新的M0+内核文件以及相关的内核文件,我这里最新的内核文件是用CUBEMX 选择STM32G0型号(G0是M0+核)任意生成一个工程,然后将库里的需要的头文件移植过来,替代原来的库文件


2.apm32f0xx.h中的#include "core_cm0.h" 改成    #include"core_cm0plus.h"3.#define__VTOR_PRESENT            1 /*!<Vector  Table  Register supported    */将此定义添加至apm32f00x.h中打开此功能  
4.验证
   将BOOTLOADER+例程APP烧录进开发板 ,APP地址偏移3000,测试成功。











使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝