【学習記録】STM32 PWM出力実験

STM32 PWM作業プロセス

 例としてチャンネル 1 を取り上げます。

CCR1: キャプチャコンペア(値)レジスタ(x=1,2,3,4): コンペア値を設定します。

CCMR1: OC1M[2:0] ビット:

              PWM モードの場合、PWM モード 1 [110] または PWM モード 2 [111] を設定するために使用されます。

CCER: CC1P ビット: 入力/キャプチャ 1 出力極性。0:Highレベルが有効、1:Lowレベルが有効。

CCER: CC1E ビット: 入力/キャプチャ 1 出力イネーブル。0: オフ、1: オン。

PWMモード1とPWMモード2

 

void TIM_OC2PreloadConfig( TIM_TypeDef * TIMx , uint16_t TIM_OCPreload );

void TIM_ARRPreloadConfig ( TIM_TypeDef * TIMx , FunctionalState NewState );

STM32タイマ3出力チャネル端子

PWM出力ライブラリ関数

void TIM_OCxInit ( TIM_TypeDef * TIMx , TIM_OCInitTypeDef * TIM_OCInitStruct );

 比較値関数を設定します。

void TIM_SetCompareX ( TIM_TypeDef * TIMx , uint16_t Compare2);

出力比較のプリロードを有効にします。

void TIM_OC2PreloadConfig( TIM_TypeDef * TIMx , uint16_t TIM_OCPreload );

自動リロードを有効にするプリロード レジスタ イネーブル ビット:

 void TIM_ARRPreloadConfig ( TIM_TypeDef * TIMx , FunctionalState NewState );

PWM出力実験:

        タイマ 3 の PWM 機能を使用して、可変デューティ比の PWM 波を出力し、LED 照明を駆動します。これにより、LED [PB5] の明るさが暗いから明るい、明るいから暗いなどと変化します。

PWM 出力設定手順:

①      タイマー3と関連するIOポートクロックを有効にします。

         タイマー 3 クロックを有効にする: RCC_APB1PeriphClockCmd();

         GPIOB クロックを有効にする: RCC_APB2PeriphClockCmd();

 ②IOポートを多重機能出力として初期化します    。関数: GPIO_Init ();

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ; 

③ここでは     PB5をタイマーのPWM出力端子として使用するので、設定を再マップする必要があります。

       したがって、AFIO クロックをオンにする必要があります。リマッピングも設定します。

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

        GPIO_PinRemapConfig (GPIO_PartialRemap_TIM3、有効);

④初期化    タイマー:ARR、PSC等:TIM_TimeBaseInit ();

⑤    出力比較パラメータの初期化: TIM_OC2Init();

⑥   プリロードレジスタを有効にする: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable );

⑦   タイマーを有効にします。TIM_Cmd ();

⑧   比較値 CCRx を継続的に変更して、さまざまなデューティ サイクル効果を実現します。TIM_SetCompare2();

重要なコード:

タイマー.c:

main.c:

 プログラムをダウンロードすると、赤色のライトが暗いから明るい、明るいから暗いへと繰り返します。


要約する

         PWM の原理や基本的な使い方については、大まかに理解しているとしか言えませんが、PWM 出力は後段でよく使うことになるので、この部分は学習後に改めて内容を整理したいと思います。その後の内容も!

 

おすすめ

転載: blog.csdn.net/weixin_47723114/article/details/127682209
おすすめ