搜索
bottom↓
回复: 44

STM8S配置字节 OptionByte 的详解 +如何编程配置字

  [复制链接]

出0入0汤圆

发表于 2012-6-17 19:51:58 | 显示全部楼层 |阅读模式
STM8S的配置字节OPTION BYTE

这一章节我们将详细说明一下STM8S的OptionByte 。在此只以STM8S-EK开发
板上的主控制芯片STM8S208R8做为目标芯片来讲解。
本章主要解决以下问题:
1.什么是STM8S的配置字 OptionByte
2.Option Byte 里面的位都表示什么
3.如何编程Option Byte

一 选项字节(OptionByte)
        STM8S的配置字类似于AVR的Fuse熔丝位。用于配置端口的复用功能和读保护等操作。不同于AVR的熔丝位,STM8S的时钟配置并不在Option Byte中,不会出现写完STM8S后芯片直接锁死的尴尬。
        选项字节用于配置硬件特性和存储器保护状态,这些字节位于同一页的特定存储器阵列中。 选项字节可以在ICP/SWIM模式中或IAP模式中修改, 也就是可以通过STlink 写配置字,或者是通过程序写选项字。
        当需要开启端口的第二功能时,需要考虑选项字节的编程,否则将不能实现程序所想要的功能。

例如,STM8S的有一个蜂鸣器控制器BEEP,这BEEP对应的端口是PD4.但是PD4有两个复用功能,它可以是

     1.AFR7=1  BEEP蜂鸣器的输出
     2.AFR7=0  Tim2 比较输出1 也就是Tim2_CC1

        用户必须在这两个功能中选择一个,只能选择一个。那如何使PD4是BEEP输出呢?
答案是通过设置Option byte 选项字,将AFR7配置成1,使用PD4输出的是BEEP的信号,否则,PD4将输出的是Tim2_CC1的信号 。
当然,任何的配置,用户还是可以像普通的IO一样来使用PD4。


更详细的图文说明 :




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2012-6-19 14:24:57 | 显示全部楼层
作为参考很不错。谢谢楼长!

出0入0汤圆

发表于 2012-6-20 17:54:12 | 显示全部楼层
学习了。。。。

出0入0汤圆

发表于 2012-6-25 11:01:19 | 显示全部楼层
开始学习STM8!标记楼主文档!

出0入0汤圆

 楼主| 发表于 2012-6-25 12:00:53 | 显示全部楼层
使用程序修改 OptionsByte的例子:


//OPT 数组从STVP得到
unsigned char OPT[9]={0,0,0x80,0,0,0,0,0,0x55};

void Write_OPT(void)
{

do{
        FLASH_DUKR = 0xae;
        FLASH_DUKR = 0x56;
        }
        while(!(FLASH_IAPSR & 0x08)); //解锁Flash

        FLASH_CR2 = 0x80; //对选项字节进行写操作被使能
        FLASH_NCR2 = 0x7f; //互补控制寄存器
*((unsigned char *)0x4800) = OPT[0]; //OPT0   Read-out Protection

*((unsigned char *)0x4801) = OPT[1]; //OPT1   User boot code
*((unsigned char *)0x4802) = ~OPT[1]; //OPT1N  Complementary of User boot code

*((unsigned char *)0x4803) = OPT[2]; //OPT2   Alternate function remapping
*((unsigned char *)0x4804) = ~OPT[2]; //OPT2N  Complementary of Alternate function

*((unsigned char *)0x4805) = OPT[3]; //OPT3   Watchdog option
*((unsigned char *)0x4806) = ~OPT[3]; //OPT3N  Complementary of Watchdog option

*((unsigned char *)0x4807) = OPT[4]; //OPT4   Clock Option
*((unsigned char *)0x4808) = ~OPT[4]; //OPT4N  Complementary of Clock Option

*((unsigned char *)0x4809) = OPT[5]; //OPT5   HSE Clock Startup
*((unsigned char *)0x480A) = ~OPT[5]; //OPT5N  Complementary of HSE Clock Startup

*((unsigned char *)0x480D) = OPT[7]; //OPT7   Flash wait states
*((unsigned char *)0x480E) = ~OPT[7]; //OPT7N  Complementary of Flash wait states

*((unsigned char *)0x487e) = OPT[8]; //OPTBL  Bootloader
*((unsigned char *)0x487f) = ~OPT[8]; //OPTBL  Complementary of Bootloader

}

出0入0汤圆

发表于 2012-6-25 13:25:55 | 显示全部楼层
刚学,MARK下

出0入0汤圆

发表于 2012-7-3 16:04:59 | 显示全部楼层
mark      

出0入0汤圆

发表于 2012-7-3 17:02:29 | 显示全部楼层
记下了,有需要买块开发板

出0入0汤圆

发表于 2012-7-3 17:04:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-7-3 17:08:41 | 显示全部楼层
谢谢楼主分享。

出0入0汤圆

发表于 2012-7-3 17:58:40 | 显示全部楼层
senbaby2 发表于 2012-7-3 17:02
记下了,有需要买块开发板

需要开发板吗,风驰STM8开发板配套27个例程和10多万字教程(基于库和寄存器),欢迎选购,需要的话,就看我的签名

出0入0汤圆

发表于 2012-8-23 10:57:44 | 显示全部楼层
楼主好人啊

出0入0汤圆

发表于 2012-10-20 22:54:55 | 显示全部楼层
为什么没有早点搜索到这篇文章啊,使用24M外部晶振遇到问题,害死我了!

出0入0汤圆

发表于 2012-12-18 12:14:43 | 显示全部楼层
呵呵,再来看看。。。

出0入0汤圆

发表于 2013-2-2 15:13:26 | 显示全部楼层
很好,thanks,解决了我的问题,在设计板子的时候,没有注意到 [] 引脚为alternative,用STVP修改option byte很简单。。。

出0入0汤圆

发表于 2013-3-6 16:25:55 | 显示全部楼层
谢谢,学习了

出0入0汤圆

发表于 2013-5-22 23:45:55 | 显示全部楼层
看过了,非常不错。谢谢。

出0入0汤圆

发表于 2013-6-13 17:32:10 | 显示全部楼层
学习了!!!

出0入0汤圆

发表于 2013-6-21 17:35:42 | 显示全部楼层
虽然是老贴了,不过最近才开始接触STM8,这个真心有用,感谢楼主

出15入118汤圆

发表于 2013-6-21 21:33:35 | 显示全部楼层
mark  这个真心有用

出0入0汤圆

发表于 2013-7-9 20:12:37 | 显示全部楼层
苦逼的找了几天的资料,终于找到了可以解决问题的文档,  灰常灰常干洗啊楼主!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2013-7-10 08:44:03 来自手机 | 显示全部楼层
这个确实很重要!尤其是使用外部晶振的时候要设置Complementary of Flash wait states

出0入0汤圆

发表于 2013-7-10 09:57:20 | 显示全部楼层
好资料,学习了

出0入0汤圆

发表于 2013-8-1 22:38:30 | 显示全部楼层
good job

出0入131汤圆

发表于 2013-8-27 22:50:39 | 显示全部楼层
我也遇到了同样的问题,顶下。

出50入8汤圆

发表于 2013-8-27 23:13:13 来自手机 | 显示全部楼层
mark                                 

出0入0汤圆

发表于 2013-10-17 16:18:00 | 显示全部楼层
楼主,请问一下有没有尝试过在ROP为0xAA的情况下再次去修改这个地方呢?我现在修改不了。但如果ROP不要保护就可以实现,

出0入0汤圆

发表于 2013-11-5 08:27:11 | 显示全部楼层
楼主说得很通俗易懂,,真心感谢

出0入0汤圆

发表于 2013-11-14 16:31:02 | 显示全部楼层
感谢……要不然就是不知道为什么……

出0入0汤圆

发表于 2013-12-8 10:48:08 | 显示全部楼层
太好了,MARK

出0入0汤圆

发表于 2013-12-8 23:00:45 | 显示全部楼层
下载学习!!

出0入0汤圆

发表于 2013-12-9 19:59:05 来自手机 | 显示全部楼层
记号一下

出0入95汤圆

发表于 2014-2-13 21:37:05 | 显示全部楼层
不错,记下了

出0入17汤圆

发表于 2014-2-13 23:07:54 | 显示全部楼层

努力学习一下~

出0入0汤圆

发表于 2014-2-23 11:44:31 | 显示全部楼层
多谢LZ无私分享!~

出0入8汤圆

发表于 2014-4-2 16:05:08 | 显示全部楼层
这个非常有用,谢谢了,

出0入0汤圆

发表于 2014-4-2 21:38:35 | 显示全部楼层
谢谢                     

出0入0汤圆

发表于 2014-4-8 13:46:18 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2014-4-8 14:04:34 | 显示全部楼层
好久没弄stm8了

出0入0汤圆

发表于 2014-4-8 15:36:13 | 显示全部楼层

下载学习!!

出0入0汤圆

发表于 2014-6-1 17:44:17 | 显示全部楼层
非常有用,正好在做个PWM,要用到!mark

出0入0汤圆

发表于 2014-7-20 17:22:17 | 显示全部楼层
收藏了谢谢!

出0入0汤圆

发表于 2014-9-3 14:28:27 | 显示全部楼层
收下了,谢谢

出0入0汤圆

发表于 2015-8-28 09:41:54 | 显示全部楼层
收藏了  谢谢

出0入0汤圆

发表于 2017-8-14 17:04:51 | 显示全部楼层
mark  good!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 17:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表