1.選項字節的概念(參考stm8s中文數據手冊):
選項字節包括芯片硬件特性的配置和存儲器的保護信息,這些字節保存在存儲器中壹個專用的
塊內。除了ROP(讀出保護)字節,每個選項字節必須被保存兩次,壹個是通常的格式(OPTx)和
壹個用來備份的互補格式(NOPTx)。可以在ICP模式(通過SWIM)下訪問下表中EEPROM的地址來修改選項字節。
選項字節也可以通過應用程序在IAP模式下修改,但是ROP選項只能在ICP模式(通過SWIM)下被
修改。
2.ISP IAP ICP的概念(有待學習):
ISP:In System Programing, ?在系統編程 ? 程序完全下載 IAP:In applicating Programing,在應用編程 ? 我的理解是用應用程序去修改芯片裏邊固定的壹些數據(與應用編程無關的數據) ICP:In Circuit Programing, 在電路編程 ?3.stm8s芯片的備用功能重映射:
stm8s芯片上帶有很多備用的功能,這些功能必須使用重映射功能才能實現,
重映射其實就是配置某個flash地址的某壹位,使某個引腳具備備用功能或者默認功能的其中壹個
而且壹旦功能改,想恢復原來的功能必須重新寫入。
比如stm8s的PD4端口具有TIM2_CH1 功能和BEEP功能,默認的情況下是TIM2_CH1功能,
當我們要用到BEEP功能時必須寫選項字,將這個引腳重映射為BEEP功能。
4.庫函數實現重映射
//對於stm8s的選項字地址為0x4803#define?Beep_OptionAdd?0x4803
void?Set_Beep_OptionByte(void)
{
uint16_t?Beep_Option_status;/*記錄激活備選功能Beep/TIM2_CH1的狀態*/
Beep_Option_status=FLASH_ReadOptionByte(Beep_OptionAdd);
/*Beep_Option_status的最高位為1激活了Beep,否則不激活,為TIM2_CH1*/
if((Beep_Option_status&0x8000)) { FLASH_ProgramOptionByte(Beep_OptionAdd,?(uint8_t)(Beep_Option_status&0x7fff));/*向Beep_OptionAdd?0x4803?置0,不激活激活了Beep,恢復TIM2_CH1通道*/
} }