keil5 MDK中如果不勾选Use MicroLIB进行printf打印功能适配的话(因勾选后有很多库函数兼容性问题导致编译失败),可以借助Jlink工具RTT实现printf功能,因其内部有printf需要的fputc函数!示例代码如下安装路径,如keil选择第三个Syscalls,同RTT文件夹内容一起加入到工程中:
1、Jlink RTT打印只需要RTT文件夹内容,如果自己封装接口,就自定义,如果不需要直接用RTT提供接口即可,应用示例Examples文件夹中test。
要么自动识别设备及地址,要么选择设备系列并指定地址,需要确认map中地址是不是所需地址,是否指定成功,按照所用编译器方法固定地址段即可!
2、printf打印只需要Syscall文件。可以不要下图中的标准输出口,printf可以定向到串口,也可以定向到Jlink RTT viewer,用哪个设备显示出来打印的信息根据自身需求来看。
<ps:keil mdk更新升级后,可能会因为printf影响代码编译后烧写程序后不能断电,或者debug后不能直接跳转到main,在最开始的Reset Handler,需要点击三次才能运行到main(虽然也没错,但是需要点击连接才可以运行;断电后像是没有程序,需要debug一下),这些都通过Syscall的加入迎刃而解(把printf定义成空也行),至于printf为什么影响这个现象原因不明。>
测试接口: