
我在做一个IAP, 发现在跳转的时候栈顶指针的值会随着程序的Ram的使用量变化而变化, 多的时候0x20020000多,少的时候0x20010000多. 这样就导致完全没法判断了呀, 万一程序一升级使用的Ram少了那么使用0x20020000来判断不是过不了了吗? 以下是判断程序: if ((((__IO uint32_t )USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFB0000) == 0x20020000) return (1); else return (0); |
请教为什么中断回调函数中不能使用接收中断开启函数
bootloader占用的flash起始地址一般在哪,从0x08000000地址开始的flash能够被用户使用吗
如何使用window程序对控制参数进行调整。
PWM+DMA求助
STM32中比较适合做FOC控制的芯片
当有一外部信号(上升和下降沿触发),用timer计测脉冲间隔的问题,要给采用那种触发:ITRx、Gate、还是其它那种方式最好,响应最快,谢谢
ST的IMU和地磁计用motionfx库融合后航向角异常的问题
请问一下,F4硬件开发手册有最新版本吗?
stm32f407VGT6用freertos库一直进hardfault循环
stm32cubeide 中文乱码能解决吗
每个工程的栈指针是IDE根据链接文件生成的,也是各自独立的。
所以升级的时候,编译器添加的启动代码会重新分配RAM的。
那我这个地方怎么处理比较好呢?
if((((vu32)USER_FLASH_FIRST_PAGE_ADDRESS)&0x2FF00000)==0x20000000) 这样??放宽松点?
理论上和栈顶指针位置大小没什么关系了。
我看到例程也是这样判断的。