void TIM5_IRQHandler(void)
{
vu16 testcnt;
testcnt=TIM5->SR; //這行註解時 CC1IF還是會進去
if(TIM5->SR&1<<0)
{
TIM5->SR = ~(1<<0); //clear UIF
}
else if(TIM5->SR&1<<1)
{
TIM5->SR = ~(1<<1); //clear CC1IF
TIM5->DIER &= ~(1<<1); //disable CC1I
}
}
因為本來想CC1I執行一次後關掉 仿真時發現程序還是會跑進去執行 後來加個變數查看SR 發現CC1I進不去了
把debug用的code 刪掉 又開始進去執行了....這是為毛阿....
如果沒有else變成2個都進去 故意加上ELSE想說讓它進第一個就好
結果它還是能進第2個 超沒道理的....因為它會進中斷表示第一個一定能進阿
如果第一個不能進 那它還能進中斷....也太怪了 因為我只有ENABLE DIER的bit0...
b改成那樣我昨天也試過 還是能進第2個if 真的很莫名奇莫...如果大大有空的話可以玩玩看@@
我多加一個 檢查DIER的判斷句讓它確定不要進去 只是不曉得 會不會還是亂進中斷 白白消耗效能
一周热门 更多>