I.MX6U-裸机-汇编LED实验(1)

IM6U使用GPIO功能时,需要先使能时钟,把IO口进行复用为GPIO,然后配置IO口,再配置GPIO。

 1.使能时钟

打开所有时钟

CCM_CCGR0=3 << 30

2.IO复用

具体复用方式在寄存器类似下面这种:

IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO00

3.IO配置

具体配置方式在寄存器类似下面这种:

IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO00

常用寄存器:

(1)HYS:用于输入波形整型

(2)PUS:设置上下拉电阻(100k下\上拉,47k上拉,22k上拉)

(3)PUE:见下图

(4)PKE:使能PUE

(5)ODE:使能开路输出

(6)SPEED:设置速度

(7)DSE:设置驱动能力

(8)SRE:设置压摆率

 

4.GPIO配置

常用的寄存器如下:

(1)DR:指定输出高低电平

(2)GDIR:设置输入或输出

(3)PSR:用来读取GPIO当前高低电平状态

(4)ICR1:设置触发方式(高\低电平,上升\下降沿)

(5)ICR2:设置触发方式(高\低电平,上升\下降沿)

(6)EDGE_SEL:设置边沿中断

(7)IMR:控制GPIO中断是否打开

(8)ISR:中断标志位

重要代码分析:

ldr r0, =0X020E0068 /* 将寄存器 SW_MUX_GPIO1_IO03_BASE 加载到 r0 中 */
ldr r1, =0X5 /* 设置寄存器 SW_MUX_GPIO1_IO03_BASE 的 MUX_MODE 为 5 */
str r1,[r0]

 因为这里是 bit5进行复用,所以是ldr r1, =0X5 

ldr r0, =0X0209C004 /*寄存器 GPIO1_GDIR */
ldr r1, =0X0000008 
str r1,[r0]

 因为是 GPIO3,所以是 bit3为1,所以是:ldr r1, =0X0000008 


 到此为止,代码部分设计好之后,进行交叉编译环节


 交叉编译

需要3个部分:

arm-linux-gnueabihf-gcc -g -c led.s -o led.o

生成 led.o

arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf

将 led.o文件进行链接

arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin

生成“可执行”的二进制文件


代码烧写


 sd烧入

通过自带的 件 imxdownload

./imxdownload led.bin /dev/sdd 

遇见问题:

1.sd卡插入不显示

1.修改usb为3.0

2.在1之上还是不行则进行重启ubuntu和多次插拔sd卡

2.小灯不够亮

1.重新插入sd卡,然后启动

2.记得按一下复位按键

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值