2

LPC1768 ベースのボード - LandTigerを持っています (下部のマニュアルを確認する価値があります)。プログラミングには、Keil uVision4/72 Lite と Segger の J-Link EDU を使用しています。ジョイスティックとダイオードを操作する私の単純なプログラムは正常に動作しますが...

デバッグ printf を実装しようとしているので、Keil の「Debug (printf) Viewer」ウィンドウで printf 出力を確認できます。問題は、出力が表示されないことです。デバッガーを実行すると、ウィンドウの下部にTrace:Runningが表示されるため ( Trace:No Synchronizationになる前に) 、正しい方向に進んでいると思います。残念ながら、UART およびデバッグ出力ウィンドウには何も表示されません。

私はそれを機能させるためにかなりの時間を費やしてきました。助けていただければ幸いです、ありがとう;)

私のKeilの設定は次のとおりです。

Project/Options for Target/DebugJ-Link/J-Trace Cortex に設定します。

次に、その設定内で、 Port:SWおよびMAX CLOCK:10 MHzでSEGGERを選択しました。

Trace タブ100Mhz Core ClockSWO Prescaler = 17 (結果として5.882352MHz SWO Clock ) で有効になります。

ITM Stimulus ポートは、Enable:0xFFFFFFFFおよびPrivilege:0x0000000Fに設定されています。

ここに私のコードの一部があります:

FOSC 12000000 を定義する

FCCLK を定義する (FOSC * 8)

FCCO の定義 (FCCLK * 3)

FPCLK を定義する (FCCLK / 4)

UART0_BPS 115200 を定義します

void UART0_Init (ボイド)

{

uint16_t usFdiv;

/* UART0 */

LPC_PINCON->PINSEL0 |= (1 << 4);/* TXD0 (Com0) として使用されるピン P0.2 */

LPC_PINCON->PINSEL0 |= (1 << 6);/* ピン P0.3 を RXD0 (Com0) として使用 */

LPC_UART0->LCR = 0x83;

usFdiv = (FPCLK / 16) / UART0_BPS;

LPC_UART0->DLM = usFdiv / 256;

LPC_UART0->DLL = usFdiv % 256;

LPC_UART0->LCR = 0x03;

LPC_UART0->FCR = 0x06;
}

送信コード:

int UART0_SendByte (int ucData)

{

while (!(LPC_UART0->LSR & 0x20)){};

return (LPC_UART0->THR = ucData);

}

そして、printf用の私のfputc(それは呼び出されます-チェック済み)

int fputc(int c, FILE *f)

{

もし (c == '\n') {

UART0_SendByte('\r');

}

return (UART0_SendByte(c));

}

何か案は?

よろしく!

4

2 に答える 2