http://matsubara-ui-design.net/2019/09/cube-mx2/
の続き。
PWMのデューティー比を、1サイクルごとに更新したい。
タイマの更新割込みで処理しようと思い、HAL_TIM_PeriodElapsedCallbackを定義してみた。
しかし、どうにも割込みがかからなかった。
タイマの開始にはいくつか関数が用意されている。
HAL_TIM_PWM_Start_ITで、割込み有効でPWM出力が開始されるだろうと考えていた。
調べてみると、この関数で有効になるのはOutput Compareの一致割込みの方で、更新割込みは有効になっていなかった。
それならばと、HAL_TIM_Base_Start_ITの方で試してみる。
更新割込みはかかるが、今度はPWMの出力が出てこない。
こちらの関数ではMOEが有効になっていないためだと思う。
正しい使い方は、HAL_TIM_PWM_PulseFinishedCallbackで割込みを受け、HAL_TIM_PWM_Start_ITで開始。
これで出力も出てきたし、デューティー比の更新処理もできるようになった。
ただ、やってみたところ処理が重く、結局DMAを使わないと厳しかった。