3つのPWM + USB(3種類のTIM)を使用して3つの80kHzの方形波を生成し、50khz付近で動作するようになると、メインループは実行されません1秒間点滅している)。 USBのプライオリティは0ですが、PWMは1(変更可能)です。これは、USB経由で目標波の周波数が与えられているためです。NVIC_Priorityとmain()stm32の優先度
PWMコールバックでは、波が加速または減速できるので、次のCCR/ARRがどの値で滑らかに加速するかを精緻にする関数を呼び出しています。
私の理解では、必要な計算能力が増え始め、割込みは多くあり、使用可能なスロットがいっぱいです。
私ができることは、PWMコールバック関数内でtrueに変わる単純なブール変数を使用してメインループ内の上記の関数を呼び出すことです。メインがファンクションを呼び出すとfalseに変わります。
このアプローチでは、完全な70/100kHzの方形波(たとえば、計算時間が必要なため63khzまたは95khz)が得られないことがあります。
メインに優先順位を与える方法はありますか? 主に基本的に5ms/10ms/50ms/1sが経過したかどうかを確認しています。
どのSTM32を使用していますか?なぜ割り込みを使ってPWMをやっているのですか?なぜあなたはタイマーモジュールを持っていないのですか? DMAでいくつかのレジスタ値を変更することができます。この方法でTimer1で正弦波を作りました。私は何かが欠落しているに違いないと思うが、ソフトウェアで100kの方形波を作り出すことは私にとってのようだ。 :) – DiBosco
私は各方形波パルスを数える必要があるので、私は割り込みを使用する必要があります。 また、100khzのターゲットを持っている場合、波形は10-20-30-40-50-60-70-80-90-100Khzの直線較正可能な「加速」を行う必要があるため、割り込みが必要です。これは私がdinamically CCRとARRを変更する必要があることを意味します – Luigi
私はあなたが "计算"各矩形波によって何を意味するか分かりません。あなたは本当にあなたが各タイマー割り込みのソフトウェアのピンを切り替えることを私に伝えていますか?また、頻度を正確に変更する頻度は?私はまだ何かが欠けていると思う。 – DiBosco