stm8之OptionByte的使用
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功能。
寄存器:
stm8s的多個備選功能:
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通道*/
}
}
上一篇:STM8串口打印調試信息
- Keil MDK破解過程詳解[18年05月20日 11:11]
- STM32F407之模擬I2C(二)之24C128[18年05月20日 12:18]
- STM32F1使用I/0模擬I2C接口[18年05月20日 12:17]
- STM32模擬I2C程序[18年05月20日 12:13]
- STM8S 模擬I2C程序[18年05月20日 12:14]
- 普通IO口模擬實現I2C通信及應用解析[18年05月20日 12:12]