[XMG助力国产生态]
@XMGroupe.
本文介绍MC3172移植EasyLogger教程。
本人从Github中下载EasyLogger源代码后,移植到MC3172时没有像移植到STM32那么顺利。
咨询感芯技术后得知,官方没有移植标准库,标准库的代码需要自己实现。
因此对EasyLogger源代码进行了一些修改:
1.移除了BUF和ASYNC;
2.标准库的函数在elog.c中进行了实现(能力有限,有些代码可能不是最优化版本);
3.标准库的变量在elog.h中进行了声明;
4.代码的打印分隔符已经修改完,移植完可以直接使用;
5.代码添加后需要进行printf重定向,头文件引用在elog.c中;
6.elog_port_output中已经添加了输出函数。
void elog_port_output(const char *log, size_t size) {
/* add your code here */
printf_("%.*s", size, log);
}
*printf重定向方法可以参照论坛中的帖子添加开源printf库。
*串口调试过程中出现的问题可以参照【调试记录】调整芯片主频之后串口需要修改串口初始化代码。
移植流程:
1.将修改后的EasyLogger文件夹放入工程中;
2.修改printf重定向函数引用,在elog.c中
#include "../USER_CODE/printf.h"
#include "../USER_CODE/uart.h"
3.配置线程,可以参考官方给出的极简开发手册
4.在主函数中引用elog.h的头文件
5.在线程中初始化elog函数,初始化方法可以参考如下代码
/* 初始化elog */
elog_init();
elog_set_text_color_enabled(true);//打开颜色模式
elog_set_fmt(ELOG_LVL_ASSERT, ELOG_FMT_ALL);
elog_set_fmt(ELOG_LVL_ERROR, ELOG_FMT_LVL | ELOG_FMT_TAG);
elog_set_fmt(ELOG_LVL_WARN, ELOG_FMT_LVL | ELOG_FMT_TAG);
elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_LVL | ELOG_FMT_TAG);
elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_ALL & ~(ELOG_FMT_TIME | ELOG_FMT_P_INFO | ELOG_FMT_T_INFO));
elog_set_fmt(ELOG_LVL_VERBOSE, ELOG_FMT_ALL);
elog_start();
log_a("Hello EasyLogger!");
log_e("Hello EasyLogger!");
log_w("Hello EasyLogger!");
log_i("Hello EasyLogger!");
log_d("Hello EasyLogger!");
log_v("Hello EasyLogger!");
6.下载MobaXterm后配置端口进行测试
最终效果
离线
太厉害了,这次调试也有方案了
离线