Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de la biblioteca de firmware Stm32

Código fuente de la biblioteca de firmware Stm32

El artículo "Cómo actualizar de la biblioteca de firmware STM32F10xxx V2.0.3 a la biblioteca de periféricos estándar STM32F10xxx V3.0.0" dice:

El controlador SysTick se eliminó de la biblioteca de periféricos estándar, por lo que los usuarios deben llamar a la función definida por CMSIS.

CMSIS solo proporciona una función de configuración de SysTick, que reemplaza todas las funciones del controlador SysTick STM32 original.

sy stick _ Config(uint 32 _ t ticks);

Esta función establece el valor del contador de recarga automática (carga), la prioridad de SysTick IRQ y el contador de reinicio. (VAL), comienza a contar y activa la interrupción SysTick IRQ. De forma predeterminada, el reloj SysTick utiliza el reloj del sistema.

El siguiente programa utiliza la biblioteca de firmware V2.0.3 para configurar SysTick:

/*Seleccione el reloj HCLK como fuente de reloj SysTick (72MHz) */

sy stick _ CLKSourceConfig (sy stick _ clk source _ HCLK);

/*Cuando el reloj de entrada es igual a 72 MHz (HCLK), cada 1 ms de cuenta SysTick finaliza el evento)*/

sy stick _ set reload(72000);

/*Habilitar interrupción SysTick*/

SysTick_ITConfig (habilitar);

La siguiente rutina utiliza el biblioteca periférica estándar V3.0.0 Configurar SysTick:

/*Establecer el temporizador SysTick para una interrupción de 1 milisegundo*/

if(sy stick _ Config(frecuencia del sistema/1000))/* sistema la frecuencia está en "system_stm32f10x. h" definida en, igual a la frecuencia HCLK*/

{

/*Error de captura*/

while(1);

}

Código de retardo de función de biblioteca 2.0

/*Reloj de inicialización*/

void Init_SysTick(void)

{

/*Deshabilitar el contador SysTick*/

sy stick _ Counter MD (sy stick _ Counter _ Disable

/*Deshabilitar la interrupción de SysTick); */

SysTick_ITConfig(disabled);

/*Configurar el reloj HCLK como fuente de reloj SysTick*/

sy stick _ CLKSourceConfig(sy stick _ clk source _ HCLK _ div 8);

/*Cuando HCLK es igual a 72MHz, cada interrupción SysTick de 1000 Hz*/

sy stick _ set reload(9000);

/*Habilitar interrupción SysTick*/

SysTick_ITConfig (habilitar);

}

/*Función de retardo de 1 ms*/

_ _ IO uint32 _ t TimingDelay

Retraso_milisegundos no válido (tiempo __IO uint32_t)

{

/*Habilitar contador SysTick*/

sy stick _ Counter MD(sy stick _ Counter _ Enable);

TimingDelay = nTime

while(TimingDelay! = 0);

/*Desactivar contador SysTick*/

sy stick _ Counter MD(sy stick _ Counter _ Disable);

/*Borrar SysTick Contador*/

sy stick _ Counter MD(sy stick _ Counter _ Clear

}

/* STM 32 f 10x _ c El. La función void SysTick_Handler(void) se modifica a */

extern _ _ IO uint32 _ t TimingDelay

void SysTick_Handler(void)

{

if (TimingDelay!= 0x00)

{

retraso de tiempo-;

}

}

/*Uso, retraso 1 segundo*/

delay_ms(1000);

3.5 código de retardo de función de biblioteca

/*Reloj de inicialización*/

void Init_SysTick(void)

{

if(sy stick _ config(systemcorelock/1000))//Nota: SystemFrequency en la biblioteca 3.5 se reemplaza por systemcorelock.

while(1);

}

/*Función de retardo de 1 ms*/

_ _ IO uint32 _ t TimingDelay< / p>

Delay_ms no válido(__IO uint32_t time)

{

TimingDelay = nTime

while(TimingDelay!= 0);

p>

}

/* La función void SysTick_Handler(void) en STM 32 f 10x _ it .c se modifica a */

extern _ _ IO uint32 _ t TimingDelay

void SysTick_Handler(void)

{

if (TimingDelay!= 0x00)

{

retraso de sincronización-;

}

}

/*Uso, retraso 1 segundo*/

retraso _ ms(1000 );