驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动。

IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD_GPIO1_IO00,是根据功能来命名的

每个引脚都包含这两个寄存器,表中的 XXXX 表示引脚的名字,例如本芯片中有一个名为 GPIO1_IO03 的引脚,编号为 GPIO1.3,你可以在参考手册的 IOMUXC 章节中找到它的 这 两 个 寄 存 器 : IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO04 以 及IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO04,以下简称 MUX 寄存器及 PAD 寄存器。根据寄存器说明即可对该引脚进行相应的配置。

可以看到,该寄存器主要有两个配置域,分别是 SION 和 MUX_MODE,其中 SION用于设置引脚在输出模式下同时开启输入通道。重点是 MUX_MODE 的配置,它使用 4 个寄存器位表示可选的 ALT0~ALT8这 9 个模式,若配置为 ALT5 则引脚会用作普通的 GPIO功能,用于输出高、低电平。

相对来说 PAD 寄存器的配置项就更丰富了,而且图中仅是该寄存器的部分说明,仔细看这些配置项,如 HYS 设置使用施密特模式的滞后功能,PUS 配置上下拉电阻的阻值,其它的还包含 PUE、PKE、ODE、SPEED、DSE 及SRE 的配置。

接下来则是要使用汇编来给这些寄存器赋值,并驱动它。

流程:

1、使能时钟

2、复用为GPIO

3、配置寄存器管脚

4、设置管脚方向

5、拉低管脚,点亮LED

 .global _start

 _start:
ldr R0, =0X020C406C //赋值给R0 时钟的地址
ldr R1, =0x0C000000 //开启GPIO1的时钟
str R1, [R0] //赋值 ldr R0, =0X020E0068 //赋值给R0 IO3的地址
ldr R1, =0x00000005 //IO3设置复用为GPIO_IO3
str R1, [R0] //赋值 ldr R0, =0X020E02F4 //赋值给R0 IO3的设置地址
ldr R1, =0x000010B0 //配置管脚寄存器
str R1, [R0] //赋值 ldr R0, =0X0209C004 //GDIR
ldr R1, =0x00000008 //输出
str R1, [R0] //赋值 loop:
bl led_on
bl delay
bl led_off
bl delay
b loop led_on:
ldr R0, =0X0209C000 //DR
ldr R1, =0x00000000 //输出低
str R1, [R0] //赋值
mov pc, lr //返回被调用处 led_off:
ldr R0, =0X0209C000 //DR
ldr R1, =0x00000008 //输出低
str R1, [R0] //赋值
mov PC, LR //返回被调用处 delay:
move R0, #0x4000
for:
sub R0, #
cmp R0, #
bne for
mov PC, LR //返回被调用处

这个代码初始化了GPIO1_3管脚,使用了delay函数,使led灯能闪烁

最新文章

  1. CentOS 7.0系统安装配置步骤详解
  2. weblogic启动失败:Could not obtain the localhost address 解决办法
  3. JS不用通过其他转换两个小数加减得到正确答案
  4. 我最优惠网系列(1)——HTML 解析类库HtmlAgilityPack
  5. error splicing file: file too large解决方法
  6. CSS3 background-size图片自适应
  7. X86调用约定
  8. uvision4 ide已停止工作
  9. 一个基于nodejs,支持http/https的中间人(MITM)代理,便于渗透测试和开发调试。
  10. HttpClient post中文乱码解决
  11. 死磕 java集合之ConcurrentHashMap源码分析(三)
  12. python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过autopy实现右键菜单和另存为操作
  13. PHP使用Redis实现消息队列
  14. C#轻量级高性能日志组件EasyLogger
  15. sql上下级关系查询
  16. bzoj千题计划140:bzoj4519: [Cqoi2016]不同的最小割
  17. javaScript书写规范
  18. 使用rollup 开发专业js library
  19. JVM:如何分析线程堆栈
  20. java实现网页截图

热门文章

  1. 学习Python基础的整体概要
  2. Android资源管理利器Resources和AssetManager
  3. 【CSS】width和height计算
  4. python编程基础之九
  5. Cocos Creator 通用框架设计 —— 网络
  6. BZOJ 2535: [Noi2010]Plane 航空管制2
  7. 【DP合集】合并 union
  8. Thymeleaf模板引擎的使用
  9. 【EasyCi】持续集成交付,一键式自动化部署系统,开箱即用
  10. 你真的了解Web前端开发吗?未来前端远比你想的有前途!