Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo resolver este problema de programación integrada

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)

{

}

}