向控制台打印消息并进行日志记录

#前面提到重点

使用printk函数打印

默认创新LOG任务:log_process_thread_func

第一个练习

配置CONFIG

在main.c文件添加头文件和打印

c 复制代码
void button_pressed(const struct device *dev, struct gpio_callback *cb, uint32_t pins)
{
	int i;
	long int factorial = 1;

	printk("Calculating the factorials of numbers from 1 to %d:\n", MAX_NUMBER_FACT);
	for (i = 1; i <= MAX_NUMBER_FACT; i++) {
		factorial = factorial * i;
		printk("The factorial of %2d = %ld\n", i, factorial);
	}
	printk("_______________________________________________________\n");
	/*Important note!
	Code in ISR runs at a high priority, therefore, it should be written with timing in mind.
	Too lengthy or too complex tasks should not be performed by an ISR, they should be deferred
	to a thread.
	*/
}

第二个练习

STEP 1 - Enable the logger module

包含头文件

注册你的代码到LOG模块

打印


现象

第三个练习

选项 描述
CONFIG_LOG_MODE_DEFERRED 默认使用延迟模式。日志消息会被缓冲并在后续处理。该模式对应用的影响最小。耗时的处理被推迟到已知的上下文中。
CONFIG_LOG_PROCESS_THREAD 会创建一个线程,当FIFO满时或者定时唤醒打印
CONFIG_LOG_BACKEND_UART 把日志发送到UART控制台。
CONFIG_LOG_BACKEND_SHOW_COLOR 错误用红色打印,警告用黄色打印
CONFIG_LOG_BACKEND_FORMAT_TIMESTAMP 时间戳格式为 。hh:mm:ss.ms,us
CONFIG_LOG_MODE_OVERFLOW 如果没有空间记录新消息,则会丢弃最早的消息。

CONFIG_LOG_BACKEND_SHOW_COLOR=n

错误用红色打印,警告用黄色打印。并非所有终端模拟器都支持此功能。

禁止后,就可以用普通串口打印

CONFIG_LOG_MODE_MINIMAL=y

没有时间戳、前缀、颜色或异步日志,所有消息都是原地处理的

D=调试,I=信息,W=警告,E=错误

CONFIG_LOG_BACKEND_FORMAT_TIMESTAMP=y

相关推荐
mftang3 天前
Zephyr RTOS 中k_mutex(互斥锁)功能介绍
互斥锁·zephyr·zephyr rtos·k_mutex
fitpolo4 天前
蓝牙低功耗基3-蓝牙低功耗中的数据交4
zephyr
嵌入式学习和实践20 天前
Zephyr 实时系统下 W25Q128 + LittleFS 文件系统实战指南
zephyr·lfs文件系统·w25q128
mftang20 天前
Zephyr RTOS 下 BLE 主动扫描和被动扫描详解
被动扫描·蓝牙协议栈·zephyr·主动扫描
mftang20 天前
Zephyr RTOS中bt_conn_le_create 函数用法详细介绍
zephyr·ble central
mftang1 个月前
Zephyr RTOS 中 BT_CONN_CB_DEFINE 详解
zephyr·central·peripheral·注册回调
mftang2 个月前
Nordic nRF52805 Zephyr OS下低功耗模式应用详细介绍-D
watchdog·低功耗·zephyr
硬汉嵌入式2 个月前
Zephyr 十周年报告:开源嵌入式创新的十年历程
zephyr
fitpolo2 个月前
串行通讯(I2C)
zephyr
mftang3 个月前
Zephyr RTOS中的k_stack相关函数
zephyr·k_stack