阿里兄 发表于 2020-6-12 09:45:28

STM32F0XX中断向量跳转的办法

因STM32F0XX系统的SCB没有VTOR寄存器即SCB->VTOR,所以中断向量跳转要换一种方法。即把中断向量复制到SRAM最前面,方法如下:

/* USER CODE BEGIN 0 */
__IO uint32_t VectorTable __attribute__((at(0x20000000)));

// 重映射中断向量
static void iRemapIrqVector(void)
{
        // 中断向量重映射
        unsigned char i = 0;

        for(i = 0; i < 48; i++)
        {
                VectorTable = *(__IO uint32_t*)(APP_START_ADDRESS + (i<<2)); //中断向量是一个指针,每个占4个字节
        }

        /* Remap SRAM at 0x00000000 */
        __HAL_SYSCFG_REMAPMEMORY_SRAM(); //设置为RAM启动模式
}

/* USER CODE END 0 */然后在main函数最前面进行调用。
int main(void)
{
/* USER CODE BEGIN 1 */
    iRemapIrqVector();
/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();另MDK上也要进行SRAM的设置。


以上即可以加bootloader进行固件升级了。

页: [1]
查看完整版本: STM32F0XX中断向量跳转的办法