問題タブ [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.
arm - STM32F407 (F4Discovery) を使用した UART
F4Discovery ボード (STM32F407 ベース) で UART (USART1) を使用しようとすると問題が発生します。私は STM32 と Keil (私が使用している IDE) にかなり慣れていません。これが私のコードです:
誰かが助けてくれたらとてもありがたいです。UART1 TX から 0x49 を送信することはなく (ピン PA9 と PB6 をチェック済み)、その間 (USART_GetFlagStatus...) で際限なくスタックします。Keil デバッガーを使用して観察していると、しばらくすると動かなくなることがわかります。
stm32f4xx_usart.c ドライバーをプロジェクトに含めています。
ありがとう!
eclipse - CDT Eclipse: .h ファイルが含まれていても未定義の変数
私は CDT と Eclipse の初心者です。STM32F10XX (Cortex-M3) アプリケーションを作りたいです。コードをコンパイルするときに問題が発生します。常に未定義変数エラーが表示されます。STM32 Discovery Development 用の Eclipse および Code Sourcery lite のセットアップに示されているように、Eclipse 設定を使用しました。
しかし、stm32_flash.ld と startup_stm32f10x_md_vl.S を使用して、独自のスタートアップ コードを作成します。
含まれていない、またはプロジェクトの設定がありませんか?
ディスカッションスタックオーバーフロー質問
elf - ELF ファイルのサイズと RAM のサイズ
RAMにELFファイルをロードするSTM32があります(OpenOCDとJTAGを使用)。これまでのところ、ロードする ELF ファイルのサイズにはあまり注意を払っていませんでした。
通常、自分のボードには大きすぎる ELF ファイルをコンパイルすると (私のボードには実行可能ファイルをロードできる 128KB の RAM があります)、リンカは文句を言います (リンカ スクリプトで RAM のサイズを指定します)。
出力された ELF ファイルのサイズに気付いたので、261KB であることがわかりましたが、リンカは文句を言っていません!
ELF ファイルが非常に大きいのに、リンカは問題ないのはなぜですか? ホスト上の ELF ファイルはボードに正確にロードされていますか?
gdb - フラッシュからの起動時にブレークポイントが機能しない
過去に、Cortex M3 (STM32F2) の内部 SRAM にロードされた実行可能ファイルを問題なくデバッグしていました。最近、実行可能ファイルを Flash にロードしています (サイズの問題のため)。
それ以来、GDB でのデバッグは機能していません。私が理解しているように、実行可能ファイルがフラッシュにある場合、(ソフトウェア ブレークポイントではなく) ハードウェア ブレークポイントしか使用できず、6 つのハードウェア ブレークポイントがあります。ただし、ハードウェア ブレークポイントを 1 つだけ設定すると、GDB で次のエラー メッセージが表示されます。
何がうまくいかないのですか?ハードウェア ブレークポイントはバックグラウンドで実行されますか?
注: OpenOCD を使用して、JTAG 経由で実行可能ファイルをロードしました。
c - STM32 Discovery EmbeddedシリアルブートローダーUSART、IAP
深刻な問題があります。usartを使用してstm32検出ボード(STM32L152RBT6)を起動したいと思います。BOOT0=HIGHおよびBOOT1=LOWに設定して、システムメモリのブートモードに入ろうとしました。次に、ハイパーターミナルを使用して.BINファイルを送信しようとしました(何も起こりません)。また、STによるフラッシュローダーユーティリティを試しました(ターゲットの検出でハングします)。
また、アプリケーションプログラミングに関するいくつかのデータシートも読みました。IAPファームウェアをダウンロードして書き込みましたが、usartにいくつかの異なる構成が設定されている可能性があるため、ハイパーターミナルに何も表示されません。
usartを使用してstm32ディスカバリボードのフラッシュメモリをプログラムしたいだけです。助けてください!システムメモリを起動した後、次は何ですか?
gcc - 浮動小数点引数を持つ数学関数内でデバッガーが停止する
私はチップをプログラムするためにコンパイラ(ARM EABI用のSourcery Codebenchlite)を使用Keil uVision
しています。gcc
STM32F4 cortex M4
私が設定したコンパイラ制御文字列は次のとおりです。
デバッガーがいくつかの数学関数 ( など) に遭遇すると、デバッガーはasinf()
停止atan2f()
します。
これらの関数の引数も単精度であることを確認しました。
浮動小数点を使用するためのコンパイラ ディレクティブが欠落していることが原因だと思いますが、VFP
特定できませんでした。
見逃したものはありますか?
私が行った例の逆アセンブリコード:
デバッガーは atan2f(0.3,0.4) を評価できますが、atan2f(a,b) を評価すると 0x0803B9CA で停止します。変数ではなく、数値が機能する理由がわかりませんでした。
arm - STM32F103のADCは最大3Mspsをサンプリングできますか?
stm32マイクロコントローラーは初めてです。STM32F103データシートで、それぞれ最大1Mspsを実行できる3つのADCコンバーターがあることを読みました。これらの3つのコンバーターを利用して、最大3 Mspsの1チャネルをサンプリングすることは可能ですか?あるコンバーターから別のコンバーターへの時間差0.333usで、各コンバーターの変換を順番に開始すれば可能だと思います。したがって、1usの期間ごとに3つのコンバーターから3つの変換結果を取得します。
それは実行可能ですか?ご意見をお聞かせください。ありがとう。
debugging - SysTick_Configを使用した後にデバッグできません
私(組み込みの初心者)は、組み込みプログラミングの黒魔術の世界を戦い抜いています。これまでのところ、私はすでにたくさんの戦いに勝ちましたが、この新しいバグは難しいもののようです。
まず、私の組み込みセットアップ:
- Olimex STM32-P207(STM32F207)
- Olimex ARM-USB-OCD-H JTAG
- OpenOCD
- Eclipse(CDTおよびGDBハードウェアデバッグを使用)
- コードソースツールチェーン
- RIDE(GCCを使用するもの)のスタートアップファイルとリンカースクリプト(STM32F207に適合したメモリマップ)
- STM32F2xx_StdPeriph_Lib_V1.1.0
そこにある多くのチュートリアルとQ&Aを使用して、makefile、リンカー、スタートアップコードを設定し、STMの標準ライブラリを使用して実行するいくつかの簡単な例を取得しました(クラシックな点滅、ボタンや割り込みの使用など)。しかし、SysTick割り込みをいじり始めると、物事は厄介になりました。
SysTick_Config()呼び出しをコードに追加すると(空のSysTick_Handlerがある場合でも)、...
...次に、デバッガーは(インライン)関数NVIC_SetPriority()で開始し、「実行」を押すと、HardFault_Handler()になります。これは、デバッガーを使用している場合にのみ発生します。それ以外の場合、コードは正常に実行されます(LEDの点滅から通知)。
私はすでにたくさん読んでたくさん試しました(コンパイラオプションの変更、リンカ、スタートアップ、SysTick_Config()呼び出しで他のコードを試す)が、この問題を解決するものは何もありませんでした。
ヒントとして、コンパイラはどちらの場合も(SysTick_Config呼び出しの有無にかかわらず)0x00000184で起動します。SysTick_Config呼び出しがない場合、これはmain()の先頭を指します。SysTick_Configを使用して、NVIC_SetPriority()でこのピオントを実行します。
誰かが何が起こっているのか手がかりを持っていますか?解決策を探し続けることができる場所についてのヒントはありますか?
この謎を解くのにどのような情報が役立つかわかりません。私に知らせてください、そして、私は不足している部分を提供させていただきます。
どうもありがとう!
/ edit1:arm-none-eabi-readelf、-objdump、および-sizeの結果を追加しました。
/ edit2:実際のコード用のスペースを作るために、コード情報を削除しました。この新しい簡略化されたバージョンでは、デバッグは次の場所から始まります。
readelf:
main.c
/ edit3:
Soultion:解決策はコメントに潜んでいるので、ここに載せます:
リンカファイルがありませんでしたENTRY(your_function_of_choice);
(例:Reset_Handler)。これを追加すると、デバッガーが再び機能するようになりました(正しいポイントから開始するようになりました)。
みんなありがとう!
c - STM32F4Discovery:CANフィルター構成
STM32F4Discoveryキットを使用して、単純なCANインターフェイスを構築しています。CANメッセージを送信できるように設定できましたが、受信できなくなりました。私の知る限り、CANメッセージを受信するには、受け入れフィルターを通過する必要があります。ID 0x700から0x7FFまでのすべての(標準、2.0A)メッセージを受け入れるようにフィルターを設定したいと思います。どうすればよいですか?
リファレンスマニュアルを読みましたが、実際にフィルタリングを構成する方法がわかりません。
c - DAC信号発生器stm32
stm32f2xxのDACペリフェラルをプログラミングしています。バイト(サウンド)の配列があり、サンプルレート=8Kの信号を生成したいと思います。
今私の質問は:サンプルレートを指定するにはどうすればよいですか?
注:私はたくさんググった。DMAを使用してトラングル波の生成と正弦波の生成のみを取得しています。DMAを使いたくない。
助けてくれてありがとう...よろしく、