|
我在做一个IAP, 发现在跳转的时候栈顶指针的值会随着程序的Ram的使用量变化而变化, 多的时候0x20020000多,少的时候0x20010000多. 这样就导致完全没法判断了呀, 万一程序一升级使用的Ram少了那么使用0x20020000来判断不是过不了了吗? 以下是判断程序: if ((((__IO uint32_t )USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFB0000) == 0x20020000) return (1); else return (0); |
在擦除flash时 同时挂起中断 是否会造成卡死以及相关的卡死机制
STM32F407VET6,使用cubeIDE下载跑不起来
FLASH擦除轮询等待时CPU真的会轮询吗
STM32F417 RTC读取亚秒寄存器
STM32F405ZGT6 批次22+ 问下这颗料,60度烘烤12小时后,出现鼓包,是怎么回事? 原厂有标准的烘烤温度范围 跟时长范围吗?
非官方开发板第一次下载成功,之后就各种失败
STM32H5F/E 相比 STM32F4 系列最大的优势是什么?
ST TOF问题请教
STM32F4的SPI端口,如何实现多通道输入?
STM32F4标准库USB例程CDC_HID_Composite问题:第一次识别成功,后续插入电脑均识别失败
微信公众号
手机版
每个工程的栈指针是IDE根据链接文件生成的,也是各自独立的。
所以升级的时候,编译器添加的启动代码会重新分配RAM的。
那我这个地方怎么处理比较好呢?
if((((vu32)USER_FLASH_FIRST_PAGE_ADDRESS)&0x2FF00000)==0x20000000) 这样??放宽松点?
理论上和栈顶指针位置大小没什么关系了。
我看到例程也是这样判断的。