为什么STM8的PWM用TIM1不能输出,TIM2可以,下面针对TIM1的PWM输出做了下列程序代码的编写。
STM8S系列单片机
PC1管脚来控制PWM的输出,即TIM1_CH1通道
PC2管脚来控制PWM的输出,即TIM1_CH2通道
PC3管脚来控制PWM的输出,即TIM1_CH3通道
//PWM初始化
void Driver_PWMON(u8 ch,u8 Num)
{
//开TIM1时钟
CLK->PCKENR1 |= CLK_PCKENR1_TIM1;
//设置PWM频率,Fpwm=Fmaster/TIM2_ARR
//这里Fpwm = 2000000/100 = 20K
TIM1->ARRH = 0;
TIM1->ARRL = 100;
//启动计数,开始PWM输出
TIM1->BKR |= TIM1_BKR_MOE;
switch(ch)
{
case 1:
TIM1->CCMR1 |= 0x70;//设置TIM1_CH1为PWM模式2 有效电平为高电平
pwm_ch_on(1);//开启TIM1_CH1 通道输出
TIM1->CCR1H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR1L = Num;
break;
case 2:
TIM1->CCMR2 |= 0x70;//设置TIM1_CH2为PWM模式2 有效电平为高电平
pwm_ch_on(2);//开启TIM1_CH1 通道输出
TIM1->CCR2H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR2L = Num;
break;
case 3:
TIM1->CCMR3 |= 0x70;//设置TIM1_CH3为PWM模式2 有效电平为高电平
pwm_ch_on(3);//开启TIM1_CH1 通道输出
TIM1->CCR3H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR3L = Num;
break;
case 4:
TIM1->CCMR4 |= 0x70;//设置TIM1_CH4为PWM模式2 有效电平为高电平
pwm_ch_on(4);//开启TIM1_CH1 通道输出
TIM1->CCR4H = 0;//初始化PWM通道占空比 1:1
TIM1->CCR4L = Num;
break;
}
TIM1->CR1 |= TIM1_CR1_CEN;
}
//PWM占空比调节 0-100
void Driver_PWMSet(u8 ch,u8 Num)
{
if(Num > 100)
return;
switch(ch)
{
case 1:
TIM1->CCR1L = Num;
break;
case 2:
TIM1->CCR2L = Num;
break;
case 3:
TIM1->CCR3L = Num;
break;
case 4:
TIM1->CCR4L = Num;
break;
}
}
//打开PWM通道
void pwm_ch_on(u8 ch)
{
switch(ch)
{
case 1:
TIM1->CCER1 |= 0x01;
break;
case 2:
TIM1->CCER1 |= 0x10;
break;
case 3:
TIM1->CCER2 |= 0x01;
break;
case 4:
TIM1->CCER2 |= 0x10;
break;
}
}
//关闭PWM通道
void pwm_ch_close(u8 ch)
{
switch(ch)
{
case 1:
TIM1->CCER1 &= ~0x01;
break;
case 2:
TIM1->CCER1 &= ~0x10;
break;
case 3:
TIM1->CCER2 &= ~0x01;
break;
case 4:
TIM1->CCER2 &= ~0x10;
break;
}
}
//运行主函数
int main(void)
{
Driver_PWMON(1,0);
Driver_PWMON(2,0);
Driver_PWMON(3,0);
while(1)
{
u8 a= 0,b=0;
for(b=1 ;b<4; b++)
{
for(a=1;a<99;a++)
{
Driver_PWMSet(b,a);
delay_ms(5);
}
for(a=99;a>0;a--)
{
Driver_PWMSet(b,a);
delay_ms(5);
}
}
}
}
TIM2的跟TIM1的区别是:TIM1->BKR |= TIM1_BKR_MOE;
TIM2不需要配置这个寄存器。
OCi的输出使能通过(TIM1_CCERi和TIM1_BKR寄存器中)CCiE、MOE、OISi和OSSR位和OSSI位的组合来控制。
上一篇:STM8S的按键PWM调光灯历程
下一篇:STM8S TIM2 输出PWM初始化函数
推荐阅读最新更新时间:2024-11-10 16:24
设计资源 培训 开发板 精华推荐
- DC2199B-C,用于 LTC3765 和 LTC3766 具有同步整流功能的 300W 隔离式正向转换器的演示板
- 用于自动测试设备的 16 位、1CH DAC
- 车充头改A口
- 用于仪表的 ±18V 差动放大器
- 具有最大功率点跟踪功能的 LTC4162EUFD-FAD 太阳能供电 3 节 3.2A 充电器的典型应用
- STR-1KW-MDK-GEVK:1kW 600V 工业电机开发套件 (MDK),带有紧凑型智能功率模块 (IPM) 板和通用控制器板 (UCB)
- MIKROE-3400,用于 AL1781 高亮度 LED 驱动器的 LED 驱动器 6 Click 板,设计用于可调谐智能连接照明 (SCL) 应用
- 160W、35V 交流转直流单路输出电源
- CH32V307VCT6最小系统
- LT3763EFE 20A、同步、5V 稳压器的典型应用电路