首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32高级定时器

STM32高级定时器

/
定时器1的配置 输出两路PWM信号 PA8 PA11
计数时钟为400KHZ 计数溢出大小为40000 /
void Tim1Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStruct;
TIM_OCInitTypeDef TIM_OCInitStruct;
      
u16LeftMotor_CCR;  
u16 RightMotor_CCR;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1
                    | RCC_APB2Periph_GPIOA
                    | RCC_APB2Periph_AFIO, ENABLE);

   
GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_8 | GPIO_Pin_11 ; // 定时器1通道1和4
GPIO_InitStruct.GPIO_Mode  =GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);


LeftMotor_CCR = RightMotor_CCR = 2000;

  //在APB2设置为72MHZ的基础上,对定时器1进行配置
TIM_TimeBaseInitStruct.TIM_RepetitionCounter =0;            //重复计数器无效*/      
TIM_TimeBaseInitStruct.TIM_CounterMode =TIM_CounterMode_Up; // 向上计数 */
TIM_TimeBaseInitStruct.TIM_ClockDivision =TIM_CKD_DIV1;     //时钟分频 */
TIM_TimeBaseInitStruct.TIM_Prescaler =180-1;               // 预分频系数为180-1,计数器时钟为72MHz/180 = 400KHz*/              
TIM_TimeBaseInitStruct.TIM_Period =40000-1;                 //1)设置计数溢出大小,每计40000个数就产生一个更新事件,
                  2)捕获比较器的值不能大于此值
                  3)计数器时钟400KHZ,每个更新事件为100ms,即脉冲周期为0.1S
                  */
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStruct);

TIM_OCInitStruct.TIM_OutputNState =TIM_OutputNState_Disable;

TIM_OCInitStruct.TIM_OCMode =TIM_OCMode_PWM2;
TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_OCPolarity  = TIM_OCPolarity_Low;

TIM_OCInitStruct.TIM_Pulse =LeftMotor_CCR;  
TIM_OC1Init(TIM1, &TIM_OCInitStruct);

TIM_OCInitStruct.TIM_Pulse =RightMotor_CCR;
TIM_OC4Init(TIM1, &TIM_OCInitStruct);
TIM_Cmd(TIM1, ENABLE);
TIM_CtrlPWMOutputs(TIM1, ENABLE);

}
继承事业,薪火相传
返回列表