STM8L 使用discovery板输出PWM到LED的问题
STM8L 使用discovery板输出PWM到LED的问题我想用PWM(PD2)输出模拟信号到LED(PE7),实现LED的逐渐变亮(暗),
可是不成功,各位高手给指出错误吧,谢谢
void main(void)
{
/* Initialize LEDs mounted on STM8L152X-EVAL board */
GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(Button_GPIO_PORT, Button_GPIO_PINS, GPIO_Mode_In_FL_No_IT);
// PD2 TIM1 CH1设置
/* GPIO configuration: TIM1 channel 1 (PD2)*/
GPIO_Init(GPIOD, GPIO_Pin_2 , GPIO_Mode_Out_PP_Low_Fast);
/* Enable TIM1 clock */
CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
//设置TIM1 CH1输出PWM波
/* configure TIM1 channel 1 as PWM Output */
TIM1_OC1Init(TIM1_OCMode_PWM2,
TIM1_OutputState_Enable,
TIM1_OutputNState_Enable,
0x7FF,
TIM1_OCPolarity_Low,
TIM1_OCNPolarity_High,
TIM1_OCIdleState_Set,
TIM1_OCNIdleState_Reset);
/* Set TIM1 Autoreload value*/
TIM1_SetAutoreload(0xFFF);
//2M/4095=488.4HZ
// 使能
/* Enable TIM1 Outputs*/
TIM1_CtrlPWMOutputs(ENABLE);
/* Enable TIM1 */
TIM1_Cmd(ENABLE);
while (1)
{
}
}
RE:STM8L 使用discovery板输出PWM到LED的问题
如果控制LED的变化,是通过2种方式。通过控制电压的大小和通过控制电流的大小来实现的。通常建议使用电流来控制。 怎么没有初始化定时器tim1?看我的一个STM8L的使用TIM3输出PWM的初始化
void Buzzer_Init(void)
{
/* Enable TIM3 CLK */
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE); //允许TIM3外部时钟
GPIO_Init(Buzzer_PORT,Buzzer_PIN,GPIO_Mode_Out_PP_Low_Slow); //初始化蜂鸣器控制引脚
//使用TIM3定时器
TIM3_TimeBaseInit(TIM3_Prescaler_16,TIM3_CounterMode_Up,BUZZER_PERIOD);
//设置为16分频,向上计数模式,计数周期为1000
TIM3_OC1Init(TIM3_OCMode_PWM1,TIM3_OutputState_Enable, BUZZER_DUTY,TIM3_OCPolarity_High,TIM3_OCIdleState_Reset);
TIM3_OC1PreloadConfig(ENABLE); //输出比较1通道预加载使能
TIM3_CtrlPWMOutputs(ENABLE); //PWM输出使能
TIM3_Cmd(ENABLE);
} //使能
经实际测试初始化有效 您好!请问楼主问题解决了么,我是新手 ,遇到同样的问题,能指点一下么,谢谢 按时间改变PWM的占空比就可以了。。。。。。 zcl201207 发表于 2017-4-17 21:52
按时间改变PWM的占空比就可以了。。。。。。
新手,不懂额:(:(请指教
页:
[1]