完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void STM32_TIM3_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure; //在此犯了个错误,变量声明一定要写在函数最前面 RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); //复用时钟开 GPIO_AFIODeInit(); GPIO_PinRemapConfig(GPIO_FullRemap_TIM3 , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; //PC6复用为TIM3的通道1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); /*------------------------------------------------------------------- TIM3CLK=72MHz 预分频系数Prescaler=2 经过分频 定时器时钟为24MHz 根据公式 通道输出占空比=TIM3_CCR1/(TIM_Period+1),可以得到TIM_Pulse的计数值 捕获/比较寄存器2 TIM3_CCR1= CCR1_Val -------------------------------------------------------------------*/ //TIM_DeInit(TIM3); //TIM_OCStructInit(&TIM3_OCInitStructure); //设置缺省值 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM3_TimeBaseStructure.TIM_Prescaler = 2; //预分频器TIM3_PSC=3 TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器向上计数模式 TIM3_CR1[4]=0 TIM3_TimeBaseStructure.TIM_Period =23999; //自动重装载寄存器TIM3_APR 确定频率为1KHz,此处决定TIM3_CCR1最大为24000 TIM3_TimeBaseStructure.TIM_ClockDivision = 0x0; //时钟分频因子 TIM3_CR1[9:8]=00 TIM3_TimeBaseStructure.TIM_RepetitionCounter = 0x0; TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseStructure); //写TIM3各寄存器参数 TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM3_OCInitStructure.TIM_Pulse = CCR1_Val; //确定占空比,这个值决定了有效电平的时间。 TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性 低电平有效 TIM3_CCER[5]=1; TIM_OC1Init(TIM3, &TIM3_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM3_OCInitStructure.TIM_Pulse = CCR2_Val; //确定占空比,这个值决定了有效电平的时间。 TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性 低电平有效 TIM3_CCER[5]=1; TIM_OC2Init(TIM3, &TIM3_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM3_OCInitStructure.TIM_Pulse = CCR3_Val; //确定占空比,这个值决定了有效电平的时间。 TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性 低电平有效 TIM3_CCER[5]=1; TIM_OC3Init(TIM3, &TIM3_OCInitStructure); TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM3_OCInitStructure.TIM_Pulse = CCR4_Val; //确定占空比,这个值决定了有效电平的时间。 TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性 低电平有效 TIM3_CCER[5]=1; TIM_OC4Init(TIM3, &TIM3_OCInitStructure); TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); //TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输入/捕获2输出允许 OC2信号输出到对应的输出引脚PB5 TIM_Cmd(TIM3,ENABLE); //启动定时器3 TIM3_CR1[0]=1; } |
|
|
|
|
|
1321 浏览 1 评论
1057 浏览 1 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
642 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1602 浏览 2 评论
1828 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-26 05:00 , Processed in 0.493532 second(s), Total 59, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号