在上一个实验中,我们实现了uart0的输出,在这一个实验中,我们将方便的调试信息也加入到工程里面。这样,我们在没有显示屏的情况下也能看到我们的程序运行状态,模拟一下Linux的调试信息输出。
上图就是我们实现的结果,上面有info的标识,有打印信息的位置,包括文件名与文件行。
在uart0的信息,我们定义为字符型输出,这样我们可以使用'\0'来判断调试信息的结束。
在另外一个方面我们需要使用printf的典型输出方式,方便我们输出当前程序的状态。这时我们需要使用可变长度的定义,同样,为了调试信息的多样性,我们也使用了宏定义来直接区分调试信息。不多说了,直接分享源代码吧:
- #define Debug_Info(...) debugPrintf(INFO, ##__VA_ARGS__)
- Debug_Info("%s:%d this is a demo for debuginfo\n", __FILE__, __LINE__);
- void Uart0Flush(void)
- {
- uint16_t i;
- for(i = 0; i < UART_BUF_LEN; i++)
- {
- if(TxdBuf[i] != 0)
- {
- Uart0SendByte(TxdBuf[i]);
- }
- else
- {
- break;
- }
- }
- }
复制代码
P.S.我们其实也可以使用ITM调试输出,我们另做实验实现。
|