Option Byte如何实现CH3通道PWM输出IO复用

Option Byte如何实现CH3通道PWM输出IO复用,第1张

功能实现目标

通过对选项字节的写 *** 作来实现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 device

Error : 《 OPTION BYTE verifying failed.

123

用STVP来擦写Option Bytes了,先将ROP设置为ON,然后再擦写Option Bytes,会出现两个提示框,选择是(Y),再之后又将ROP设置为OFF,再次擦写Option Bytes,则又可以用STVD通过stlink来烧写程序并仿真了。


Option Byte如何实现CH3通道PWM输出IO复用,Option Byte如何实现CH3通道PWM输出IO复用,第2张
Option Byte如何实现CH3通道PWM输出IO复用,Option Byte如何实现CH3通道PWM输出IO复用,第3张
Option Byte如何实现CH3通道PWM输出IO复用,Option Byte如何实现CH3通道PWM输出IO复用,第4张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2717968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存