STM32F0 IAP

对于STM32F0 这里没办法设置中断向量表的偏移,但是,可以将中断向量表映射到RAM中

参考:

https://blog.csdn.net/findaway123/article/details/41602931?utm_source=blogxgwz5

https://blog.csdn.net/feifeiyunyun8/article/details/77705260

 

 

 

 

 

 

 

直接上代码

 

使用方法:

 

mid_iap_load_app( 0x8002800 );

 

 

原型:

 

 1 /*******************************************************************************
 2 * Function Name  : mid_iap_load_app
 3 * Description    : 跳转到应用程序 若不存在APP,则执行下面的代码 
 4 *                  根据平台进行重写
 5 * Input          : appxaddr 跳转地址
 6 * Output         : None
 7 * Return         : None
 8 *******************************************************************************/  
 9 void mid_iap_load_app( uint32_t appxaddr )
10 {
11     mid_iap_func_t jump2app;
12     if (((*(uint32_t *)(appxaddr+4)) & 0xFF000000) == 0x08000000)           /* 判断是否存在app程序 */
13     {
14         if (((*(uint32_t *)(appxaddr)) & 0x2FFE0000) == 0x20000000)         /* 检查栈顶是否合法 */
15         { 
16         
17             mid_tool_memcpy((void*)0x20000000, (void*)appxaddr, 0xB4);      /* vector 一共 b4字节 这里其实可以设置长一点 例如0x100 多余的可以用于boot和app传递数据 不会被初始化 ,但掉电失去 */
18             SYSCFG->CFGR1 |= 0x03;                                          /* 设置向量表在RAM中 */
19         
20             jump2app = (mid_iap_func_t)*(uint32_t*)(appxaddr+4);            /* 用户代码第二个字为程序开始地址(复位地址)*/
21             mid_iap_MSR_MSP (*(uint32_t*)appxaddr);                         /* 初始化APP堆栈地址 */
22             jump2app( );                                                    /* 跳转到app */
23         }
24     }
25 }
26 
27 /********************************************************************************/

 

工程配置

bootloader

不需要改

 

 

 

 

APP 我这里设置 2800 10K的地方 长度对应减一下 然后RAM 偏移B4 因为中断向量刚好B4字节,这里要和代码跳转那里设置相同

其实这里可以定义长一点,这样可以用来boot 和 app传递数据,这样设置了之后,在app初始化阶段不会初始化这段ram 不过掉电会失,若要APP传boot,还是别跳,直接存flash复位8

 

 

 

out put 这里可以改一下,设置一下生成bin文件

 

 

 

这里的 地址为你工程的主目录 对应着改吧

 

D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe   --bin -o  .\Progect.bin  .\Progect.axf

 

posted @ 2020-07-13 11:08  XZHDJH  阅读(340)  评论(0)    收藏  举报