打印
[MM32硬件]

MM32F0144的IAP实例

[复制链接]
796|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-4-10 08:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这里不再介绍原理了。本人看了原理,尝试了写了个简单的验证程序,结果跳转成功后中断不灵了,又查了很多网文,发现是uboot中是在中断中触发了跳转导致的异常,后来修改成直接在main函数中执行跳转,就成功了。这里记录一下关键点,并把工程源码也附上,供人参考。

UBOOT
#define APPLICATION_START_ADDR (uint32_t)(0x08001000)
typedef void (*pFunction)(void);

uint32_t JumpAddress = 0;
pFunction JumpToApplication;


s32 main(void)
{
       
                DELAY_Init();
        LED_Init();   //这里点灯的目的是方便观察运行在APP还是uboot上
                LED2_ON();
                DELAY_Ms(200);
                LED2_OFF();       
                DELAY_Ms(200);
       
                LED2_ON();
                DELAY_Ms(200);
                LED2_OFF();       
                DELAY_Ms(200);
       
                LED2_ON();
                DELAY_Ms(200);
                LED2_OFF();       
                DELAY_Ms(200);

//IAP跳转,不能在中断程序中执行,否则切换到APP后中断异常
                JumpAddress = *(volatile uint32_t *)(APPLICATION_START_ADDR + 4);
                JumpToApplication = (pFunction) JumpAddress;
                __set_MSP(*(volatile uint32_t *)APPLICATION_START_ADDR);
                JumpToApplication();
//IAP跳转

    while(1)
                {                       


    }

}





APP
#define APPLICATION_START_ADDR (uint32_t)(0x08001000)
s32 main(void)
{
                 

        memcpy((uint8_t *)SRAM_BASE, (uint8_t *)APPLICATION_START_ADDR, 48*4);        //这里复制中断向量表
        RCC_APB2PeriphClockCmd(RCC_APB2ENR_SYSCFG, ENABLE);                               
        SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
       
       
        DELAY_Init();
    LED_Init();
    KEY_Init();
    EXTI_Config();
    while(1)
        {
                       
                        DELAY_Ms(200);
                        LED1_TOGGLE();
                        DELAY_Ms(200);


    }

}



这里0xC0是48预留给中断向量的

0x10000-0x1000=0xF000

0x2000-0xC0=0x1F40





————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/hyhsandy1803/article/details/136286999

使用特权

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

本版积分规则

1931

主题

15650

帖子

12

粉丝