問題タブ [keil]

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 投票する
5 に答える
1177 参照

c - Cプリプロセッサを介してオフセットを定義する最良の方法

オフセットの自動生成に役立つマクロを定義したいと思います。このようなもの:

次のコードを生成する必要があります。

また

または(Cプリプロセッサを確実に使用することはできませんが、誰が知っているか;)

外部のawk/bash / ...スクリプトを実行せずに実行することは可能ですか?

KeilC51を使用しています

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

c - Stellaris でプログラム間をジャンプする方法

Stellaris LM3S1607 チップのブートローダーを開発中です。Keil MicroVision4 C コンパイラを使用しています。アイデアは、一方が他方を更新する 2 つの独立したファームウェアを作成することです。ファームウェア1で、ファームウェア2ファイルをダウンロードし、アドレス0x3200のフラッシュに書き込みます。ここまでは機能しています。また、データがフラッシュに正しく書き込まれていることも確認しました。今私は 2 つのアプリケーションをフラッシュします。1 つは私の uip ブート ローダーで、seoncd は私のメイン プロジェクトです。最初のプログラムから 0x3200 にある 2 番目のプログラムにジャンプする方法を知りたいです。

誰かが私がジャンプするのを手伝ってくれるなら、それは素晴らしいことです. ありがとう

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

arm - uvision(Keil)を使用してcortexm3でベクターテーブルを再配置し、開始アドレスを変更する方法は?

STM32F107 cortex m3 マイクロコントローラーを使用しています。プロジェクトには Keil uvision IDE を使用しています。開始場所で適切に実行されているアプリケーションがあります0x0800 0000。開始場所を0x0800 4000アプリケーションに変更すると、正しく動作しません。この関数を次のように使用して、ベクター テーブルの場所を変更しました。

つまりSCB->VTOR = 0x8004000、この場所に変更されました。

しかし、この割り込みを行った後でも発生していません。このプロジェクトを機能させるために、さらに何かする必要がありますか?

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

debugging - デバッグ中に IDE に printf メッセージを表示する

デバイスがあり、デバッグ目的で printf 関数を使用してメッセージを IDE に送信したいと考えています。セットアップ:

  • ARM Cortex-M3 デバイス

  • ULINK2 インターフェース

  • uVision4 IDE

「Debug (printf) Viewer」でメッセージを表示できるようにするために、このリンクで利用可能な指示に従いました。まず、「retarget.c」ファイルを変更して、出力をITMインターフェイスにリダイレクトします。

次に、指示に従って、uVision4 で IMT を構成しました。 ここに画像の説明を入力

プロジェクトは正常にコンパイルされます。アプリケーションをデバイスにダウンロードし、uVision4 でデバッグ セッションを開始します。システムの初期化直後に、main 関数で簡単なメッセージを指定して printf を使用しようとしましたが、Debug Viewer は空のままです。「sendchar」関数にブレークポイントを配置しました。予想どおり、すべての行がヒットしていることがわかります。

ULINK2 と uVision4 で printf を使用して成功した人はいますか? Debug Viewer ウィンドウに出力が表示されない理由を知っている人はいますか?

アップデート

既存の ITM 関数を使用しようとした結果、より単純な "retarget.c" が作成されました。

それでも、Debug Viewer には出力が表示されません。printf 関数呼び出しをステップ オーバーすると、IDE の下部に "Trace: Data Overflow" が表示され、続いて "Trace: Communication Error" が表示されます。

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

embedded - Keil RealView uvision MDK IDE のライブラリ リターゲット ファイルおよび低レベル I/O ルーチン

Keil uvision IDE でプログラミングを始めたところです。Library Target FilesLow Level I/O Routinesに関する Keil の公式ドキュメントを読んでいます。私のデバイスには、これらの機能の両方を実装する必要があるようです。ただし、開始方法がわかりません。誰かが私を正しい場所に向けることができますか?

私はおそらく怠惰な言い訳を探していますが、人気のあるデバイス用に一般的に実装されたファイルがあり、開発者がそれらを再度作成する必要はないと思いますか? 私が正しければ、それらのファイルはどこにありますか? 役立つ場合は、ARM Cortex M0+ デバイスである Freescale MKL05Z32VFM4 を使用しています。

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

c - 同じ名前ですが、c のケース変数と関数名が異なります

setlocal という名前の変数と void SetLocal(void) という名前の関数があります

C51 keil コンパイラを使用してコードをビルドすると、リンカで次のエラーが発生します。

「外部属性が公開に一致しません」

関数と変数に同じ名前を使用することはできませんか? 別のケースで?

0 投票する
2 に答える
249 参照

c - 異なる引数リストを使用した関数ポインターの割り当て

このプログラムを考えてみましょう:

最終課題は C90 に準拠していますか?

Keil C51 v9.06 は警告なしでプログラムを受け入れますが、gcc は次のように文句を言います。

警告: 互換性のないポインター型からの代入

これが Keil コンパイラのバグなのか、それとも実際に C90 に準拠した対処方法なのかを知りたいです。

更新: C99 に関するこの回答によると、対応するキャストは合法です。ただし、関数ポインターを呼び出すと、未定義の動作が発生します。これは、割り当ても合法であることを意味しますか?

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

c++ - c_str() ライブラリ API で C++ ストリームを使用する方法。

こんにちは、私のコード スニペットは次のとおりです。

これは、画面に文字列を出力するためにのみ使用されます。C ++で行うように、インクリメントできる数値を出力する関数または手段が必要です

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

c - 32番目のビットの設定に関するコンパイラの警告

32ビットを設定しているときにコードにコンパイラの警告があります。コードは機能しますが、この警告は私を悩ませます。

コンパイラはKeilC、プロセッサは32ビットARMです。コードは以下の通りです

ここで、PINSEL0は32ビットレジスタで、次のように定義されます。

次のようにPINSEL_AD15定義されます。

私が受け取っている警告メッセージは次のとおりです。整数演算の結果が範囲外です

0 投票する
2 に答える
2968 参照

assembly - keil uvision 4 でアセンブリ コード (arm cortex m3) をシミュレートする

私はこのガイドを使用しましたARMコードのシミュレート アセンブリコード(arm 7リトルエンディアン)をシミュレートする方法を示し、完全にうまく機能します。デバイスを arm 7 リトル エンディアンから arm cortex m3 に変更したところ、次のエラーが発生しました。

問題は、プロジェクトにいくつかのスタートアップ ファイルがないことだと思います。この場合、どうすれば修正できますか?