//主功能接受:使用MCU STM8S105C6 的PWM通道2 PC2 来做呼吸灯 已经验证OK,呵
//呵,这个PWM设置刚开始用还是有点麻烦,因为是自己摸索,花点时间,还是攻克了。
//所用子函数都是调用STM8S的库函数stm8s_tim.c中的。
宏定义:
//分频宏
//计数器的时钟频率(fCK_CNT)等于fCK_PSC/( PSCR[15:0]+1)。
#define TIM1_PRESCALER_1 ((u16)0x00)
#define TIM1_PRESCALER_2 ((u16)0x01)
#define TIM1_PRESCALER_3 ((u16)0x02)
#define TIM1_PRESCALER_4 ((u16)0x03)
#define TIM1_PRESCALER_5 ((u16)0x04)
// PWM 频率设定
#define MDIV2
//16M 2分频的设置
#if defined(MDIV2)
#define TIM1_DIV_SET TIM1_DIV2
#define PWMFRE_8KHZ 1000//主频率 16M/2=8M 1/8K=1/8M*1000 周期 0.125us
#define PWMFRE_4KHZ 2000
#define PWMFRE_2KHZ 4000
#define PWMFRE_1KHZ 8000
#define PWMFRE_05KHZ 16000
#define PWMFRE_025KHZ 32000
#define PWMFRE_020KHZ 40000//200HZ 周期5000us /0.125 =40000
#define PWMFRE_38KHZ 210//用于红外38KHZ载波
#define PWMFRE_OPEN 70//1/3的PWM占空比
#else
//16M 不分频的设置
#define TIM1_DIV_SET TIM1_DIV1
#define PWMFRE_8KHZ 2000
//1/8K=1/16M*2000
#define PWMFRE_4KHZ 4000
#define PWMFRE_2KHZ 8000
#define PWMFRE_1KHZ 16000
#define PWMFRE_05KHZ 32000
#define PWMFRE_025kHZ 64000
#define PWMFRE_38KHZ 421//用于红外38KHZ载波
#define PWMFRE_OPEN 140//1/3的PWM占空比
#endif
//初始化调用:
TIM1_PrescalerConfig(TIM1_PRESCALER_2,TIM1_PSCRELOADMODE_IMMEDIATE);
//1分频即不分配 允许事件更新
TIM1_OC2Init
(TIM1_OCMODE_PWM1,TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_ENABLE,
0,TIM1_OCPOLARITY_LOW,TIM1_OCNPOLARITY_HIGH,
TIM1_OCIDLESTATE_SET,TIM1_OCNIDLESTATE_SET);
//PWM1模式
TIM1_CounterModeConfig(TIM1_COUNTERMODE_UP);//向上计数模式
TIM1_ARRPreloadConfig(ENABLE);//重新预装载使能
TIM1_OC2PreloadConfig(ENABLE);//比较器2预状态使能
TIM1_SetCounter(0);//初始化计数值
TIM1_SetAutoreload(PWMFRE_020KHZ);//0.125us周期 40*0.125=5us 200khz 周期
是5us 5/0.125
TIM1_SetCompare2(0);//占空比值
TIM1_CtrlPWMOutputs(ENABLE);//PWM控制使能
TIM1_Cmd(ENABLE);//使能TIM1计数
TIM1_CCxNCmd(TIM1_CHANNEL_2,ENABLE);//第二通道 输出使能
//主程序调用(10ms执行1次):
//更改占空比
if(F_ADD)
{
PWMVal += 100;
if( PWMVal >= 2000)
{
F_ADD = 0;
}
}
else
{
PWMVal -= 100;
if( PWMVal <= 100)
{
F_ADD = 1;
}
}
TIM1_SetCompare2(PWMVal);
上一篇:STM8S TIM4库函数应用
下一篇:STM8的AWU应用体会
设计资源 培训 开发板 精华推荐
- LDK130M12R 1.2V、300 mA 低静态电流极低噪声 LDO 的典型应用可调版本电路
- 使用 STM8L-DISCOVERY 构建波发生器
- stm32g03xf6/8 迷你板【最小系统】【开发板】
- LT8608IMSE 3.3V 降压型稳压器的典型应用电路
- 仪器模拟放大
- 用于微功率 A/D 转换器的 LT1634BIS8-4.096 电压基准的典型应用
- ADP7156ARDZ-1.8-R7 1.8V 输出电压、1.2A、超低噪声、高 PSRR、RF 线性稳压器的典型应用
- R1242S 30V 输入、3A 降压 DC/DC 转换器的典型应用
- VG7050EAN-EVB、VG7050EAN 评估板,通过 I2C 总线设置寄存器
- 【航顺训练营】基于航顺MCU&涂鸦模组的物联网定时器时钟