| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /*--------------------------------------------------------------------------------------
- * @file TimerSetup.c
- * @author ZhangJing
- * @version base on stm32f0x
- * @date 2015.09.11
- * @brief 定时器驱动
- ---------------------------------------------------------------------------------------*/
- #include "stm32f10x_rcc.h"
- #include "stm32f10x_gpio.h"
- #include "stm32f10x_tim.h"
- #include "TypeDefine.h"
- #include "TimerSetup.h"
- /*********************************************************************************
- * Function: MotorPWMInit
- * Object: 电机PWM初始化
- * 输入: 无
- * 输出: 无
- * 备注: 用TIM1做PWM,控制电机转速
- **********************************************************************************/
- void MotorPWMInit( void )
- {
- TIM_OCInitTypeDef TIM_OCInitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_DeInit(TIM1);
- /* TIM1模块初始化 */
- /* TIM1基本计数器设置(设置PWM频率) */
- /* 频率 = TIM1_CLK/(ARR+1) */
- TIM_TimeBaseStructure.TIM_Period = 1000 - 1;
- TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
- TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
- /* 启动ARR的影子寄存器(直到产生更新事件才更改设置) */
- TIM_ARRPreloadConfig(TIM1, ENABLE);
- //PWM模式设置 与通道设置TIM1_CH1(设置1通道占空比)
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
- TIM_OCInitStructure.TIM_Pulse = 0; //当计数器到达127时,电平发送跳变
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //当计数器<127时,PWM为高电平
- TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low; //当计数器<127时,PWM为高电平
- TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //???????1
- TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; //?????????0
- TIM_OC1Init(TIM1, &TIM_OCInitStructure);
- //开启TIM1
- TIM_Cmd(TIM1, ENABLE);
- TIM_CtrlPWMOutputs(TIM1, ENABLE);
- TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);//Disable
- }
|