瑞萨芯片RL78添加printf打印日志
标准库要打开,C99或C90都可以。
在main文件添加标准头文件
/* Start user code for include. Do not edit comment generated here */
#include "stdio.h"
/* End user code. Do not edit comment generated here */
重映射putchar函数
int __far putchar(int c)
{
debug_uart0_snd_flag=R_UART0_Send((uint8_t*)&c,1);
while(debug_uart0_snd_flag==0)
{
//debug_uart0_snd_flag = 0;
}
return c;
}
重映射函数要注意,如果用中断发送一定要增加等待发送结束命令,我之前没有添加,打印出来的只有第一个字母。
这样就可以正常使用printf命令了。
调试的时候发现,在中断优先级高的函数里调用printf会造成系统重启。解决的办法有两个,一个是把uart0的发送中断优先级调到最高。第二个就是不用中断方式发送串口数据,改为循环发送。我用的是第二个方式,更方便一点。直接写寄存器。
int __far putchar(int c)
{
ST