問題タブ [stm32]

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.

0 投票する
1 に答える
2865 参照

c++ - Keil uVision4 armcc: C++ 標準インクルードの使用

Keil uVision4 を使用して STM32F2 デバイスで開発しています。私は C++ を使用しようとしていますが、これは uVision ツールチェーンで提供されている armcc (間違っている場合は訂正してください) で使用できるはずです。しかし、uVision は標準の C++ インクルード方法を受け入れることを拒否します

動作しません

完璧に動作します。uVision 内で cstdint を開くと (右クリックしてドキュメントを開く)、ファイルが開かれますが、ヘッダー ファイルではなく、派手な色のない汎用ファイルとして開かれます。

私は何が欠けていますか?両方のファイルは同じフォルダ C:\Keil\ARM\ARMCC\include にあり、(--cpp を追加して) コンパイラに強制的に c++ を使用させるかどうかに違いはありません。uVision は末尾のないファイルをヘッダー ファイルとして受け入れることができないのですか?

編集:回答に応じて(お時間をいただきありがとうございます!):エラーメッセージは次のようになります。

その間

問題が何であるかを示します。ご協力ありがとうございました!

0 投票する
1 に答える
1208 参照

arm - プロジェクトを TrueSTUDIO から CrossWorks に切り替えたときの memcpy でのハード フォールト

残念ながら、STM32F4 開発ボードの開発に CrossWorks を使用する必要があり、CrossWorks を使用してプロジェクトをビルドおよび実行する場合にのみ発生する問題に直面しています。

LwIP を使用して UDP サーバーを作成していますが、TrueSTUDIO を使用すると問題なく動作しています。ただし、CrossWorks で実行すると、ethernetif_input() にハード フォールトが発生します。これは、パケットの読み取り準備が整ったときに呼び出されます。失敗する特定のポイントは、パケット バッファ間でパケット情報を移動中に memcpy() を呼び出したときです。

何が変わったのかわかりません。まったく同じコードで、同じターゲット向けにビルドされており、CrossWorks では壊れています。誰かがこの問題のどの部分についても洞察を持っていることを願っています...これに関して何か考えがあれば、それは素晴らしいことです.

ありがとうございます。詳細が必要な場合はお知らせください。

0 投票する
3 に答える
13514 参照

c - STM32 の C でナノ秒の遅延を生成する

STM32F2コントローラを使用しており、 8 ビット パラレル インターフェイスを介してST7036 LCD ディスプレイと接続しています。

データシートには、アドレス ホールドとセットアップ時間の間に 20 ナノ秒の遅延が必要であると記載されています。

C で 20 ナノ秒の遅延を生成するにはどうすればよいですか?

0 投票する
1 に答える
5564 参照

eclipse - stm32f3ディスカバリーgcc-armeclipse

STM32 F3ディスカバリーボード用のオープンソース環境が機能している人はいますか?STM32 F4 / F0からF3ディスカバリーに簡単に移植できるチュートリアルを持っている人はいますか?

0 投票する
1 に答える
1515 参照

stm32 - RTC アラームと ARM のシステム アラーム (STM32)

私はstm32F4を学んでいます。私が本当に理解できないいくつかの混乱があります。

RTC アラームと元のシステム アラームの違いは何ですか。RTC がより多くの電力を節約できることだけは知っていますが、他には何もありません。誰かが私に説明したり、違いの例を作ったりできますか. どうもありがとう。

0 投票する
4 に答える
23225 参照

stm32 - STM32103 を CAN 用に構成し、ピンを PB8 および PB9 に再マッピングする方法

この段階では、STM32F103 V8T6 で CAN を使用して単純に送信しようとしています。チップは自社でカスタマイズしたボードに実装されています。回路図を見ると、CAN Tx および Rx ピンが PB9 (Tx) および PB8 (Rx) に再マッピングされていることがわかります。そうは言っても、LoopBack モードを正常に使用できました (STM "V3.5.0" の最新の例を使用) が、通常モードを機能させることができませんでした。私の初期設定に明らかな欠陥がある場合は、誰かが私に知らせてもらえますか?! 構成に関連するコードのみを含め、送信関数の呼び出しを省略しました。

ここに私の送信機能があります

このリソースは役に立ちましたが、最終的には不十分です。

STM32F103 マイクロコントローラの CAN メッセージ

ありがとう!

ダニエル

0 投票する
1 に答える
906 参照

stm32 - STM32L + ENC28J60 (オリメックス)

Olimex の ENC28J60-H を STM32L-Discovery に接続する際に問題が発生しました。そこで、ECON1 レジスタを読み取り、値を書き込み、再度読み取るコードを書きます。ここに問題があります。このコードの各行でデバッガーを段階的に (F10) 使用すると、すべてがうまくいきます。しかし、この行の後にブレークポイントを設定すると、レジスタは 0x00 を返します。私は、ENC が値をレジスタに書き込むのに十分な時間がないと判断しました。しかし、マニュアルには、周波数が 20 または 25 MHz の独自の水晶振動子があると書かれています (正確には覚えていません)。そして、私の周波数は約150 kHzです。とにかく、各 SPI 送信または受信の後に遅延 (ループ内の単純なカウンター) を設定します。そして、それは助けになりました。それから私は先に進みます。私は初期化関数(必要な値をレジスタに書き込むよりもソフトリセット)を書き、それをメイン関数で使用します。呼び出した後、ECON1 レジスタを再度読み取ります。そして、遅延があっても、私が得たのは再び0x00です。この状況で何をすべきか知っている人はいますか?

0 投票する
1 に答える
25835 参照

c - エラー:選択したプロセッサはARMモード`wfi'をサポートしていません

ARM組み込みCプログラムをコンパイルしようとすると、次のエラーが発生します(クロスコンパイラとしてYAGARTOを使用しています)。このエラーの意味と修正手順を理解しようとしています。私がこれまでに行った調査から、それが問題であるように思われwfiwfeASMの指示ではありません。どうすればこれを修正できますか?

0 投票する
5 に答える
5749 参照

timer - タイマー割り込みを一時的に無効にする

stm32f4xx uC で C の組み込みプロジェクトに取り組んでいます。

ループ操作 XYZ を連続して実行するコードの一部があり、時々 TIM4 割り込みがいくつかのグローバル パラメータを変更し、操作 XYZ を再開させます。

コードは次のようなものです。

XYZ は、バッファとその他の間のデータ転送を含む複雑な操作です。

TIM4 割り込みハンドラはこれを行います: XYZ を停止し、XYZ 操作に影響するいくつかのグローバルを変更します。

したがって、基本的には、XYZ を繰り返し実行し、TIM4 割り込みで XYZ を停止し、パラメータを変更してから、新しいグローバル パラメータで XYZ を再起動してループを再開する必要があります。

問題: XYZ には多くの命令があるため、TIM4 IRQ がその途中で発生する可能性があり、IRQHandler がグローバルを変更した後、XYZ の途中から操作が再開され、プログラムが台無しになります。

の最初の解決策: __disable_irq() で行 A の割り込みを無効にし、__enable_irq() で行 B でそれらを復元します。

XYZ 複合操作は他の割り込み (TIM4 以外) を使用する必要があるため、失敗します。

の解決策 次のコマンドを使用して、ライン A の TIM4 割り込みのみを無効にします。

次のコマンドを使用して、B行で有効に戻します。

割り込みを失っているため失敗します。int が復元されると、XYZ 中に到着した割り込みは無視されます。これは大きな問題です (理由の 1 つは、TIM4 IRQHandler がグローバルを変更し、TIM4 を再度アクティブにして後で割り込みを発生させることです。割り込み間の期間が異なるため、私はこれを行います)。

誰でもこの問題の解決策を教えてもらえますか? TIM4 IRQ を無効化/復元し、割り込みを失わないようにするより良い方法はありますか?

0 投票する
1 に答える
1086 参照

atoi - STM32atoiとstrtolで最初の2桁が欠落することがあります

エンコーダーの値であるRS485を介して送信された値を読み取っています。最初にE文字が返されたかどうかを確認し(エンコーダーがエラーを報告している)、そうでない場合は次の手順を実行します。

バッファの値は4033536で、位置は33536に設定されます。これは、この関数では毎回発生するわけではありません。おそらく、カウントしていませんが、1000回に1回です。プログラムカウンターを元に戻し、失敗した場合に行を再実行すると同じ結果が返されますが、デバッガーを再度起動すると、値が正しく変換されます。

私はkeiluvision4を使用しています。これは、stm32f103vet6とstm32f10ライブラリV2.0.1を使用するカスタムボードです。

ありがとう