STM32F303のTIM1でPWMに苦しんだメモ

この記事は個人的な所感・メモです。いつもとは違って「だ、である」調になり、文体も荒ぶるかもしれません。ご了承を。
あと、場合によっては追記します。ご参考にどうぞ。もちろん、「違うぞ!」って言う内容についてはぜひご指摘ください。

目的・やること

TIM1 を使ってみた。というのも、次のマイクロマウス制作でどうしても TImx_CHyN のピンを使わなければならなくなったため。これについて TIM1 で実験。

苦しみ

できない。何度やっても無理。PWM 出力について、他の TIM2 とかと同じように設定したのだが、何も出力されない。何故だ。
GDB にて、TIM1->CNT の値を見てみたが、しっかりとカウントアップされている。。。

原因がわかった。やはり CubeMX はこうやって行き詰まった時に答え合わせとして使うのが良いのだな。これまで DAC の時にも答え合わせとしてめっちゃお世話になった。ありがとう。
どうも TIM1->BDTR の MOE ビットをセットする必要があるっぽい。萌え〜〜〜
これで解決。やはり前例があまり無いマイコンの設定(STM32 で CubeMX やライブラリを使わないものが見当たらず)はこういう所で苦労が多い。つらいことつらいこと。でも毎度のことだが、これで忍耐力はめちゃついていると思う。成長の証。

チャネルの N について

多分 Negative 出力。実験してみよう。以下では TIM1->CCER のアクティブ時の挙動は一切いじっていない(リセット状態)。そして PWM1 モードとする。
なお PWM1 モードというのは、最初は出力アクティブ(上の CCER 設定だと通常のチャネル出力は High で始まるはず)、CCRx を超えたら非アクティブとなるモードである。

CH1 のみ出力設定してみる

当然ながら、TIM1_CH1N には出力されず。

CH1N のみ出力設定してみる

逆出力が得られるのかな〜と思ったが、ところがどっこい。なんと最初 High が得られた。。。。。

CH1 と CH1N の両方を設定してみる。

ピコピコとまるで2石マルチバイブレータ状態。この時は CH1 がデフォで High、CH1N がデフォで Low だった。。。

CH1 と CH1N に関して結論

多分両方設定している時に逆になる。これが多分相補 PWM モード。多分。

あとでユーザーマニュアルよく読もう。うん。