历史上的今天
今天是:2025年01月30日(星期四)
2020年01月30日 | STM8S的TIM1 PWM设置(寄存器版本)
2020-01-30 来源:eefocus
1. 概述
脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRi寄存器确定占空比的信号。
2. 芯片资料
参考STM8S datasheet如下资料:
在TIM1_CCMRi寄存器中的OCiM位写入’110’(PWM模式1)或’111’(PWM模式2),能够独立地设置每个OCi输出通道产生一路PWM。必须设置IM1_CCMRi寄存器的OCiPE位使能相应的预装载寄存器,也可以设置TIM1_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数模式或中央对称模式中)。
由于仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIM1_EGR寄存器的UG位来初始化所有的寄存器。
OCi的极性可以通过软件在TIM1_CCERi寄存器中的CCiP位设置,它可以设置为高电平有效或低电平有效。 OCi的输出使能通过(TIM1_CCERi和TIM1_BKR寄存器中)CCiE、 MOE、 OISi和OSSR位和OSSI位的组合来控制。详见TIM1_CCERi寄存器的描述。
在PWM模式(模式1或模式2)下, TIM1_CNT和TIM1_CCRi始终在进行比较, (依据计数器的计数方向)以确定是否符合TIM1_CCRi≤TIM1_CNT或者TIM1_CNT≤TIM1_CCRi。
根据TIM1_CR1寄存器中CMS位域的状态,定时器能够产生边沿对齐的PWM信号或中央对齐的PWM信号。

参考上图可以确定需要设置的寄存器。
3. 应用
在项目中需要使用TIM1_CH3N作为PWM输出IO,所以暂以这个通道为例,设置PWM输出。
#define BLACKLIGHT_PWM_FRQ 640
void Blacklight_Init(void)
{
CLK->PCKENR1 |= 0x80;
//TIM1->EGR=0x01;//重新初始化TIM1
//TIM1->EGR|=0x20;//重新初始化TIM1
//初始化自动重装载寄存器,确定PWM 频率(16M的TIM1 CLK)
TIM1->ARRH = (u8)(BLACKLIGHT_PWM_FRQ >> 8);
TIM1->ARRL = (u8)(BLACKLIGHT_PWM_FRQ & 0xff);
//初始化比较寄存器,决定PWM 方波的占空比 , 暂时设置50%的占空比。
TIM1->CCR3H = (u8)((BLACKLIGHT_PWM_FRQ/2) >> 8);
TIM1->CCR3L = (u8)((BLACKLIGHT_PWM_FRQ/2) & 0xff);
//初始化比较模式寄存器
TIM1->CCMR3 = 0x68;
//初始化使能寄存器
TIM1->CCER2 = 0x04;
//初始化刹车寄存器
TIM1->BKR |= 0x80;
// 启动计数
TIM1->CR1 |= 0x01;
}
注意: STM8S在烧录前,需要将PB2(TIM1_CH3N)的功能重新映射,通过STVP修改OPTION BYTE页中的AFR5项来完成。
下一篇:STM8SPWM频率调节方式
史海拾趣
|
启动代码中堆栈的初始化是不是只是定义一下要用到的堆的长度,比如IRQ中断,按书上说堆空间是要自己申请的,而栈是系统自动分配的,要是这样的话那初始化就应该是只对堆的长度进行定义了?还有就是我怎么确定要定义多长的堆栈空间呢?谢谢了!… 查看全部问答> |
|
大家帮我看看,我用厂家提供的BSP生成的OS 在开发板上无法启动,有详细信息,该如何修改 下面的情况均在厂家提供的开发板上试验 内存情况: 内存:64MByte SDRAM(2片16位的SDRAM芯片组成32位接口) NOR Flash:32MByte内存(2片intel E28F128组成32位接口) 测试的BSP有下面两个 ...… 查看全部问答> |
|
请问“要通过中断来实时接收100ms的数据”,这个机制怎么建立阿 我最近想做一个红外码学习器,在按下遥控按钮后,就把接收到的红外数据保存下来。但是,在多进程里面由于有调度问题,实时性很难控制,不知哪位高手做过没有,请帮忙指点一下阿… 查看全部问答> |
|
快过年了,希望eeworld能组织个TI DSP开发板的团购! 快过年了,还有点余钱,希望eeworld能组织个TI DSP开发板的团购,这样在假期中能够边玩边学,两不误。 希望有相同想法的同学们顶起!!!!!!!!!!… 查看全部问答> |
|
通过使用MSP430G2452微控制器的LaunchPad Value Line开发包实现基于心电图的心率监测 这是一个基于Launchpad的心率监测评估工程,资料非常详细,包括原理图,光绘文件,BOM表,源码,说明文档(中文)。 好好享受吧! … 查看全部问答> |




