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.

timer全開運作下

請教
主頻為 : 20MHz
timer0~3,共4個32bit
我將其拆成 timer0a/0b , timer1a/1b , timer2a/2b ,timer3a/3b ,每個皆為16bit
timer0a/0b = 1ms /100ms
timer1a/1b = 10ms /10ms
timer2a/2b = 100ms /200ms
timer3a/3b = 1ms /200ms
以上為各個timer中斷時間
共8個中斷,各自做各自的事
但發現,8個全開下,僅有timer3a/b中段時間 會忽快忽慢
但只要將timer0~2任一關閉,則timer3a/b及恢復正常中斷時間

請問有什麼可能??

以上再麻煩,有經驗人士,協助分析下

謝謝

  • 没有想到有什么可能,硬件上应该毫无关系的。只能是怀疑你软件上有小bug了,僅有timer3a/b中段時間 會忽快忽慢,是因为其他中断优先级别高,所以优先执行其他中断导致的吧?把timer3a/b中断设置为最高优先级看看。

  • 是,昨日使用中斷優先權get,

    發現timer 8組全部都是0,可能是這原因的優先權造成

    順便請教下

    1. 在使用timer時,若不主動配置所有中斷的優先權是否全部中斷都默認為0??

    2. 在interrupt.c裡 g_pui32Regs[] 用來設置中斷佔存器寫入的鏈結 , tm4c123g.h裡 有定義中斷名 比如 : #define INT_TIMER0A             35          // 16/32-Bit Timer 0A

        疑問是 , 我知道在程序上是將TIMER0A  的 35 透過函數內位移到g_pui32Regs[]  裡面指定的中斷名 , 來達到 對TIMER0A  設置中斷優先權 ,但這部分TIMER0A  與     中斷名的對應 是從何而來?? 程序上是絕對的嗎 ?? 還是說 只要掌握使用方式 , TIMER0A  我可以任意設置指定 中斷0~63 任一一個呢?

    以上

    謝謝