我想用这个芯片来使一个灯慢慢的变亮,之后又慢慢的变暗。 但是我的写的程序,灯亮着,但是一直没有变化,希望大家能帮我找一下原因。 谢谢 下面是我的主程序,还有timer.c程序。 #include "timer.h" #include "stm32f0xx.h" #include "sys.h" void TIM16_PWM_Init(uint16_t arr,uint16_t psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16,ENABLE);//使能定时器16时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_Level_2; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_2);//映射外设端口 //初始化定时器 TIM_TimeBaseInitStructure.TIM_ClockDivision=0; TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period=arr; TIM_TimeBaseInitStructure.TIM_Prescaler=psc; TIM_TimeBaseInit(TIM16,&TIM_TimeBaseInitStructure); TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OC1Init(TIM16,&TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM16,TIM_OCPreload_Enable); TIM_Cmd(TIM16,ENABLE); } #include "stm32f0xx.h" #include "timer.h" void Delay (uint32_t nCount); int main(void) { uint16_t ledpwmval=0; uint8_t dir=1; SystemInit(); SysTick_Config(3000); SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); TIM16_PWM_Init(299,0); while(1) { //Delay(10); if(dir) ledpwmval++; else ledpwmval--; if(ledpwmval>100)dir=0; if(ledpwmval==0)dir=1; TIM_SetCompare1(TIM16,ledpwmval); } } void Delay (uint32_t nCount) { for(; nCount != 0; nCount--); } |
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
再就是确认下 TIM_SetCompare1(TIM16,ledpwmval); 函数启作用没有,在里面修改CCR吧。
我用示波器测了,没有波形。
这个是F0系列的芯片,配置跟其他有一些不一样。
GPIO时钟即复用配置
TIMER时钟
PWM的ARR,CCR,OC模式等。
感觉你在TIM_SetCompare1(TIM16,ledpwmval);调整CCR。
你先给他个合适的CCR,跑起来看到脉冲再说。
这个不要注销啊,注销了,PWM频率变的太快,你是看不出效果的。这个延时控制在20ms左右,应该就能看到慢慢变灭再变亮的过程。
评分
查看全部评分