完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想用这个芯片来使一个灯慢慢的变亮,之后又慢慢的变暗。
但是我的写的程序,灯亮着,但是一直没有变化,希望大家能帮我找一下原因。 谢谢 下面是我的主程序,还有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--); } |
|
相关推荐
5个回答
|
|
先保证你的TIMER正常工作了,看看PWM出来没有。
再就是确认下 TIM_SetCompare1(TIM16,ledpwmval); 函数启作用没有,在里面修改CCR吧。 |
|
|
|
|
|
|
|
差不多的。
GPIO时钟即复用配置 TIMER时钟 PWM的ARR,CCR,OC模式等。 感觉你在TIM_SetCompare1(TIM16,ledpwmval);调整CCR。 你先给他个合适的CCR,跑起来看到脉冲再说。 |
|
|
|
|
|
|
|
先要保证有波形输出,再在灯的电源前面加个大点的电容(再串个电感更好),通过改变脉冲的宽度实现降压,当脉冲宽度较大时电压高、减小时电压低,就实现了呼吸灯
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
238 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
734 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1128 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1600 浏览 1 评论
538 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 00:07 , Processed in 0.670904 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号