串口调试小节之五 串口参数设置查询

串口终端有c_cflagc_iflag,c_oflag,c_lflag,c_cc[]五大struct termios结构体项需要设置;其中,c_cflag控制模式标志;c_iflag输入模式标志;c_oflag输出模式标志;c_lflag本地模式标志;c_cc[]控制字符数组;

各个结构体项含义如下:

6.1 c_iflag 标志常量


  IGNBRK  忽略输入中的 BREAK 状态。
  BRKINT  在BREAK 时产生SIGINT 信号。
  IGNPAR  忽略奇偶校验出错的字符
  PARMRK  标记奇偶校验错 
  INPCK   允许输入奇偶校验。
  ISTRIP  屏蔽字符第8位。
  INLCR    将输入中的 NL 翻译为 CR。
  IGNCR   忽略输入中的回车。
  ICRNL   将输入中的回车翻译为新行 (除非设置了 IGNCR)。
  IUCLC   将输入中的大写字母映射为小写字母。
  IXON   启用输出的 XON/XOFF 流控制。
  IXANY  允许任何字符来重新开始输出。
  IXOFF  启用输入的 XON/XOFF 流控制。
  IMAXBEL 当输入队列满时响零。Linux 没有实现这一位,总是将  它视为已设置。

6.2 c_oflag 标志常量


  OPOST 执行输出处理
  OLCUC 将输出中的小写字母映射为大写字母。
  ONLCR 将输出中的新行符映射为回车-换行。
  OCRNL 将输出中的回车映射为新行符
  ONOCR 不在第 0 列输出回车。
  ONLRET 不输出回车。
  OFILL 发送填充字符作为延时,而不是使用定时来延时。
  OFDEL 填充字符是 ASCII DEL (0177)。如果不设置,填充字符则是 ASCII NUL
  NLDLY   新行延时掩码。取值为 NL0 NL1
  CRDLY   回车延时掩码。取值为 CR0, CR1, CR2, CR3
  TABDLY  水平跳格延时掩码。取值为 TAB0, TAB1, TAB2, TAB3 ( XTABS)。取值为 TAB3,即 XTABS,将扩展跳格为空格 (每个跳格符填充 8 个空格)(?)
  BSDLY   回退延时掩码。取值为 BS0 BS1(从来没有被实现过)
  VTDLY   竖直跳格延时掩码。取值为 VT0 VT1
  FFDLY   进表延时掩码。取值为 FF0 FF1

6.3 c_cflag 标志常量

<think>嗯,用户这次想了解SysConfig在串口(UART)方面的具体应用和配置方法。结合之前的交互历史,用户似乎正在开发嵌入式系统,关注点从之前的CAN总线转移到了串口配置。用户引用的资料提到SysConfig能简化寄存器配置,自动生成高效宏定义,这次需要同样详细的串口配置指导。 用户可能正在评估SysConfig对串口开发的实际价值,或是遇到具体配置问题。考虑到之前回复CAN配置时用户没有追问,这次需要更侧重实操细节:既要说明图形化配置流程,也要解释生成的底层宏定义机制,因为用户两次都提到"避免手动编写寄存器"这个优势。 从技术维度看,需要覆盖的关键点包括:1)串口基本参数配置的界面操作 2)中断/DMA等高级功能配置 3)生成代码的结构解析。特别注意用户拼写了"syscfig"这个错误,回复时要在首句用正确拼写"SysConfig"示范但不必刻意纠正用户。 上次提供的三级目录结构反馈良好,这次继续采用相似框架,但将波特率计算这类技术细节放在配置流程部分展开。新增"常见问题"小节作为预判——用户若遇到配置不生效的情况,很可能需要校验时钟源配置。最后的相关问题设计成阶梯式:从基础配置(波特率)到高级应用(协议解析),方便用户按需追问。 </think>SysConfig 在串口(UART)配置中的应用与 CAN 类似,通过图形化界面简化底层寄存器操作,大幅提升开发效率。以下是关键配置步骤和应用场景: --- ### **一、SysConfig 串口配置核心流程** 1. **引脚复用** - 在图形界面中选择 UART 模块(如 `UART0`) - 自动分配 TX/RX 引脚(如 `GPIO0_TX`, `GPIO1_RX`),支持引脚冲突检测 - 生成宏:`UART_PIN_CONFIG_TX = IO_MUX_GPIO0`, `UART_PIN_CONFIG_RX = IO_MUX_GPIO1` 2. **通信参数配置** - **波特率**:直接输入数值(如 115200),工具自动计算分频系数 - **数据格式**:下拉菜单选择数据位(8/9)、停止位(1/2)、校验位(奇/偶/无) - 生成宏: ```c #define UART_BAUD_RATE 115200 #define UART_DATA_BITS UART_CONFIG_DATA_8 ``` 3. **中断与 DMA 配置** - 勾选中断事件(接收完成、发送空闲、错误检测) - 启用 DMA 传输(减轻 CPU 负载) - 生成中断处理函数框架: ```c void UART0_IRQHandler(void) { if(UARTIntStatus(UART0_BASE, true) & UART_INT_RX) { // 处理接收数据 } } ``` 4. **高级功能** - FIFO 阈值设置(触发中断的水位线) - 流控(CTS/RTS)配置 - 串口唤醒低功耗模式 --- ### **二、典型应用场景** 1. **调试日志输出** - 配置 UART0 为 115200-8-N-1,连接 PC 串口助手 - 生成打印函数宏:`DEBUG_PRINT(fmt, ...) UARTwrite(UART0, fmt, ...)` 2. ** Modbus 工业通信** - 设置 19200 波特率 + 偶校验 - 启用 DMA 实现高效数据块传输 - 自动生成 CRC 校验函数接口 3. **蓝牙模组AT指令控制** - 配置双缓冲接收机制,避免指令截断 - 利用接收超时中断识别指令结束 --- ### **三、优势与维护** 1. **一键切换配置** 修改波特率后,重新生成代码即可生效,无需手动修改寄存器: ```diff - #define UART_BAUD_RATE 9600 + #define UART_BAUD_RATE 115200 // SysConfig自动更新 ``` 2. **错误预防** 图形界面强制校验参数有效性(如:波特率超出范围提示),避免硬件锁死。 3. **跨平台兼容** 生成代码支持 TI/ST/NXP 等多品牌 MCU,降低移植成本。 --- ### **四、操作示例(TI CCS 环境)** 1. 打开 SysConfig 工具 → 新建 UART 实例 2. 拖放引脚到目标位置 ![引脚配置界面](https://example.com/uart_pin_mux.png) 3. 设置参数 → 点击 **Generate Code** 4. 在工程中调用生成的 API: ```c UART_init(); // 初始化硬件 UART_write("Hello"); // 发送数据 ``` > 提示:使用 `UART_RX_BYTE_TIMEOUT` 宏可优化短数据包接收效率[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值