STM8プログラミング[TIM1多重PWM出力オプションバイト(Option Byte)動作とIO多重]

TIM1 マルチチャネル PWM 出力オプション バイト (Option Byte) の動作と IO 多重化

この記事は https://blog.csdn.net/freeape/article/details/47008033 より抜粋です あくまでバックアップの学習用であり、盗用の意図はございませんので、ご不明な点がございましたら、ご連絡ください。
コードは TIME1 を使用して 3 ウェイ PWM を出力する必要があります。コードは次のとおりです。

void timer1_init(void)
{
    
    
  TIM1_DeInit();  
  
  TIM1_TimeBaseInit(0x0000, TIM1_COUNTERMODE_UP, 1600, 0x00);//16000000/160=10000=10K

  TIM1_OC1Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_DISABLE,400, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);
  TIM1_OC2Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_DISABLE,800, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);
  TIM1_OC3Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_DISABLE,1200, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH,TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);
  TIM1_Cmd(ENABLE);
  TIM1_CtrlPWMOutputs(ENABLE);
}

しかし、なぜチャネル 1 とチャネル 2 からの出力がなく、チャネル 3 だけが出力があるのか​​わかりません。Baidu
ここに画像の説明を挿入
で確認した後、最終的にこの記事を見つけました: https://blog.csdn.net/freeape/article/details /47008033
ここに画像の説明を挿入
AFR0 を構成する必要があります。オプション バイトを変更するには stvp を使用する必要があることがわかった後: https://download.csdn.net/download/rui22/12885187
ここに画像の説明を挿入
操作が成功したら、構成を読み返して確認できます。成功した場合:
ここに画像の説明を挿入
ここに画像の説明を挿入
設定後、最終的にチャネル 1 とチャネル 2 に PWM 出力が追加されます。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/chengdong1314/article/details/132372465