STM8S---选项字节(Option Byte)写操作之IO复用
来源:互联网 发布:中国高铁网络 编辑:程序博客网 时间:2024/05/19 02:18
原文地址::http://blog.csdn.net/FreeApe/article/details/47008033
相关文章
1、[STM8] 继续针对STM8S的Option byte寻求答案----http://bbs.21ic.com/icview-243976-3-1.html
功能实现目标
通过对选项字节的写操作来实现TIM2的CH3通道的PWM输出IO复用,可以设置为PA3或者PD2输出。
通过STVP方式操作链接
选项字节
选项字节包括芯片硬件特性的配置和存储器的保护信息,这些字节保存在存储器中一个专用的块内。除了ROP(读出保护)字节,每个选项字节必须被保存两次,一个是通常的格式(OPTx)和一个用来备份互补格式的(NOPTx)。选项字节可以通过应用程序在IAP模式下修改,但是ROP选项只能在ICP模式(通过SWIM)下被修改。有关SWIM编程过程的内容可以参考STM8S闪存编程手册(PM0051)和STM8 SWIM通信协议和调试模块用户手册(UM0470)。
不同的芯片的选项字节大小不一样,具体的可以参考芯片数据手册。如用STM8S103F3来举例,选项字节如下:
STM8S103F对于20脚封装的产品的复用功能重定义位:
由此可知我们要将OPT2字节中的AFR1位进行写操作,通过写0,则端口A3复用功能TIM2_CH3,通过写1,端口D2复用功能TIM2_CH3。接下来通过程序实现这个功能,可以修改AFR1的值来看PWM输出是否切换了管脚,如果能,则是实现了写操作。
选项字节存放在EEPROM中,所以可以通过读写EEPROM一样的操作方式来修改选项字节。应用程序可以直接向目标地址进行写操作。地址从上面的图中我们已经知道了:0x4803,0x4804。寄存器的配置可以查阅参考手册(RM0016)。
相关寄存器操作:
测试程序实现
注意:实现程序擦写Option Bytes时,不能运行应用程序,否则会出现错误!不过还是觉得这点麻烦啊,还不如用STVP来擦写,要是能够放在应用程序中共存来擦写就好了,用程序实现复用就这么麻烦吗?希望能探索找到好的方法,最后只找到了个不靠谱的,就是在擦写后加上延时,但是这个时管用时不管用。还是再查阅资料看看是怎么回事?
但是用STVP擦写时又遇到了这个错误:
Error : Error on Option Bytes (complementary bytes). Reprogram Option Bytes of deviceError : < OPTION BYTE verifying failed.
用STVP来擦写Option Bytes了,先将ROP设置为ON,然后再擦写Option Bytes,会出现两个提示框,选择是(Y),再之后又将ROP设置为OFF,再次擦写Option Bytes,则又可以用STVD通过stlink来烧写程序并仿真了。
测试程序:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- STM8S---选项字节(Option Byte)写操作之IO复用
- STM8S---选项字节(Option Byte)写操作之IO复用
- STM8S---选项字节(Option Byte)写操作之IO复用
- OpenCart之选项(Option)教程
- 【STM8S】STM8S之电量采集
- STM8S IO外部中断
- 黑马程序员----JAVASE之IO流操作【字节流】
- Java IO操作之字节流和字符流
- java IO总结之字节流操作控制台输入输出
- java IO总结之字节流操作文件读写
- java IO流之-----字节流的操作
- IO操作之字节流和字符流
- java IO操作之字符、字节和编码
- IO之字节流
- IO之字节流
- IO之字节流
- IO之字节流
- 基于字节的IO操作
- Java SE、Java EE、Java ME三者的区别
- C++ 类型转换函数 与 explicit
- 图片加载失败或默认图片
- 微信小程序从注册到上线系列
- SpreadJS 在 Angular2 中支持绑定哪些属性?
- STM8S---选项字节(Option Byte)写操作之IO复用
- HttpClient发送Post请求(一)
- PX PT 磅 EM 以及PS中字间距VA单位的解释
- HBase性能调优(1.2官方文档)
- Maven,Gradle分别建立Spring-boot的demo工程
- 使用react-native-smart-splash-screen实现启动画面
- printf()函数和浮点数
- 增加VOICE_CALL的默认音量
- C++ API设计—— API简介