历史上的今天
今天是:2025年05月20日(星期二)
2018年05月20日 | stm8之OptionByte的使用
2018-05-20 来源:eefocus
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串口打印调试信息
史海拾趣
|
嵌入式linux操作系统资料汇总 1:入门资料 大家有什么好的资料可以上传噢! [ 本帖最后由 daicheng 于 2009-9-25 11:33 编辑 ]… 查看全部问答> |
|
/* ********************************************************************************************************* *   ...… 查看全部问答> |
|
VS2005的Platform Builder插件过期了,求解决方法! 很早之前安装了VS2005和Platform Builder用来开发winCE6.0,近期刚好有一项目需要用winCE6.0 来开发,今天准备建个winCE6.0的工程才发现软件过期了(180天试用版).超级郁闷! 在这里请教各位高手,在不重装PB插件和修改电脑系统时间的前提下有什么好的 ...… 查看全部问答> |
|
为什么我加了 jtagWait()函数,程序就进入死循环出不来了? // 防止JTAG失效 void jtagWait(void) { SysCtlPeriEnable(KEY_PERIPH); // 使能 ...… 查看全部问答> |




