N13 定时器GPT1、串口UART

一、C语言

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

关键字:

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

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

二、GPT1

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

你现在学的就是 GPT1

  1. GPT1 核心功能

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

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

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

  5. 溢出中断 → 定时任务

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

  1. 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,控制收发数据的速率(即波特率)。
相关推荐
一个有温度的技术博主5 分钟前
网安实验系列七:域名收集
linux·运维·服务器
我爱学习好爱好爱8 分钟前
Ansible 环境搭建
linux·运维·ansible
野犬寒鸦25 分钟前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
人工智能训练44 分钟前
从 1.1.3 到 1.13.2!Ubuntu 24.04 上 Dify 升级保姆级教程(零数据丢失 + 一键迁移)
linux·运维·人工智能·windows·ubuntu·dify
lifejump44 分钟前
双冗余链路实现(2/2期)
网络
袖手蹲1 小时前
Arduino UNO Q 板载 Nanobot 自动化编程指南之七
运维·人工智能·自动化
我要成为嵌入式大佬1 小时前
正点原子MP157--问题详解--四(关于根文件系统驱动模块指令的注意事项)
linux·运维·服务器
feng68_1 小时前
Redis架构实践
linux·运维·redis·架构·bootstrap
欧云服务器1 小时前
宝塔计划任务怎么自动删除多少个以外的文件?
linux·运维·服务器
F1FJJ1 小时前
Shield CLI PostgreSQL 插件现已上架 VS Code 扩展市场
网络·vscode·网络协议·postgresql·开源软件