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

请问 使用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 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler