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/DebugをJ-Link/J-Trace Cortex に設定します。
次に、その設定内で、 Port:SWおよびMAX CLOCK:10 MHzでSEGGERを選択しました。
Trace タブは100Mhz Core ClockとSWO 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));
}
何か案は?
よろしく!