STM32

您所在的位置:网站首页 1n的和函数 STM32

STM32

2024-01-23 23:10| 来源: 网络整理| 查看: 265

TIM1 是 STM32 的高级定时器,功能很强大,它的每个通道都有对应的互补通道用来互补输出PWM。之前没使用过,今天要用来做 PWM 控制,花了好一番功夫才搞定。

记录下初始化代码: void Led_PWM_Init(u16 arr, u32 ckCnt, u16 CCR1_Val) { uint16_t pscValue = 0; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); GPIO_Config(); //PWM控制引脚初始化 TIM_DeInit(TIM1); /* Time Base configuration */ pscValue = (uint16_t)(SystemCoreClock / ckCnt) - 1; TIM_TimeBaseStructure.TIM_Prescaler = pscValue ; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //高级定时器特有 TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); /* Channel 1, 2,3 and 4 Configuration in PWM mode */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable; // TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High; TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set; TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //占空比 TIM_OC1Init(TIM1, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM1, ENABLE); TIM_CtrlPWMOutputs(TIM1, ENABLE); TIM_Cmd(TIM1, ENABLE); }

高级定时器做PWM的话和其他定时器一样的使用。只是配置不一样。 对于高级定时器来说,要有这句TIM_CtrlPWMOutputs(TIM1, ENABLE);使能PWM输出。 由于只是使用TIM1的通道1的互补通道,所以关闭通道1的 PWM 输出

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable;

打开通道1的互补通道的PWM的输出

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;

百度和对照别人的代码,搞了好久也没搞定不能控制亮度。后来发现是没有这句

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;

上面这句要和下面这句设置相反: 一个是TIM_OCIdleState_Reset、另一个是TIM_OCNIdleState_Set

TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Set;

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3