问题引入:
case ScaleInit: printf("case ScaleInit\n");Do_Scale_Init();
我希望一些打印在自己开发的时候可以工作,在释放的时候就不输出了。
程序设计:对printf封装,做一个权限标识
uint32_t sysDebugFlag=0xFF;
#define ERR 1
#define WARN 2
#define INFO 3
#define DEBUG 4
#define LOG_PRESENT_BIT(x) (((uint32_t)((uint32_t)1<<(x)))) //获得第X位
#define LOG_BIT_ON(m, b) (((m) & LOG_PRESENT_BIT(b)) != 0)/*真-是1 假-是0*/
#define LOG_SET_BIT(m, b) ((m) |= LOG_PRESENT_BIT(b)) /*设位*/
#define LOG_CLEAR_BIT(m, b) ((m) &= ~LOG_PRESENT_BIT(b)) /*置位*/
本来以为#define LOG_BIT_ON(m, b)可以写成#define LOG_BIT_CHECK(m, b)或者#define IS_LOG_BIT_ON(m, b)
这个样子的,因为是返回0 1的,其实用的时候: if(LOG_BIT_ON(sysDebugFlag,level)所以坚持原稿。
#define log(level, fmt, args...) do{\
if(LOG_BIT_ON(sysDebugFlag,level)){\
if(level == ERR){\
printf("\033[0;31m");}\
else if(level == WARN)\
printf("\033[0;32m");\
else if(level == INFO)\
printf("\033[0;33m");\
else if(level == DEBUG)\
printf("\033[0;37m");\
printf("[#]");\
printf("[%d%]" , osGetCPUUsage());\
printf_time();\
printf(fmt, ##args);\
printf("\033[0;39m");\
}\
}while(0)
https://blog.youkuaiyun.com/wilson1068/article/details/42970551
WIN10串口助手其实看不出 看到的是
uint32_t sysDebugFlag=0xFF;
#define ERR 1
#define WARN 2
#define INFO 3
#define DEBUG 4
#define LOG_PRESENT_BIT(x) (((uint32_t)((uint32_t)1<<(x))))
#define LOG_BIT_ON(m, b) (((m) & LOG_PRESENT_BIT(b)) != 0)/*真-是1 假-是0*/
#define LOG_SET_BIT(m, b) ((m) |= LOG_PRESENT_BIT(b))/*设位*/
#define LOG_CLEAR_BIT(m, b) ((m) &= ~LOG_PRESENT_BIT(b))/*置位*/
#define log(level, fmt, args...) do{\
if(LOG_BIT_ON(sysDebugFlag,level)){\
if(level == ERR){\
printf("\033[0;31m");}\
else if(level == WARN)\
printf("\033[0;32m");\
else if(level == INFO)\
printf("\033[0;33m");\
else if(level == DEBUG)\
printf("\033[0;37m");\
printf("[#]");\
printf("[%d%]" , osGetCPUUsage());\
printf_time();\
printf(fmt, ##args);\
printf("\033[0;39m");\
}\
}while(0)
void log(level, fmt, args...)
do{
if(LOG_BIT_ON(sysDebugFlag,level))
{
if(level == ERR)
printf("\033[0;31m");
else
if(level == WARN)
printf("\033[0;32m");
else
if(level == INFO)
printf("\033[0;33m");
else
if(level == DEBUG)
printf("\033[0;37m");
printf("[#]");
printf("[%d%]" , osGetCPUUsage());
printf_time();
printf(fmt, ##args);
printf("\033[0;39m");
}
}while(0)