一、C语言


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

关键字:
inline = 内联 意思是:告诉编译器,把这个函数的代码直接 "展开" 到调用的地方,不进行函数调用。
就像把一段代码复制粘贴过去,而不是跳过去执行。
二、GPT1
GPT1 = 第一个通用定时器 i.MX6ULL 有 GPT1、GPT2、GPT3 三个定时器,功能完全一样,只是硬件通道、引脚、中断号不同。
你现在学的就是 GPT1。
GPT1 核心功能
32 位计数器 → 做精准延时
输出比较(3 通道) → 生成 PWM
输入捕获(2 通道) → 测脉冲、频率
溢出中断 → 定时任务
SWR 软件复位 → 初始化用
- 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,控制收发数据的速率(即波特率)。

