Red de conocimiento informático - Problemas con los teléfonos móviles - Programación del microcontrolador stm8

Programación del microcontrolador stm8

El temporizador 2 de stm8 usa una interrupción de desbordamiento para implementar 1 y el LED parpadea una vez.

# incluir & ltIOs tm8 s 207s 8

# incluir & ltintrinsics.h & gt

typedef unsigned char U8 . >

p>

typedef unsigned int u 16;

typedef unsigned long U32

u 16 CNT = 0;

// - inicial gpio

void GPIO_init(void)

{

PE _ DDR = 0X07

PE _ Cr 1 = 0x 07;

p>

PE _ CR2 = 0X00

}

// - clk valor inicial

void CLK_init(void)

{

CLK _ ECKR | = 0x 1; //Activar reloj externo

Y (! (CLK ECKR & 0x 2)); para reloj externo rdy

CLK _ CKDIVR & = 0XF9 //CPU dividida por 2

CLK _ SWR = 0x B4 //Seleccione reloj externo

Y (!(SWCR CLK & 0x 8)); //Esperando aquí.

CLK_SWCR | = 0x 2; //Habilitar reloj externo

}

// - Inicialización del temporizador 2

void TIM2_init()

{

Tim 2 _ PSCR | = 0x 04; //div 16 1.333333 us->; oscilador de cristal externo 12mhz

Tim 2 _IER | 01; //UIE habilita interrupciones.

Tim 2 _ ARRH = 0x 1d;

Tim 2 _ ARRL = 0X4c

//Tim 2 _ EGR | Habilitar

Tim 2 _ Cr 1 | = 0x 85; //APPE, URS, CEN están habilitados

}

// - función

// -Dispositivo inicial

inicialización del dispositivo nulo (void)

{

CLK_initialization();

GPIO _ init ();

Tim 2 _ init();

}

void delay_nms (entero sin signo n)

{

Int sin signo I;

for(;n & gt0;n -)

{

for(I = 0 ;i<8000;i++) ;

}

}

// - interrupción

//# definetim2 _ ovr _ UIF _Vector 0x0F temporización 2 interrupción de desbordamiento 10 ms interrupción de desbordamiento

#Pragma vector = Tim 2 _ OVR _ UIF _ vector

_ _Interrupt void Tim 2 _ OVR _ Handel (void)

{

Tim 2 _ Sr 1 & = ~ 0x 01 //Borrar marca

cnt++;

}

// - principal

Administrador general no válido (no válido)

{

_ _ desactivar _ interrupción()

Inicialización del dispositivo();

_ _ habilitar _ interrupción();

mientras(1)

{

si(cnt==100)

{

CNT = 0;

pe_odr^=0x01;

}

}

}