访问手机版页面
你的位置:老古开发网 > STM32单片机Keil MDK编程 > 正文  
KEILv5 STM32 程序在APP与BOOTLOADER共用方法
内容导读:
先将需要共用的程序定义在固定了FLASH地址中:#pragma arm section code=".ARM.__at_0x800F000"void Function(void){}#pragma arm section在Bootloader中调用固定地址的程序:((void (*)(void))0x0800F001)();**

先将需要共用的程序定义在固定了FLASH地址中:

#pragma arm section code=".ARM.__at_0x800F000"

void Function(void)

#pragma arm section

在Bootloader中调用固定地址的程序:

((void (*)(void))0x0800F001)();

**注意:使用的是STM32F105VC,使用的thumb指令集,调用的程序地址最后一位为1,而不是”0x0800F000“


方法二:(未验证)

将程序的基地址写成表的形式存储在固定位置比如0x8008000

const uint32_t func_table[] =
{ (uint32_t)&func1,
(uint32_t)&func2};


在需要调用的地方直接使用根据地址表调用即可:

// 声明函数指针

void (func1*)(int a);

void (func2*)(int a, int b);


void app_init(void)

{

// 取函数表基地址

uint32_t *table_base = (uint32_t*)(0x08008000);


//初始化函数指针

func1 = (void (*)(int))(table_base[0] | 0x1);

func2 = (int (*)(int, int))(table_base[1] | 0x1);


// 调用函数

func1(11);

}


标签: app,bootloader,STM32,
来源:互联网 作者:karen 时间:2018/12/17 10:40:01
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐