我为 stm32f103rbt6 芯片写了一个简单的闪烁程序,但过了一会儿我注意到 MCU 不断地复位。当我检查 RCC-CSR 寄存器时,PINRSTF 标志为高。但我没有将任何外部连接到 NRST 引脚。有人知道为什么会这样吗?有没有可能是什么内部原因导致了这种情况?
这是我为调试而编写的程序。结果是每次 LED 想要打开但又很快关闭。
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_i2c.h"
#include "system_stm32f10x.h"
#include "delay.h"
#include "output.h"
int main(void){
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = PIN_52.pin;
GPIO_Init(PIN_52.port, &GPIO_InitStructure);
GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_SET);
if (RCC_GetFlagStatus(RCC_FLAG_SFTRST)){
//GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
} else if (RCC_GetFlagStatus(RCC_FLAG_PORRST)){
//GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
} else if (RCC_GetFlagStatus(RCC_FLAG_PINRST)){
GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
} else if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST)){
//GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
}else if (RCC_GetFlagStatus(RCC_FLAG_WWDGRST)){
//GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
}else if (RCC_GetFlagStatus(RCC_FLAG_LPWRRST)){
//GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
}else {
//GPIO_WriteBit(PIN_52.port, PIN_52.pin, Bit_RESET);
}
RCC_ClearFlag();
while (1);
}