問題タブ [stm32f0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
input - STM32F091 タイマー入力キャプチャ割り込みは無視されました
私は STM32 と Keil での C++ のコーディングにはかなり慣れていませんが、現在のプロジェクトを少し手伝ってもらっています。私は Barth STG-850 PLC のようなボードを使用しています。これは STM32F091CC チップであり、多くの I/O、CAN 周辺機器などを備えています。これを使用して、缶データを読み取って送信し、特定の変数を設定し、速度の読み取り値を送信しています。 CAN経由のタイマー入力からクルーズコントロールを操作します。ここまでで、メイン コードのセットアップ、I/O の構成、CAN ペリフェラルの構成が完了し、タイマー入力キャプチャ コードの作業を開始しました。Keil のデバッグを使用して、タイマーが初期化され、カウントされ、タイマーの入力ピンで立ち上がりエッジが検出されると、値がキャプチャ コンペア レジスタに格納されることを確認しました。この時点から、void 関数がトリガーされるはずですが、実行されていません。私の主に、私は以下を持っています:
そして、呼び出されている関数は
何らかの理由でコードが呼び出されず、その理由がわかりません! グローバル割り込みが有効になっています。別のタイマーなどを使用してみましたが、役に立ちません。すべての割り込み処理は stm320fxx_hal_tim.c で構成されているため、main.c ファイルに含める必要はありませんか?
誰かが助けることができれば、それは大歓迎です!! ありがとう。
raspberry-pi - stm32F0 Can RX のデバッグ方法
CANシールド、終端抵抗などすべてを備えたラズベリーパイに缶の上に取り付けられたカスタムstm32F0ボードがあります。STM32F0 でメッセージを開始し、RPI 側でそれを見ることはできますが、その逆はできません。オシロスコープをキャンラインに接続すると、RPI からのメッセージが表示されます。同様に、can トランシーバーと STM32F0 の間にメッセージが表示されるので、メッセージがピンに届いていることがわかります。Rx を実行するためのコードは非常に簡単に見えます。
- 設定する
- フィルターを無効にする (フィルターを 0x0000 に設定する)
- HAL_CAN_ActivateNotification を使用して RX を設定する
- can rx割り込みのコールバック関数を設定します
それでも、割り込みは決してトリガーされません。CAN RX ピンが不良ですか? デバッグ プロセスを続行するにはどうすればよいですか?
main.c 全体は次のとおりです。
interrupt - STM32CUBEIDE で欠落している割り込みを有効にすることができます
私が見るすべてのガイド (例: https://www.dailyduino.com/index.php/2020/06/01/stm32-can-bus/ ) では、(ioc で) 行って割り込みを有効にする必要があると記載されています。ピン配置と構成 -> 接続 -> CAN -> NVIC 設定 -> 割り込みを有効にします。しかし、そこに行くと、「hdmi-cecとグローバル割り込み/ hdmi-cecウェイクアップ割り込みがexti line 27を介してできる」だけが表示されます。そのチェックマークをクリックしても、私の場合は役に立たないようです。デバイスは CAN メッセージを認識していますが、コードは中断しておらず、コールバックには至りません。
簡略化されたコードは次のとおりです。
次のようになるまで、IRQhandler を通過するようです。
「hcan->RxFifo0MsgPendingCallback(hcan);」に入る場所 コールバック「HAL_CAN_RxFifo0MsgPendingCallback(hcan);」の代わりに
プロジェクト設定に移動し、そのフラグを 0 に設定することで修正できます。残念ながら、今は少し前の部分で行き詰まっています。
ここで、割り込みは 2 で、CAN_IT_RX_FIFO0_FULL は 4 であるため、フラグ部分には到達しません。ただし、これら2つの設定が何を意味するのかはわかりません。