历史上的今天
今天是:2025年02月13日(星期四)
2019年02月13日 | STM8S105系列单片机管脚复用配置(选项字节的配置)
2019-02-13 来源:eefocus
以STM8S105K4T6C为例,实现PB0管脚复用成TIM1_CH1N
(1)STM8S复用功能(芯片引脚加"[ ]"的功能):通过配置flash中的选项字节来实现
除了ROP(读出保护)字节,每个选项字节必须被保存两次,一个通常的格式(OPTx)和一个用来备份的互补格式(NOPTx)
参见STM8S105xx数据手册(如下图),可知备选功能重映射选项5(AFR5)负责管理PB0端口的重映射功能,将其设置为1即实现PB0重映射为TIM1_CH1N


相关代码:
void Flash_Init()
{
FLASH_DeInit(); //恢复FLASH相关寄存器到默认值
FLASH_Unlock(FLASH_MEMTYPE_DATA); //解锁数据EEPROM
FLASH_ProgramOptionByte(0x4803, 0x20); //选项字节 打开PB0的复用功能
FLASH_ProgramOptionByte(0x4804, 0xDF);
}
(2)TIM1_CH1N是TIM1_CH1的互补输出比较
TIM1_CH1N是TIM1_CH1的反相,可用于TIM1的同步PWM模式
当只选择TIM1_CH1N输出PWM时,需要Disable输出比较,Enable互补输出比较
相关代码:
void Time1_Init()
{
CLK->CKDIVR=0x00;
TIM1_TimeBaseInit(1599,TIM1_COUNTERMODE_UP,5000,0); //分频1600,向上计数,TIM1_ARR=20000,重复计数器为0
/*OC1初始化:PWM1模式
输出不使能
互补输出使能
CCR1=8000,占空比为50%
输出有效极性为高(无作用
互补输出有效极性为高
空闲时输出高(无作用)
空闲时互补输出高
*/
TIM1_OC1Init(TIM1_OCMODE_PWM1,
TIM1_OUTPUTSTATE_DISABLE,
TIM1_OUTPUTNSTATE_ENABLE,
5000,
TIM1_OCPOLARITY_HIGH,
TIM1_OCNPOLARITY_HIGH,
TIM1_OCIDLESTATE_SET,
TIM1_OCNIDLESTATE_SET);
TIM1_OC1PreloadConfig(ENABLE);
TIM1_CtrlPWMOutputs(ENABLE); //PWM输出使能
TIM1_Cmd(ENABLE); //定时器开始计数
}
选项字节的配置一般有两种方式:
(1)使用STlink修改选项字节
打开STVP进行相关设置,可参见
https://wenku.baidu.com/view/205181b2d0d233d4b14e69fa.html
点击打开链接
(2)通过程序修改选项字节
实现程序擦Option Bytes时,不能运行程序,否则会出现错误
一般不建议通过程序修改选项字节,容易出错
上一篇:STM8S复位总结
史海拾趣
|
新闻早班车:Microchip新增低功耗多外设的8位PIC MCU 呵呵 之前做了我看IC,感觉主题不够明确,这次起了一个很炫的标题, 本人关注一些圈里的新鲜技术,会每隔几天记录如下,期望与大家分享所获得的信息,也希望大家可以对此进行讨论: Microchip新增低功耗多外设的8位PIC MCU https://www.eeworld. ...… 查看全部问答> |
|
浅谈CPU的执行效率与内部的执行管道流水线 原创作者:上海 姚臻 为什么实际频率只有1.8G的AMD 2500+处理器运行速度比实际频率2.4G的P4-2.4B还快?为什么采用0.13微米制程的Tulatin核心的处理器最高只能做到1.4G,反而采用0.18微米制程的Willamett ...… 查看全部问答> |




