Cómo programar el byte de opción de stm8
1. El concepto de bytes de opción (consulte el manual de datos chino de stm8s):
Los bytes de opción incluyen la configuración de las características del hardware del chip y la información de protección de la memoria. la memoria en un bloque
dedicado. Excepto el byte ROP (protección de lectura), cada byte de opción debe guardarse dos veces, una en el formato habitual (OPTx) y
en un formato complementario de copia de seguridad (NOPTx). Los bytes de opción se pueden modificar accediendo a las direcciones EEPROM en la siguiente tabla en modo ICP (a través de SWIM).
La aplicación también puede modificar los bytes de opción en modo IAP, pero las opciones de ROP solo se pueden modificar en modo ICP (a través de SWIM)
2.ISP IAP El concepto de ICP (para aprender): ISP: En programación de sistemas, ?En programación de sistemas? Descarga completa del programa IAP: En la aplicación de programación, ¿entiendo que se utiliza? programas de aplicación Para modificar algunos datos fijos en el chip (datos no relacionados con la programación de aplicaciones) ICP: ¿En programación de circuitos?
3.Reasignación de la función de respaldo del chip Stm8s:
Hay muchas funciones de repuesto en el chip stm8s, estas funciones deben realizarse utilizando la función de reasignación.
La reasignación es en realidad configurar un determinado bit de una determinada dirección flash para que un determinado pin tenga una función de repuesto o una de las funciones predeterminadas. /p>
Y una vez cambiada la función, debes reescribirla si quieres restaurar la función original.
Por ejemplo, el puerto PD4 de stm8s tiene la función TIM2_CH1 y la función BEEP La función predeterminada es TIM2_CH1
Cuando queremos usar. la función BEEP, debemos escribir la palabra de opción para reasignar este pin a la función BEEP.
4. La función de biblioteca implementa la reasignación //La dirección de la palabra de opción para stm8s es 0x4803
#define?Beep_OptionAdd?0x4803
void?Set_Beep_OptionByte(void)
{
uint16_t?Beep_Option_status;/*Registra el estado de activación de la función alternativa Beep/TIM2_CH1*/
Beep_Option_status=FLASH_ReadOptionByte(Beep_OptionAdd);
/*El bit más alto de Beep_Option_status es 1 para activar Beep, de lo contrario no se activa y es TIM2_CH1*/ if((Beep_Option_status&0x8000)) { FLASH_ProgramOptionByte(Beep_OptionAdd,?(uint8_t)(Beep_Option_status&0x7fff));
/*Establezca 0 en Beep_OptionAdd?0x4803?, desactive el Beep y restablezca el canal TIM2_CH1*/ } }