IMX6ULL裸机开发——GPIO的使用

i.MX6ULL 是 Cortex‑A7,ARM32,无操作系统,直接操作寄存器;没有库函数,全部读写内存映射寄存器。

GPIO 使用前必须先开启 IO 时钟 → 设置 IO 复用功能 → 设置电气属性 (PAD) → GPIO 方向 → 输入 / 输出读写;

这里以GPIO1_3举例子

CCM 时钟门控寄存器:CCM_CCGRx

作用:打开 GPIO 外设的时钟,不打开,GPIO 寄存器读写无效

  • GPIO1:CCM_CCGR1,bit26~27(CG13),写 11 开启时钟
  • GPIO2:CCM_CCGR0
  • GPIO3:CCM_CCGR0
  • GPIO4:CCM_CCGR1
  • GPIO5:CCM_CCGR6

2. IOMUXC_SW_MUX_CTL_PAD_xxx:IO 复用寄存器

作用:选择这个 PAD 引脚的功能,把引脚复用成 GPIO 功能

  • MUX_MODE 3:0:配置为对应 GPIO 模式
  • 如果不配置,引脚默认是别的功能(UART、SPI 等),GPIO 控制不了电平。

3. IOMUXC_SW_PAD_CTL_PAD_xxx:PAD 配置寄存器

作用:引脚电气特性:上下拉、施密特、速度、驱动能力、开漏 例:0x10B0,配置下拉、100MHz 速度、R0 驱动,关闭开漏、关闭 HYS。

4. GPIO 模块内部寄存器(2 个)

① GPIOx_GDIR:GPIO 方向寄存器

  • 对应 bit 写 1 → 输出模式;写 0 = 输入 GPIO1_IO03:bit3 置 1。

② GPIOx_DR:GPIO 数据寄存器

输出模式:对应 bit 写 1 → 引脚高电平;写 0 → 引脚低电平。输出模式读写 DR;输入模式读 PSR

初始化好了之后,就是可以和STM32一样,直接操作GPIO的DR寄存器进行输出高低电平了,从而实现控制LED灯

而IMX6ULL有一点不同的是,官方提供了SDK的包,可以直接拿过来就用,可以不用自己去定义每个寄存器的宏定义,但是仅限IMX6ULL了,其他芯片都是没有的,所以要习惯自己写头文件,去定义寄存器的宏定义。

以上是初始化和操作一个GPIO引脚需要用到的相关寄存器,这些寄存器的地址,都可以直接在NXP的官方手册上找到相对应的地址和偏移量,直接计算之后抄过来就可以用了。

相关推荐
思麟呀1 小时前
嵌入式入门(四)USART 串口深度解析:单片机第一次与电脑对话
c语言·单片机·嵌入式硬件·1024程序员节
BSD_HY1 小时前
薄膜开关分压网络接 MCU ADC:通道复用下的两个坑
单片机·薄膜开关·源头工厂
NamoAmitabha1281 小时前
BSP,板级支持包--deepseek
单片机·嵌入式硬件·fpga开发
小白今天也很酷1 小时前
MCXN947更新板载DAP_Link固件的方法
c语言·python·单片机·ubuntu·excel·1024程序员节
艾芯微科技9 小时前
HR911130C|汉仁 HANRUN 集成变压器千兆 RJ45 网口参数、电路、PCB 布线、替代与采购避坑
网络·单片机·嵌入式硬件·集成测试·51单片机
白搞电子11 小时前
ESP-Mosaico 黑胶轮滑动画与音乐编排:从设备原型到电脑预览工作台
单片机·嵌入式硬件
新晨单片机设计11 小时前
S028C-基于STM32单片机WIFI智能电表(温度)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·wifi智能电表
幼儿园蛋小黑12 小时前
LVGL 入门指南:从零搭建嵌入式 GUI 界面
嵌入式硬件
1234567890@world12 小时前
正点原子 ATK-DLRK3568 嵌入式Linux系统开发手册V1.3 详细总结
linux·stm32·单片机
女神下凡13 小时前
芯参谋(68):ADC模数转换器电路设计指南
arm开发·单片机·嵌入式硬件·硬件工程·设计规范