当前位置: 首页 > article >正文

【Linux驱动开发】裸机点亮LED灯实验

实验内容

本实验使用的是正点原子I.MX6ULL开发版的汇编LED灯实验,通过GPIO1_IO03引脚输出低电平点亮小灯。
通过操作寄存器使GPIO1_IO03输出低电平包括以下几步:
1、开启时钟。
2、设置IO口的复用功能为gpio。
3、对IO进行配置,如上下拉、速度等。
4、设置GPIO1_IO03为输出。
5、向GPIO1的data register中IO03对应位写入0,使得GPIO1_IO03输出低电平。

时钟

经过测试,要想点亮小灯最少需要开启的时钟如下:

void clk_enable(void)
{
	CCM_CCGR0 = 0x00000003;
	CCM_CCGR1 = 0x0c0c0000;
	CCM_CCGR2 = 0x00030000;
	CCM_CCGR3 = 0x003c0000;
	CCM_CCGR4 = 0x0000c0c0;
	CCM_CCGR5 = 0x00030000;
	CCM_CCGR6 = 0x00000000;
}

分别是开启以下时钟:
aips_tz1 clocks (aips_tz1_clk_enable)
gpio1 clock (gpio1_clk_enable)
sim_s clock (sim_s_clk_enable)
ipmux1 clock (ipmux1_clk_enable)
mmdc_core_aclk_fast_core_p0 clock (mmdc_core_aclk_fast_core_p0_enable)
a7 clkdiv patch clock (a7_clkdiv_patch_clk_enable)
pl301_mx6qper2_mainclk_enable (pl301_mx6qper2_mainclk_enable)
sim_cpu clock(sim_cpu_clk_enable)
sim_main clock (sim_main_clk_enable)

IO寄存器

在这里插入图片描述
用于设置GPIO1_IO03引脚的复用功能,写入0x5设置成GPIO功能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HYS:用于设置输入接收器的施密特触发器是否使能。
对施密特触发器的解释:想象你有一个开关,但这个开关不是普通的开关,它有点“迟钝”。普通的开关只要你轻轻一碰就会打开或关闭,但这个开关需要你用力推到一定程度才会打开,而且一旦打开,就算你稍微松开一点,它也不会立刻关闭,而是要保持打开状态直到你完全松开并且再往回推一点才会关闭。这个“迟钝”的开关就有点像施密特触发器或迟滞比较器。
PUS:设置上下拉电阻。
ODE:开启或关闭开路输出功能。
开路输出应用场景:I2C、SPI等串行通信接口。
推挽输出应用场景:数字电路的开关控制、驱动继电器、LED等负载。
SPEED:设置IO速度。
DSE:设置压摆率。压摆率就是IO电平跳变所需的时间,波形越陡,压摆率越好。

GPIO寄存器

在这里插入图片描述
每个GPIO组对应一组寄存器,本实例用到了data register寄存器和direction register寄存器。
在这里插入图片描述
配置引脚输入还是输出。

在这里插入图片描述
引脚配置成输出后,对应位写入1就输出高电平,写入0就输出低电平。


http://www.kler.cn/a/405482.html

相关文章:

  • 【Vue】指令扩充(指令修饰符、样式绑定)
  • 使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像
  • 推荐一款专业电脑护眼工具:CareUEyes Pro
  • GitLab|GitLab报错:PG::ConnectionBad: could not connect to server...
  • 工程师 - 智能家居方案介绍
  • ubuntu18.04 vscode c++ filesystem 使用
  • 向量数据库FAISS之二:基础进阶版
  • c与c++比较
  • 高性能服务器模型之Reactor(单线程版本)
  • Windows电脑本地部署llamafile并接入Qwen大语言模型远程AI对话实战
  • 【高阶数据结构】图论
  • JavaScript DOM使用
  • 《Python游戏编程入门》注-第6章3
  • mysql 与 mybatis 错误记录
  • LC 543. Diameter of Binary Tree
  • 【linux】(16)date命令
  • Collecting package metadata (current_repodata.json): ...working... done
  • 【算法】计算程序执行时间(C/C++)
  • AI赋能电商:构建高效、智能化的新零售生态
  • 【ubuntu】开机进入initramfs,无法开机
  • SpringBoot中小企业人事管理系统:设计模式
  • 【unity小技巧】Unity 四叉树算法实现空间分割、物体存储并进行查询和碰撞检测
  • qt+opengl 三维物体加入摄像机
  • Qt交叉编译x86和arm心得
  • Thymeleaf模板引擎生成的html字符串转换成pdf
  • 理论结合实践:用Umami构建网站分析系统