1.選項字節(jié)的概念(參考stm8s中文數(shù)據(jù)手冊):
選項字節(jié)包括芯片硬件特性的配置和存儲器的保護信息,這些字節(jié)保存在存儲器中一個專用的
塊內(nèi)。除了ROP(讀出保護)字節(jié),每個選項字節(jié)必須被保存兩次,一個是通常的格式(OPTx)和
一個用來備份的互補格式(NOPTx)??梢栽贗CP模式(通過SWIM)下訪問下表中EEPROM的地址來修改選項字節(jié)。
選項字節(jié)也可以通過應(yīng)用程序在IAP模式下修改,但是ROP選項只能在ICP模式(通過SWIM)下被
修改。
2.ISP IAP ICP的概念(有待學(xué)習(xí)):
ISP:In System Programing, 在系統(tǒng)編程 程序完全下載
IAP:In applicating Programing,在應(yīng)用編程 我的理解是用應(yīng)用程序去修改芯片里邊固定的一些數(shù)據(jù)(與應(yīng)用編程無關(guān)的數(shù)據(jù))
ICP:In Circuit Programing, 在電路編程
3.stm8s芯片的備用功能重映射:
stm8s芯片上帶有很多備用的功能,這些功能必須使用重映射功能才能實現(xiàn),
重映射其實就是配置某個flash地址的某一位,使某個引腳具備備用功能或者默認功能的其中一個
而且一旦功能改,想恢復(fù)原來的功能必須重新寫入。
比如stm8s的PD4端口具有TIM2_CH1 功能和BEEP功能,默認的情況下是TIM2_CH1功能,
當我們要用到BEEP功能時必須寫選項字,將這個引腳重映射為BEEP功能。
寄存器:
stm8s的多個備選功能:
4.庫函數(shù)實現(xiàn)重映射
//對于stm8s的選項字地址為0x4803
#define Beep_OptionAdd 0x4803
void Set_Beep_OptionByte(void)
{
uint16_t Beep_Option_status;/*記錄激活備選功能Beep/TIM2_CH1的狀態(tài)*/
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,恢復(fù)TIM2_CH1通道*/
}
}