讲述stm8s单片机的pwm配置方法。我们可以先简要了解pwm技术的用途。不说多的,我们用途比较广的首先可以是呼吸灯的制作,其次可用来给蜂鸣器发声使用,再有可以用作舵机控制,这些都是比较常见的用途。那么我们如何进行配置使CPU输出pwm波形呢?我们可以了解一下datasheet介绍,如图1。
4e6a0004c1453d3448db?from=pc.jpg
图1 TIM1高级定时器的功能
stm8s的pwm功能可由其高级定时器TIM1配置输出。TIM1有四个输出通道,我们选择其中一路TIM1-CH4,默认情况下,其对应的CPU端口在PC4,如图2 AFR7位。
4e6e0001c13d5172385a?from=pc.jpg
图2 TIM1映射端口
接下来我们通过软件编程介绍一下TIM1的pwm技术(假设我们主时钟使用8M)。
#define BIT(n) (1<<(n))
//(1)设置端口P4
GPIOC->DDR |= 0X10; //PC4设输出模式
GPIOC->CR1 |= 0X01; // PC4设为推挽输出
GPIOC->CR2 = 0X0;
//(2)设置TIM1

TIM1->CR1 &= ~BIT(0); //关闭TIM1
TIM1->PSCRH = 0;
TIM1->PSCRL = 0x40; //64分频 8M/64=0.125M
TIM1->ARRH = 0Xf4;
TIM1->ARRL = 0X23; //0.125MHz/(62499+1) = 2Hz
TIM1->CR1 |= BIT(7); //使能ARP,边沿对齐,向上计数
TIM1->EGR |= BIT(0); //更新TIM1,使PSC有效
TIM1->EGR|=0x20;//重新初始化TIM1
TIM1->CCR4H = 0X7a;
TIM1->CCR4L = 0X12; //占空比50%
TIM1->CCMR4 = 0X68; //配置TIM1_CH4为PWM1模式输出
TIM1->CCER2 |= BIT(4); //Enable TIM1_CH4 channel
TIM1->BKR |= BIT(7);
TIM1->CR1 |= BIT(0); //使能TIM1
通过以软件配置,使得CPU输出pwm波形。