lo más sencillo sería configurar un temporizador y en el temporizador iniciar el anuncio.
puede establecer la interrupción del temporizador en la prioridad más alta / más alta.
En 8 bits, una 'biblioteca' es poco más que algunas etiquetas para registros,
también se utilizan muchas bibliotecas en el mundo de 8 bits. puede estar pensando en macros vs. bibliotecas.
parece que se usan mucho más comúnmente en ARM ...
debido a su complejidad y su curva de aprendizaje mucho más pronunciada.
¿Debería simplemente aceptar el uso de la HAL de ST, intentar restringir a CMSIS o realmente intentar y continuar pinchando la memoria como en 8 bits?
es muy difícil NO usar cmsis para iniciar el dispositivo.
en cuanto a la biblioteca, inténtelo y puede ayudarlo a comenzar más pronto / más rápido.
Por lo general, comienzo con las bibliotecas OEM, pero las encajero de una manera que en el futuro puedo reemplazarlas con mi propio código si así lo deseo.
con una biblioteca oem, normalmente obtienes códigos de calidad + ejemplos de trabajo. vienen con un poco de sobrecarga (1-2KB típico) pero eso no es nada para un chip ARM típico.
editar: esto es lo que normalmente hago para todas mis rutinas relacionadas con el temporizador - > tienen una estructura idéntica pero se implementan de manera diferente en 8/16/32 chips:
ISR:
clear the flag;
_isrptr(); //execute the user handler
timer initialization (prescaler, period)
stop the timer
initialize the timer for user-specified prescaler and period
start the timer - interrupt still disabled
timer activation (isrptr)
_isrptr = isrptr; //install user handler
clear the flag
enable the interrupt
permite la instalación de una rutina especificada por el usuario en el temporizador isr. en su caso, esa rutina instalada por el usuario podría ser encender / apagar el anuncio, guardar / procesar los datos, configurar una bandera ...
este conjunto de rutinas será genérico y se puede portar de un chip a otro. puede implementarse a través de bibliotecas o puede hacer su propio rollo, completamente transparente al código de espacio del usuario, lo que significa que puede alternar entre las implementaciones libremente sin la necesidad de cambiar el código de usuario.
edit 2: aquí hay un ejemplo. el siguiente código,
tim1_init(1000, 1000); //run tim1 at 1000 prescaler + 1000 period = 1M
tim1_act(led_flp); //install user handler
se ejecuta en STM8S - > configura el temporizador 1 para que se desborde cada 1M ciclos y luego, en el desbordamiento del temporizador 1, ejecuta led_flp (), instalado por tim1_act ().
Substancialmente el mismo código se ejecuta en PIC, AVR, MSP430, PIC24 y varios chips ARM. Algunas versiones funcionan con SPL de ST (para STM8 y STM32), otras ejecutan el driverlib de Luminary, y otras ejecutan código codificado - > en el caso de STM8, algunos de los archivos de encabezado de IAR y otros fuera del stm8s.h desde el SPL, sin utilizar realmente el SPL.
Esto es para mostrar que la cuestión de si se debe usar una biblioteca de proveedores es bastante discutible, si estructura su código de manera adecuada. Para el código de usuario, no hace una gran diferencia si esas rutinas se implementaron en una biblioteca de proveedores o se realizaron mediante la modificación de los registros. Al final del día, hace el trabajo, y con suerte se hace bien.
Entonces, en lugar de perder el tiempo, si debe adoptar un enfoque particular, solo tome un enfoque y asegúrese de hacerlo correctamente.