Dónde y cómo configurar el byte de opción para configurar pd4 como función alternativa del pitido
1. El concepto de byte de opción (consulte el manual de datos chino de stm8s):
El byte de opción incluye la configuración de la función del hardware del chip y la información de protección de la memoria. se almacena en la memoria en un bloque dedicado
. Con la excepción del byte ROP (protección de lectura), cada byte de opción debe guardarse dos veces, una en formato normal (OPTx) y otra en formato complementario para copia de seguridad (NOPTx). En modo ICP (a través de SWIM), los bytes de opción se pueden modificar accediendo a la dirección EEPROM en la siguiente tabla.
Las aplicaciones también pueden modificar bytes de opciones en modo IAP, pero las opciones de ROP solo se pueden modificar en modo ICP (a través de SWIM).
2. ISP IAP Concepto ICP (por aprender): ISP: en la programación del sistema, el programa se ha descargado por completo IAP: tengo entendido que la aplicación se utiliza para modificar el chip Algunos datos fijos (datos) no relacionado con la aplicación) ICP: ¿En programación de circuitos, en programación de circuitos?
3. Reasignación de funciones alternativas del chip stm8s:
chip stm8s Hay muchas funciones de respaldo, que deben ser implementado usando la función de reasignación.
La reasignación es en realidad configurar un cierto bit de una determinada dirección de memoria flash para que un determinado pin tenga una función de respaldo o uno de los pines La función predeterminada
Una vez que se cambia la función, se debe reescribir para 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 reasigna este pin a la función BEEP.
4. Función de biblioteca para implementar la reasignación // Para stm8s, la dirección de la palabra de opción 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); p>
/*El pitido se activa cuando el bit más alto de Beep_Option_status es 1; de lo contrario, TIM2_CH1 no se activa*/ if((Beep_Option_statusamp; 0x8000)) { FLASH_ProgramOptionByte(Beep_ OptionAdd,?(uint8_t)(Beep_Option_statusamp; 0x7fff)) ;
/* Establezca Beep_OptionAdd en 0?x4803? para desactivar el pitido activado y restaurar el canal TIM2_CH1* } } }