我有在獲得運行的uC/OS-III上的NXP LPC1857平穩運行的LED的PWM信號的麻煩。只有當我禁用以1ms運行的OS systick時,正常發生的閃爍停止。的uC/OS-III SYSTICK&爲PWM外設定時器0干擾
我已經建立了我的定時器有4個匹配寄存器,每一種顏色(紅,綠,藍)和一個完整的週期。前三個匹配輸出將清除每種顏色的物理輸出引腳。最後的週期匹配生成一箇中斷以設置下一個週期的所有三種顏色輸出。
我試圖通過添加以下代碼角落找尋中斷定時器0中斷期間禁用從OS中斷:
void TIMER0_IRQHandler(void)
{
CPU_SR_ALLOC();
OS_CRITICAL_ENTER();
OSIntEnter();
if (Chip_TIMER_MatchPending(PWM_TIMER, PWM_RED))
{
Chip_TIMER_ClearMatch(PWM_TIMER, PWM_RED);
PWM_TIMER->EMR &= ~(((uint32_t) 0x01) << PWM_RED);
}
if (Chip_TIMER_MatchPending(PWM_TIMER, PWM_GREEN))
{
Chip_TIMER_ClearMatch(PWM_TIMER, PWM_GREEN);
PWM_TIMER->EMR &= ~(((uint32_t) 0x01) << PWM_GREEN);
}
if (Chip_TIMER_MatchPending(PWM_TIMER, PWM_BLUE))
{
Chip_TIMER_ClearMatch(PWM_TIMER, PWM_BLUE);
PWM_TIMER->EMR &= ~(((uint32_t) 0x01) << PWM_BLUE);
}
if (Chip_TIMER_MatchPending(PWM_TIMER, PWM_MATCH))
{
Chip_TIMER_ClearMatch(PWM_TIMER, PWM_MATCH);
PWM_TIMER->EMR |= (((uint32_t) 0x01) << PWM_RED);
PWM_TIMER->EMR |= (((uint32_t) 0x01) << PWM_GREEN);
PWM_TIMER->EMR |= (((uint32_t) 0x01) << PWM_BLUE);
}
OS_CRITICAL_EXIT();
OSIntExit();
}
有沒有人有一個想法,爲什麼系統定時器可能導致的PWM信號閃爍?
的CPU頻率設置爲180MHz的這不應導致任何麻煩定時器percerheral我會想? – Futience