Cómo resolver este problema de programación integrada
//Rutina de servicio de interrupción del temporizador 3
void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)/ / Interrupción de desbordamiento
{
LED1=!LED1
}
TIM3->SR&=~(1<<0) ; //Borrar el bit de indicador de interrupción
}
//Inicialización de interrupción del temporizador general
//La selección de reloj aquí es 2 veces de APB1, y APB1 es 36M
//arr: valor de recarga automática.
//psc: preescalador de reloj
//¡Aquí se usa el temporizador 3!
void Timerx_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1;//Activación de reloj TIM3
TIM3->ARR=arr //Establecer valor de recarga automática del contador // Exactamente 1ms
TIM3->PSC=psc; // Prescaler 7200, obtiene un reloj de conteo de 10 Khz
//Estas dos cosas son necesarias Las interrupciones solo se pueden usar cuando se configuran al mismo tiempo
TIM3->DIER|=1<<0; //Permitir interrupciones de actualización
TIM3->DIER|=1<<6; p>TIM3->CR1|=0x01; //Habilitar temporizador 3
MY_NVIC_Init(1,3,TIM3_IRQChannel,2); //Prevención 1, subprioridad 3. Grupo 2
}
int main(void)
{
_init(72); //Inicialización retrasada
Init(); //Inicializa la interfaz de hardware conectada al LED
Timerx_Init(5000,7199); //Frecuencia de conteo de 10 Khz, contar hasta 5000 es 500 ms
while(1)
{
}
}