在讲述之前,我们可以先简要了解pwm技术的用途。不说多的,我们用途比较广的首先可以是呼吸灯的制作,其次可用来给蜂鸣器发声使用,再有可以用作舵机控制,这些都是比较常见的用途。
那么我们如何进行配置使CPU输出pwm波形呢?我们可以了解一下datasheet介绍,如图1。
图1
tiM1高级定时器的功能
stm8s的pwm功能可由其高级定时器TIM1配置输出。TIM1有四个输出通道,我们选择其中一路TIM1-CH4,默认情况下,其对应的CPU端口在PC4,如图2 AFR7位。
图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波形。