一、C语言

DNS(Domain Name System,域名系统) 是互联网的核心基础设施,负责将人类易记的域名(如 www.baidu.com)转换为计算机能识别的 IP 地址(如 180.101.49.12),从而实现网络通信。

关键字:

inline = 内联意思是:告诉编译器,把这个函数的代码直接 “展开” 到调用的地方,不进行函数调用。

就像把一段代码复制粘贴过去,而不是跳过去执行。

二、GPT1

GPT1 = 第一个通用定时器i.MX6ULL 有 GPT1、GPT2、GPT3 三个定时器,功能完全一样,只是硬件通道、引脚、中断号不同

你现在学的就是 GPT1

2. GPT1 核心功能

  1. 32 位计数器 → 做精准延时

  2. 输出比较(3 通道) → 生成 PWM

  3. 输入捕获(2 通道) → 测脉冲、频率

  4. 溢出中断 → 定时任务

  5. SWR 软件复位 → 初始化用

3. GPT1 最常用用途

① 做延时(最常用)

  • 配置分频 → 计数器开始数数

  • 循环等待计数到目标 → 延时完成

  • 精准 us/ms 级延时

② 输出 PWM

  • 比较器匹配 → 电平翻转

  • 调节比较值 = 调节占空比

③ 定时中断

  • 计数器溢出 → 触发中断

  • 用来做周期性任务

三、UART

串行:单方向数据线1根

并行:单方向数据线>=2根

同步通信:通信双方使用同一时钟信号(同步信号)

异步通信:通信双方无同步信号

核心通信要素:先传低位
  • 起始信号:通信的 “开场白”,通常是电平从高→低(或低→高)的跳变,告诉接收方 “数据要来了”。
  • 停止信号:通信的 “结束语”,通常是电平恢复到空闲状态(一般为高电平),标志一帧数据传输结束。
  • 通信速率:单位时间内传输的比特数(如 9600bps、115200bps),由位时间决定(你可以用 GPT 定时器精准控制高低电平持续时间)。
  • 信息表现形式:约定高电平 (H) 代表逻辑 1,低电平 (L) 代表逻辑 0,这是数字通信最基础的编码方式。
起始信号
  • 定义:数据线由高电平 → 低电平的跳变,是通信的 “唤醒信号”,1个bit高电平。
  • 作用:告诉接收方 “数据即将开始传输,准备同步采样”。
  • 注意:这段低电平是同步握手信号,不携带数据信息,所以不采样

停止信号:数据线由低到高(如果数据先是高则继续保持)

                  ------目的为了让数据线保持空闲时为高电平

停止位:停止信号后的1~2bit的高电平

数据位:5-8位(90+%),

波特率:单位时间(1s)可以传输的码元数,uart中码元数是1,即单位时间传输的bit数。

奇偶校验 = 给数据加一位校验位,用来检查传输过程中有没有出错。

DMA(直接内存访问)

  • Peripheral Bus(外设总线)CPU 与 UART 之间的通信通道,用于读写寄存器、配置模块、传输数据。
  • Peripheral Bus Interface(外设总线接口)桥接外设总线与 UART 内部逻辑,完成数据 / 地址的同步、转换和缓冲。
  • Interrupt & DMA Requests(中断与 DMA 请求)向 CPU 发送中断信号(如 “接收 FIFO 满”“发送完成”“帧错误”)或 DMA 请求,实现高效数据传输,避免 CPU 轮询。
  • Peripheral Clock(外设时钟)为总线接口、中断等模块提供时钟,由 Clock Gating 控制开关,不用时关闭以降低功耗。
  • Module Clock(模块时钟)UART 核心功能的时钟源,先进入 Clock Gating & Divider 进行分频,生成 ref_clk(参考时钟)。
  • BRM(波特率发生器)接收 ref_clk,生成精确的波特率时钟 brm_clk,控制收发数据的速率(即波特率)。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐