希望对KEIL开发的小白的有用,KEIL开发如果高效正确调用Printf 打印输出调试信息。
需要添加红色字体代码
#include <stdio.h>
#define ITM_Port8(n) (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n) (*((volatile unsigned short *)(0xE0000000+4*n)))
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA 0x01000000
struct __FILE{ int handle;};
FILE _stdout;
FILE _stdin;
int fputc(int ch,FILE *f)
{
if(DEMCR & TRCENA)
{
while(ITM_Port32(0) == 0);
ITM_Port8(0)=ch;
}
return ch;
}
设置一下



int main(void)
{
delay_init(); //延时函数初始化
printf("\n=======666=22======\n");
while(1)
{
printf("\n=======调试信息=====\n");
delay_ms(1000);
}
}
编译一下,下载程序到单片机是,开启调试,调出Debug(printf)Viewer窗口


测试ok
文章介绍了如何在KEIL开发环境中通过修改C语言标准库的fputc函数,利用ITM_PORT(InstrumentationTraceMacrocell)来实现printf函数的打印输出,从而在调试过程中有效显示调试信息。主要步骤包括定义相关寄存器映射、设置调试选项,并通过示例代码展示如何在单片机上运行和查看调试信息。
938

被折叠的 条评论
为什么被折叠?



