This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5438A在定时器B的计时中断后,会自动把TBIFG标志位清零吗?



如题:

TB0中断位CCIE中断计时。但是中断完成退出来后,TBIFG标志位没有变成0,还是1置位。但是程序单步执行下一步也不会进去该中断。

怎么回事呢?

  • 进入中断服务函数后,标志位会自动清0,不需要手动清0.

  • 只开TB0计数中断50毫秒间隔,第一次进中断标志位还是0:如图

    然后点击go,下次进中断时标志位是变成1,单是退出来中断后标志位还是1,如下图

    定时器计数中断不是会自动清0标志位吗?为什么出了中断还是1置位?

  • 有时候显示的那个寄存器的值不是实时刷新的

  • 只能这么解释了。

    还有一个,TB0间隔50ms中断扫描键盘,但是在键盘中有个100ms延时,延时后执行一函数初始化TA1产生PWM波,TA1中断计数P波个数。但是每次都会漏掉一开始几个P波,用的P波控制步进电机,导致第一次进TA1中断计数,电机就已经走了几十步了。  初始化P波的函数在TB0中断内初始化的,是初始化完后下一个时钟周期就会产生P波吗?

    TB0中断优先级高于TA1的。

  • zibo zhang 说:

    只能这么解释了。

    还有一个,TB0间隔50ms中断扫描键盘,但是在键盘中有个100ms延时,延时后执行一函数初始化TA1产生PWM波,TA1中断计数P波个数。但是每次都会漏掉一开始几个P波,用的P波控制步进电机,导致第一次进TA1中断计数,电机就已经走了几十步了。  初始化P波的函数在TB0中断内初始化的,是初始化完后下一个时钟周期就会产生P波吗?

    TB0中断优先级高于TA1的。

    不建议在键盘处理中用这么长的延时,尤其是在中断中。