串口log

本文详细介绍了如何检查AP端串口配置是否正确,包括DMA传输验证及GPIO状态确认,并阐述了Termios参数配置对通讯数据格式的影响,如波特率、奇偶校验等关键设置。
1:检查AP端串口配置是否ok:

a:高通平台查看DMA传输:

echo 1 > /sys/kernel/debug/msm_serial_hsl/loopback.0 //打开回环开关

adb shell cat /dev/ttyHSL1

另起窗口

# adb shell

# echo 11111111 > /dev/ttyHSL1

若DMA通道ok,控制台会循环显示;

b:查看uart gpio是否ok:

tx高电平、rfr为低电平,rx,cts为输入;

如果tx为低电平,那么gpio肯定没有配置好,再次检查gpio配置问题;

如果以上2步都ok,那么UART应该ok了,再次检查:

adb shell cat /dev/ttyHSL1

将TX与RX短接;

另起窗口

# adb shell

# echo 11111111 > /dev/ttyHSL1

循环显示那么恭喜UART功能配置好了。

2:Termios参数配置:


影响通讯数据格式的关键

几个参数:

1:波特率-speed,通常

115200,最高4M;

2:奇偶校验-Parity,通

常为None;

3:数据位-Data,通常

8bit;

4:停止位-Stopbits,通

常1bit;

一般情况下默认为115200 8N1,也就是波特率115200,8bit数据位,无奇偶校验,1bit停止位。

为了使得AP可以与模块串口通讯,必须先了解模块的termios设置。

Ap端termios设置:

首先应用打开串口时会设置termios:
### STM32 串口 Log 实现方法 对于STM32而言,实现串口Log功能可以通过配置USART外设来完成。具体来说,在初始化阶段设置好相应的波特率、数据位数等参数之后,就可以通过编写简单的发送函数来进行日志信息的输出[^1]。 为了更方便地管理这些日志消息,通常会创建一个专门用于打印日志的接口函数,比如`log_print()`。该函数内部调用了底层硬件操作API如`HAL_UART_Transmit()`或类似的库函数,负责将字符串形式的日志内容经由指定的串口号传输给上位机或其他接收端设备显示出来[^4]。 下面给出一段基于标准外设库的简单示例代码: ```c #include "stm32f1xx_hal.h" UART_HandleTypeDef huart1; void log_init(void){ /* 初始化 UART */ huart1.Instance = USART1; huart1.Init.BaudRate = 9600; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; HAL_UART_Init(&huart1); } void log_print(const char *str){ /* 发送字符串到串口 */ HAL_UART_Transmit(&huart1, (uint8_t*)str, strlen(str), HAL_MAX_DELAY); } ``` 上述例子展示了如何定义两个辅助性的全局变量和函数:一个是用来保存已配置好的串口句柄结构体实例;另一个则是封装了实际执行字符序列传送过程的方法。当应用程序需要记录某些状态变化或者错误提示的时候只需调用后者并传入待输出的信息即可。 此外,如果希望获得更加丰富的格式化能力,则可以考虑引入类似于C语言中的`printf()`风格的支持。这往往涉及到额外安装第三方组件或是自行扩展现有框架的功能集。例如SEGGER RTT提供了一套轻量级解决方案,仅需几个特定API就能满足大多数场景下的需求[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值