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

/******************************************************************************************
* 函数名称    : TIM3_Configuration
* 功能描述    : TIM3初始化函数
* 参数        :  无
* 返回值      :  无
* 全局变量    :  无
* 全局静态变量:  无
* 局部静态变量:  无
******************************************************************************************/
void TIM3_Configuration( )
{  
  GPIO_InitTypeDef          GPIO_InitStructure;
  TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;   
  TIM_OCInitTypeDef      TIM_OCInitStructure; 
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);   //打开APB2外设
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  //开时钟

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;    //PA6 PA7  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //要改为 AF_PP
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  TIM_DeInit(TIM3);                           //将TIM3寄存器设为缺省值
  TIM_TimeBaseStructure.TIM_Period=72-1;   //ARR的值,计数周期     
  TIM_TimeBaseStructure.TIM_Prescaler=36-1;      //分频  CK_INT=2MHz 36分频
  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式  
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);    //初始化定时器3
 
  //通道1
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle  ;
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出使能
  TIM_OCInitStructure.TIM_Pulse = 1-1 ;      //待捕获比较寄存器的值  CRR
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    //高电平有效
  TIM_OC1Init(TIM3, &TIM_OCInitStructure);     //通道初始化
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);  //预装载使能
  
  //通道2
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1  ;
   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出使能
  TIM_OCInitStructure.TIM_Pulse = 36-1 ;      //待捕获比较寄存器的值  CRR
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    //高电平有效
  TIM_OC2Init(TIM3, &TIM_OCInitStructure);     //通道初始化  
   
  TIM3->CNT = 0;
  TIM_Cmd(TIM3, ENABLE);//打开定时器
      
}

永不止步步 发表于12-14 09:11 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:345791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号