En mi núcleo L432KC, he configurado el temporizador 1 para la generación PWM, el temporizador 15 como una interrupción basada en el temporizador y el temporizador 2 como el modo de entrada PWM. El temporizador 1 y el temporizador 15 funcionan bien hasta un punto. Mi frecuencia de reloj es 2MHz. Por ejemplo, quería un evento de actualización de 50 kHz, así que configuré el Precaler 0 del temporizador 15 y el período 39. En ese caso, el ciclo While (1) nunca se ejecuta, es decir, el programa se bloquea.
Cuando comienzo el temporizador 2 como:
HAL_TIM_IC_Start_IT (& htim2, TIM_CHANNEL_3);
HAL_TIM_IC_Start_IT (& htim2, TIM_CHANNEL_4);
Mi temporizador 1 se comporta mal. El programa en general se comporta mal. ¿Qué podría estar pasando aquí? Es como si la interrupción del temporizador 15 está tomando todo el control? ¿Hay algo relacionado con las interrupciones de prioridades? El propósito del temporizador 15 es disparar una interrupción a 50 kHz. Durante esta interrupción, estoy leyendo datos SPI.
Pseudocódigo de la rutina de interrupción:
Tire del chip hacia abajo
Lee SPI con HAL_SPI_Receive
Seleccionar chip