• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

为啥程序执行不到这里?

huihui163 2020-12-13 浏览量:410
uint16_t time;
uint16_t time1;
uint8_t led_time;
uint8_t led_time1;
void SysTick_Handler(void)
{
st_systick_delay_tick();
if(++time==250)
{
// time=0;
led_time=1;
}
  if(++time==500)
{
time=0;
led_time1=1;
}

}

奇怪,滴答定时器中断,第一个if为啥一直进不去,而第二个if可以进去

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 都是不看问题,胡乱回答的,第一个奇数加,第二个偶数加,肯定不会执行第一个了,明白了
    • 发布于 2020-12-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 是说第一个if进不去?而且这个写的也有问题,time根本不会到达500的,u8就256就溢出了,还要清楚中断标志位
    • 发布于2020-12-14
    • 举报
    • 评论 0
    • 1
    • 1

  • 是不是嘀嗒定时器中断根本就没执行250次,嘀嗒定时器出中断的时候需要清一个标志位的
    • 发布于2020-12-14
    • 举报
    • 评论 0
    • 0
    • 1

  • 程序不全啊。 st_systick_delay_tick() 这个函数不知执行了啥?
    • 发布于2020-12-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 理论上是可以执行到的,我认为需要你实时跟踪time​这个变量值,然后打印输出。这就是看你st_systick_delay_tick();这个函数函数签了什么操作呢?
    • 发布于2020-12-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 这是个中断函数,进不去是与你配置的中断有关的,看有没有使能了中断吧

    如果是if内的程序,要看你的判断的数值的大小了

    • 发布于2020-12-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个代码逻辑上面看不出有什么问题,你检索一下工程,看下time这个变量有没有别的地方调用了
    • 发布于2020-12-26
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

为啥程序执行不到这里?