我在做一个IAP, 发现在跳转的时候栈顶指针的值会随着程序的Ram的使用量变化而变化, 多的时候0x20020000多,少的时候0x20010000多. 这样就导致完全没法判断了呀, 万一程序一升级使用的Ram少了那么使用0x20020000来判断不是过不了了吗? 以下是判断程序: if ((((__IO uint32_t )USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFB0000) == 0x20020000) return (1); else return (0); |
外部中断升降沿类型判断
STM32H745I-DISCO 下载TouchGFX报找到不FLASH下载算法文件
定时器正交编码器功能
STM32F427串口接收和发送中断同时使能,出现接收中断丢数的现象。
为什么生成代码时一直卡在generating user source code 救救孩子吧。
easylogger打印失败
为什么ETH配置中没有Advanced Parameters?
与HAL_ADC_Start_DMA相关的一个十分怪异的问题
由stm32cubemx按照配置重新生成工程,bsp_SysTick.c一直没有呢
ptp PPS输出
每个工程的栈指针是IDE根据链接文件生成的,也是各自独立的。
所以升级的时候,编译器添加的启动代码会重新分配RAM的。
那我这个地方怎么处理比较好呢?
if((((vu32)USER_FLASH_FIRST_PAGE_ADDRESS)&0x2FF00000)==0x20000000) 这样??放宽松点?
理论上和栈顶指针位置大小没什么关系了。
我看到例程也是这样判断的。