專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> STM32 >> 瀏覽文章

用STM32的一個定時器實現(xiàn)輸出兩路頻率1x、2x的方波

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年12月29日   【字體:

/******************************************************************************************
* 函數(shù)名稱    : TIM3_Configuration
* 功能描述    : TIM3初始化函數(shù)
* 參數(shù)        :  無
* 返回值      :  無
* 全局變量    :  無
* 全局靜態(tài)變量:  無
* 局部靜態(tài)變量:  無
******************************************************************************************/
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的值,計數(shù)周期     
  TIM_TimeBaseStructure.TIM_Prescaler=36-1;      //分頻  CK_INT=2MHz 36分頻
  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計數(shù)模式  
  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);//打開定時器
      
}

 
關(guān)閉窗口

相關(guān)文章