問題タブ [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.
eclipse - STM32 GDB/OpenOCD コマンドとフラッシュおよび RAM デバッグ用の初期化
適切な GDB / OpenOCD の初期化とフラッシュおよび RAM のデバッグのために Eclipse 内で使用するコマンド (外部ツール) の実行、およびフラッシュと RAM のビルド用にメイクファイルに組み込む必要がある適切な変更または追加について支援を求めています。もちろん、これが重要な場合は、このMCUの場合。
MCU: STM32F103VET6
Zylin Embedded CDT、Yagarto Tools and Bins、OpenOCD 0.4 で Eclipse Helios を使用しており、Olimex ARM-USB-OCD JTAG アダプターを持っています。
すでに ARM-USB-OCD を構成し、Eclipse の外部ツールとして追加しました。OpenOCD を初期化するために、Eclipse で次のコマンドを使用しました。ボード構成ファイルは stm32 MCU を参照します。
これを Eclipse 内で実行すると、すべてが機能しているように見えます (GDB インターフェイス、OpenOCD が MCU を検出するなど)。OpenOCD に telnet で接続してコマンドを実行することもできます。だから、私は次の部分で立ち往生しています。フラッシュと RAM のデバッグ用の初期化とコマンド、およびフラッシュの消去。
いくつかのチュートリアルを読み、ネットを精査しましたが、このプロセッサに固有のものを見つけることができませんでした. 私はこれに慣れていないので、例として同等の製品を認識していない可能性があります.
scanf - newlib sscanf() が stm32 でハードフォールト例外をスローする
gcc を使用してプロジェクトをコンパイルし、main で関数 sscanf() を使用します。スタック サイズは 4k です。gdb でプログラムをデバッグし、VPUSH 命令が例外をスローすることを示します。
関数 sprintf() をテストしましたが、うまくいきました。関数 sscanf() が stm32 の newlib で機能しないのはなぜですか?
c++ - STM32F103 マイクロコントローラの CAN メッセージ
STM32f10xマイクロコントローラに精通している人はいますか?
その場合、CAN ドライバーの構成に問題があります。loop_Back モードに設定されているデモ コードを実行できますが、Normal_Mode を動作させることができません。
すべてのデータ シートを読み、CAN_MSR レジスタの INAK が 0 にリセットされないことを除いて、すべてが正しく構成されています。必要に応じて詳細を提供できますが、まず、STM32F103 マイクロコントローラを使用したことがある人がいるかどうかを知る必要があります。およびCANメッセージ。
c++ - Cortex-M3を介したUSBWebカメラへのアクセス
午後全部、
マイクロコントローラー(STM32F103、Cortex M3、73MHz)を介してUSB Webカメラのビデオストリームをハイジャックして、デバイスにHUDを追加することは可能かどうか疑問に思っています。次に、ストリームを同じUSBエンドポイントとコントロールエンドポイントに再パッケージ化しますか?
マイクロを介したウェブカメラとのインターフェースに関する情報はこれまで見つかりませんでしたが、パラレルインターフェースのイメージセンサーを使用するプロジェクトを見つけました。
microcontroller - I2C、プルアップ抵抗 (STM32 検出)
I2C 経由でデータを送信しています (1 秒ごとに DMA を使用)。SCK と SDATA に 2 つのプルアップ抵抗を追加しました。スレーブが存在するため、応答がないため、マスターはスレーブ アドレスのみを送信します。
そのテストボードは時々起こったので、しばらくの間これらのプルアップ抵抗を失いました。これが起こったとき、私はそれ以上データを取得できず、SCK はこの周波数で可能な限り速く刻みます。それを修正する方法はありません。プルパップバックは役に立ちませんでした。ボードをリセットする必要があります。
この振る舞いを説明することはできず、バスを完全に殺してしまいます。
c - STM32F103ZE で SPI がデータをゼロとして読み取っている
STM32F103ZE を使用していますが、SPI データを正しく取得できません。マスターは正しく送信しています。ただし、ゼロ以外の値が送信された場合は、常にゼロとして読み取られます。
マスター構成: (MSP430)
スレーブ構成 (STM32F103ZE)
誰でも答えを持っています。
ありがとうハリ
c - %dまたは%uを表示するとsnprintfがクラッシュする
ARMマイクロからOLEDディスプレイに表示するために、snprintfを使用して整数を文字列に出力しようとしています。ただし、%dまたは%uを使用すると、マイクロがロックされて実行が停止します。%xまたは%cの使用は正常に機能しますが、出力はあまり使用されません。
この動作の原因は何ですか?残念ながら、デバッグするJTAGデバイスにアクセスできません。私はarm-none-eabi-gccを使用してコンパイルしており、すべてmapleminiで実行されています。
アップデート
10未満の値を渡すと、機能するようです。
arm - llvm+clang を使用して stm32 用にコンパイルする方法
binutils と newlib を使用して llvm+clang ツールチェーンを構築する方法と、その使用方法を知っている人はいますか?
- ホスト: Linux、AMD64
- ターゲット: cortex-m3、stm32
- c-lib: newlib
- アセンブラ: gnu as
arm - ARM (Cortex M3) のアプリケーション内プログラミングはどのように機能しますか?
カスタム Cortex-M3 ベースのデバイスに取り組んでおり、JTAG なしでデバイス ファームウェアを更新できるように、アプリケーション内プログラミング (IAP) メカニズムを実装する必要があります (代わりに TFTP または HTTP を使用します)。ST Microelectronics から入手できる IAP 関連のコード例は十分に明確ですが、再フラッシュがどのように機能するかはよくわかりません。
私が理解している限りでは、命令はフラッシュから ICode バス (そしてもちろんプリフェッチ ブロック) を介して CPU によってフェッチされます。それで、ここで私のかなりばかげた質問があります: 実行中のプログラムが自分自身を再フラッシュする (つまり、実行中のフラッシュ メモリを変更する) 間、実行中のプログラムが破損しないのはなぜですか?
embedded - STM32 プログラミングのヒントと質問
STM32 プログラミングに関する適切なドキュメントがインターネット上で見つかりませんでした。STM 自身のドキュメントには、レジスタ機能以外の説明はありません。誰かが私の次の質問を説明していただければ幸いです。
STM が提供するすべてのサンプル プログラムで、main() のローカル変数は常に main() 関数の外で定義されていることに気付きました (ときどき static キーワードを使用します)。その理由はありますか?同様の慣行に従う必要がありますか?メイン内でローカル変数を使用しないようにする必要がありますか?
クロック割り込みハンドル内で更新されるグローバル変数があります。別の関数内で同じ変数をループ条件として使用しています。何らかの形式のアトミック読み取り操作を使用して、この変数にアクセスする必要はありませんか? 関数の実行中にクロック割り込みの値が変化しないことをどのように確認できますか? 関数内でこの変数を使用する必要があるたびに、クロック割り込みをキャンセルする必要がありますか? (ただし、ループ条件として使用しているため、これは非常に効果がないように思えます。より良い方法があるはずです)。
Keil は、アセンブリで記述されたスタートアップ コード (つまり、startup_stm32f4xx.s) を自動的に挿入します。このスタートアップ コードには、次のインポート ステートメントがあります。 IMPORT SystemInit IMPORT __main .「C」では、意味があります。ただし、C++ では、main と system_init の名前が異なります (例: _ int _main__void)。このスタートアップ コードは、「extern "C"」を使用しなくても C++ で機能することができます (私が試したところ、機能しました)。c++ リンカ (armcc --cpp) はどのようにしてこれらのステートメントを正しい関数に関連付けることができますか?