问题描述:创建一个最基本的工程(STM32G474),只配置时钟和GPIO(作为debug pin),代码如下:
#include "main.h"
#include "gpio.h"
uint16_t u16Debug = 10;
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
if (u16Debug == 59390)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2);
}
}
}
程序将u16Debug初始化为10,但通过debug pin会发现,程序运行一会后(4ms--5ms),u16Debug被改写为59390,不知是何原因?
目前我的几个发现是1.只有第一个变量会被改写,例如在u16Debug之后再定义一个变量u16Debug2,u16Debug2是不会被改写的;2.代码下载到MCU flash后,MCU自动运行,必然复现该问题。但如果通按开发板上的reset按钮重新复位MCU或者通过keil的debug功能单步执行,则不会出现该问题。 |