static变量的值第一次就被改变了

[复制链接]
 楼主| 星星心 发表于 2025-5-16 17:38 | 显示全部楼层 |阅读模式
本帖最后由 星星心 于 2025-5-16 17:43 编辑



void ADS1115_RunProcess(void)
{
    static uint8_t nAdsInit = 0;

    if(nAdsInit == 0)      
    {
        nAdsInit = 1;
        ADS1115_Init();
    }
}


nAdsInit 的地址是0x20000026,运行第一次的时候值就变成5了,为什么呀

 楼主| 星星心 发表于 2025-5-17 10:34 | 显示全部楼层
找到问题了,bootloader有个变量跟app的变量地址一样,然后bootloader里面的变量在中断里面++了,跳转app前没有关闭中断
dffzh 发表于 2025-5-17 16:03 | 显示全部楼层
星星心 发表于 2025-5-17 10:34
找到问题了,bootloader有个变量跟app的变量地址一样,然后bootloader里面的变量在中断里面++了,跳转app前 ...

不然确实没办法解释了;
但为什么两者的地址会一样呢?那其他变量呢?
jack821119 发表于 2025-5-17 16:09 | 显示全部楼层
地址一样很正常,两个独立的工程,静态变量跟全局变量地址重复是很正常的。
zjsx8192 发表于 2025-5-18 09:25 | 显示全部楼层
不同的工程编译会这样
飞思啦 发表于 2025-5-18 13:11 | 显示全部楼层
学到了,看来以后有boot的时候得注意点了
wangshujun 发表于 2025-5-19 12:13 | 显示全部楼层
bootloader离开前解初始化外设,清除中断是基本操作,如果不做天知道会出什么问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部