[应用相关] 用STM32的一个定时器实现输出两路频率1x、2x的方波

[复制链接]
750|1
 楼主| wahahaheihei 发表于 2017-1-13 21:36 | 显示全部楼层 |阅读模式
  1. /******************************************************************************************
  2. * 函数名称    : TIM3_Configuration
  3. * 功能描述    : TIM3初始化函数
  4. * 参数        :  无
  5. * 返回值      :  无
  6. * 全局变量    :  无
  7. * 全局静态变量:  无
  8. * 局部静态变量:  无
  9. ******************************************************************************************/
  10. void TIM3_Configuration( )
  11. {  
  12.   GPIO_InitTypeDef          GPIO_InitStructure;
  13.   TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;   
  14.   TIM_OCInitTypeDef      TIM_OCInitStructure;
  15.   
  16.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);   //打开APB2外设
  17.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  //开时钟
  18.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;    //PA6 PA7  
  19.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //要改为 AF_PP
  20.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  21.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  22.   TIM_DeInit(TIM3);                           //将TIM3寄存器设为缺省值
  23.   TIM_TimeBaseStructure.TIM_Period=72-1;   //ARR的值,计数周期     
  24.   TIM_TimeBaseStructure.TIM_Prescaler=36-1;      //分频  CK_INT=2MHz 36分频
  25.   TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式  
  26.   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);    //初始化定时器3

  27.   //通道1
  28.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle  ;
  29.    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出使能
  30.   TIM_OCInitStructure.TIM_Pulse = 1-1 ;      //待捕获比较寄存器的值  CRR
  31.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    //高电平有效
  32.   TIM_OC1Init(TIM3, &TIM_OCInitStructure);     //通道初始化
  33.   TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  //预装载使能
  34.   
  35.   //通道2
  36.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1  ;
  37.    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出使能
  38.   TIM_OCInitStructure.TIM_Pulse = 36-1 ;      //待捕获比较寄存器的值  CRR
  39.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    //高电平有效
  40.   TIM_OC2Init(TIM3, &TIM_OCInitStructure);     //通道初始化  
  41.    
  42.   TIM3->CNT = 0;
  43.   TIM_Cmd(TIM3, ENABLE);//打开定时器
  44.       
  45. }


 楼主| wahahaheihei 发表于 2017-1-13 21:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

232

主题

3223

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部