MX6U-MINI语言版开发流程(LED)

C语言版开发流程(LED)

前言:本章我们就来学习如何用汇编来完成 C 语言环境的初始化工作,然后从汇编跳转到 C 语言代码里面去。比如初始化 DDR、设置堆栈指针 SP 等等,当这些工作都做完以后就可以进入 C 语言环境,也就是运行 C 语言代码,一般都是进入 main 函数。所以我们有两部分文件要做:

①、汇编文件
汇编文件只是用来完成 C 语言环境搭建。
②、C 语言文件
C 语言文件就是完成我们的业务层代码。

实验程序编写:新建 VScode 工程,工程名字为“ledc”,新建三个文件:start.S、main.c 和 main.h。其中 start.S是汇编文件,main.c 和 main.h 是 C 语言相关文件。
1.在start.S中写C语言的启动环境

2.C 语言部分有两个文件 main.c 和 main.h,main.h 里面主要是定义的所要用到的寄存器地址。
时钟 GPIO1_IO03 相关寄存器地址定义:
2.1 CCM 相关寄存器地址
2.2 IOMUX 相关寄存器地址
2.3 GPIO1 相关寄存器地址
在 main.h 中我们以宏定义的形式定义了要使用到的所有寄存器.

3.Main.c用 C 语言来完成对 I.MX6U 处理器的 GPIO 初始化和控制。
3.1使能 I.MX6U 所有外设时钟
3.2初始化 LED 对应的 GPIO(如复用,下拉,kepper 功能,pull/keeper 使能,输入输出,速度,驱动能力,转换率)

4. 以上就完成了代码的编写,接下来是编译。编写 Makefile准备编译。

5.编写链接脚本

6 用Makefile 和链接脚本文件重新编译工程,编译成功以后就可以烧写到 SD 卡中验证了。

7.使用软件 imxdownload 将编译出来的 ledc.bin 烧写到 SD 卡中。该参考上面汇编的第8小节。

使用 C 语言编写 LED 灯驱动的时候,每个寄存器的地址我们都需要写宏定义,使用起来非常的不方便。我们可以借助 C 语言里面的结构体成员地址递增的特点来将某个外设的所有寄存器写入到一个结构体里面,然后定义一个结构体指针指向这个外设的寄存器基地址,这样我们就可以通过这个结构体指针来访问这个外设的所有寄存器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值