- Koda: Izberi vse
htim14.Init.Prescaler = 8;
htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
htim14.Init.Period = 5320;
v irq handlerju je samo togglanje enega pina, ki da s temi nastavitvami izhodno frekvenco 500 Hz, oz. pulz širine točno 1,000ms.
potem pa zamenjam (prescaler pol manjši, perioda dvakrat višja):
- Koda: Izberi vse
htim14.Init.Prescaler = 4;
htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
htim14.Init.Period = 10640;
in bi moralo biti isto, pa ni. Dobim 1,111ms, oz frekvenco 450Hz.
Prioriteta ne spremeni stanja
- Koda: Izberi vse
HAL_NVIC_SetPriority(TIM14_IRQn, 0, 0);
Ali HAL handlerji delajo kak overhead in se znotraj ISR timer kaj ustavlja ?