wxhnh1992 2018-03-29 03:37 采纳率: 0%
浏览 15220
已结题

请问 使用stm32的NRST引脚复位和重新上电有什么区别???

我使用的是STM32F051,使用J-flash烧录完固件文件后,按键复位(NRST脚)后程序总是卡在Delay(),调试发现原来是systick的中断没有。但是如果烧录完固件后重新上电的话程序就可以正常运行。请问是什么原因???

/*systick初始化*/
void Systick_Init(void)
{
if (SysTick_Config(SystemCoreClock / 1000))//1ºÁÃë
{
/* Capture error */
while(1)
{}
}
}

/*systick中断函数,其实就是调用TimingDelay_Decrement,对TimingDelay做减
发现使用按键复位后,这个中断服务函数一直没有进入*/
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}

void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}

/*延时函数*/
void Delay(__IO uint32_t nTime)
{
TimingDelay = nTime;

while(TimingDelay != 0)
{};

}

int main(void)
{

……

    Delay(300);
    ……

}

  • 写回答

8条回答 默认 最新

  • qq_26653229 2018-03-29 04:23
    关注

    复位(reset)是向MCU的复位引脚输入一个高或低电平,然后触发MCU中断。这个中断的作用就是停止跳出当前运行的程序,然后强制将MCU内部所有寄存器复写为默认状态。
    复位中断都是硬件中断,而且优先级是最高的。

    重新上电复位是通过内置的独立电压比较器监测VDD的电压,在电压达到阈值后会在一段时间内强制把MCU设置在复位状态,过了才会释放。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题