您好:
我的案子定义了一个变量sHob[0].Vari.Flag.StartReadCurrHF。该变量在PWM中断中置位和清零。
通过示波器发现,有时,在主循环中有语句while (sHob[0].Vari.Flag.StartReadCurrHF){} 发现中断中执行了清零语句,但是没有跳出该while循环,第二次执行清零才跳出循环。
测试的方法是,用一个引脚设置高低电平观察中断的置位和清零,另一个引脚设置高低电平观察while语句运行。
如改为简单的变量uint16 tt替换sHob[0].Vari.Flag.StartReadCurrHF,则不会出现上述问题。
所以怀疑是这个变量的数据结构层级太深了,当主循环和中断都有调用时会访问失效。
请指教是否如此。谢谢。
min xiao1:
这个问题哪位兄弟能回复下不?
您好:
我的案子定义了一个变量sHob[0].Vari.Flag.StartReadCurrHF。该变量在PWM中断中置位和清零。
通过示波器发现,有时,在主循环中有语句while (sHob[0].Vari.Flag.StartReadCurrHF){} 发现中断中执行了清零语句,但是没有跳出该while循环,第二次执行清零才跳出循环。
测试的方法是,用一个引脚设置高低电平观察中断的置位和清零,另一个引脚设置高低电平观察while语句运行。
如改为简单的变量uint16 tt替换sHob[0].Vari.Flag.StartReadCurrHF,则不会出现上述问题。
所以怀疑是这个变量的数据结构层级太深了,当主循环和中断都有调用时会访问失效。
请指教是否如此。谢谢。
dony chen:
这个结构的其他成员有没有操作?会不会被其他成员的操作影响了?