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

请问 使用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 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程