我有基于 LPC1768 的板 - LandTiger(值得在底部查看手册)。我使用 Keil uVision4/72 Lite 和 Segger 的 J-Link EDU 对其进行编程。我与操纵杆和二极管交互的简单程序运行良好,但是......
我正在尝试实现调试 printf,因此我可以在 Keil “调试(printf)查看器”窗口中看到 printf 输出。问题是我没有看到任何输出 - 我认为我在正确的轨道上,因为当我运行调试器时,我可以在窗口底部看到Trace:Running (在它之前是Trace:No Synchronization)。不幸的是,我在 UART 和调试输出窗口中看不到任何东西。
我花了很多时间试图让它工作,并感谢任何帮助,谢谢;)
我的 Keil 设置是:
目标/调试的项目/选项设置为J-Link/J-Trace Cortex。
然后在它的设置里面,我用Port:SW和MAX CLOCK:10 MHz选择了SEGGER。
Trace 选项卡通过100Mhz Core Clock和SWO Prescaler = 17启用(这导致5.882352MHz SWO Clock)。
ITM 刺激端口设置为Enable:0xFFFFFFFF和Privilege:0x0000000F
以下是我的部分代码:
定义 FOSC 12000000
定义 FCCLK (FOSC * 8)
定义 FCCO (FCCLK * 3)
定义 FPCLK (FCCLK / 4)
定义 UART0_BPS 115200
无效 UART0_Init (无效)
{
uint16_t usFdiv;
/* UART0 */
LPC_PINCON->PINSEL0 |= (1 << 4);/* 引脚 P0.2 用作 TXD0 (Com0) */
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)
{
而 (!(LPC_UART0->LSR & 0x20)){};
返回(LPC_UART0->THR = ucData);
}
还有我用于 printf 的 fputc(它被称为 - 检查)
int fputc(int c, 文件 *f)
{
如果 (c == '\n') {
UART0_SendByte('\r');
}
返回(UART0_SendByte(c));
}
有任何想法吗?
问候!