打印
[STM32F1]

STM32 MCU IAP 例程跳转到 APP 代码简要分析

[复制链接]
129|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forgot|  楼主 | 2023-6-13 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么需要做以下判断 :
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{
}

使用特权

评论回复
沙发
forgot|  楼主 | 2023-6-13 17:39 | 只看该作者
ApplicationAddress 存放的是程序的主堆栈地址,CSTACK 堆栈地址指向 RAM,而 RAM 的
起始地址是 0x20000000;
因此上面的判断语句执行:判断用户代码的堆栈地址是否落在:0x20000000~0x2001ffff 区间
中,这个区间的大小为 128K.
例程中使用芯片 RAM=128K,因此做上面的判断;如果芯片 RAM 比 128K 大的话,可以在
此判断语句做调整.

使用特权

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

本版积分规则

1742

主题

13101

帖子

54

粉丝