STM32アドバンストタイマ1つの相補出力検証コード

GPIO_InitStructure GPIO_InitTypeDef; 
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 
    TIM_OCInitTypeDef TIM_OCInitStructure; 
    TIM_BDTRInitTypeDef TIM1_BDTRInitStruct; 

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1、ENABLE); //  
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA、ENABLE);   // GPIO周辺クロックをイネーブル
     // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO、ENABLE);   / / 多重ピン                                                                    

   // 多重出力、PWMパルス波形TIM1 CH1の出力する端子 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; // TIM_CH1
    = GPIO_Mode_AF_PP GPIO_InitStructure.GPIO_Mode;   // 多重化プッシュプル出力 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
    GPIO_Init(GPIOB、 GPIO_InitStructure); 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // TIM_CH1 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   // 多重化プッシュプル出力 
    GPIO_InitStructure = .GPIO_Speed GPIO_Speed_50MHz; 
    (GPIOAと、GPIO_InitGPIO_InitStructure);    
     // GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1、ENABLE); 
    
    TIM_TimeBaseStructure.TIM_Period = ARR; //次の更新イベントがオートリロードレジスタ値80Kのアクティブ期間に供給される 
    TIM_TimeBaseStructure.TIM_Prescaler = PSC; //は除数TIMxプリスケーラ値として使用されるクロックの周波数を設定し、分割 
    TIM_TimeBaseStructure.TIM_ClockDivision = 0 ; // セットクロック分周:TDTS = Tck_tim 
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   // TIMアップカウントモード 
    TIM_TimeBaseInit(TIM1、&TIM_TimeBaseStructure); // TIM_TimeBaseInitStruct TIMx初期化パラメータ指定された時間ベースユニット
/// ******構成BDTR設定されたデッドタイムを登録**************** /     
 /// * 
@ 20 = TIM_ClockDivisionタイマークロックTIM_CKD_DIV1 72M、TDTS = 13.89ns
 @ 21 0 - 1.764usアルゴリズムと
 //22 1.778us - 2つと3.505usアルゴリズム
 @ 3と7.000usアルゴリズム- 23 3.556usある 
 @ 4と14usアルゴリズム- 7.1117us 24
 // 25は、周波数分割TIM_ClockDivisionを使用して、時間がかかる
 @ 26 * / IS
 //     TIM1_BDTRInitStruct = TIM_OSSRState_Disable .TIM_OSSRState;
 //     TIM1_BDTRInitStruct.TIM_OSSIState = TIM_OSSIState_Disable;
 //     TIM1_BDTRInitStruct.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
 //     TIM1_BDTRInitStruct.TIM_DeadTime = 205; // デッドタイム72:1US 172:205 3us:5us
 //     TIM_BDTRConfig(TIM1、&TIM1_BDTRInitStruct ); 
 
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //タイマーモードが選択されるTIMパルス幅変調モード2を
   TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;  // 比較出力がNイネーブル 
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enableと、
    TIM_OCInitStructure.TIM_Pulse = 400 ; // 捕捉にロードされる設定パルス値は、コンペアレジスタ
   TIM_OCInitStructureを。 = TIM_OCNPolarity_Low TIM_OCNPolarity;  // 出力極性:TIMコンパレータの極性高出力 
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCNPolarity_Low;
    TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset; 
    TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; 
    TIM_OC3Init(TIM1、TIM_OCInitStructure&);   // TIM_OCInitStructが周辺TIMx初期化指定されたパラメータ

  TIM_CtrlPWMOutputs(TIM1、イネーブル);     // MOEメイン出力イネーブル    
     // TIM_SetCompare4(TIM8,700); 
    TIM_OC3PreloadConfig(TIM1、TIM_OCPreload_Enable);   // のCH1プリインストールキャリア有効      
    
    TIM_ARRPreloadConfig(TIM1、イネーブル); // 登録プリロードでTIMx ARRを有効
    
    TIM_Cmd(TIM1、イネーブル);   // TIM1を有効

赤いマークに注意を払います

 

おすすめ

転載: www.cnblogs.com/polar-lights/p/11763608.html