1、新建工程

在虚拟机中打开vscode软件,新建一个LEDC的文件夹,并保存工作区。
在LEDC文件夹中新建start.s main.c main.h三个文件

srart.s

.global _start       /* 全局标号 *//** 描述:    _start函数,程序从此函数开始执行,此函数主要功能是设置C*       运行环境。*/
_start:/* 进入SVC模式 */mrs r0, cpsrbic r0, r0, #0x1f   /* 将r0寄存器中的低5位清零,也就是cpsr的M0~M4   */orr r0, r0, #0x13     /* r0或上0x13,表示使用SVC模式                   */msr cpsr, r0      /* 将r0 的数据写入到cpsr_c中                    */ldr sp, =0X80200000  /* 设置栈指针             */b main               /* 跳转到main函数         */

main.c

/**************************************************************
文件名 :    mian.c
作者     : 果果小师弟
版本     : V1.0
描述     : I.MX6U开发板裸机实验2 C语言点灯使用C语言来点亮开发板上的LED灯,学习和掌握如何用C语言来完成对I.MX6U处理器的GPIO初始化和控制。
其他     : 无
日志     : 初版V1.0 2021-07-04 19:48:43 果果创建
**************************************************************/
#include "main.h"/** @description    : 使能I.MX6U所有外设时钟* @param       : 无* @return       : 无*/
void clk_enable(void)
{CCM_CCGR0 = 0xffffffff;CCM_CCGR1 = 0xffffffff;CCM_CCGR2 = 0xffffffff;CCM_CCGR3 = 0xffffffff;CCM_CCGR4 = 0xffffffff;CCM_CCGR5 = 0xffffffff;CCM_CCGR6 = 0xffffffff;
}/** @description  : 初始化LED对应的GPIO* @param        : 无* @return       : 无*/
void led_init(void)
{/* 1、初始化IO复用 */SW_MUX_GPIO1_IO03 = 0x5;   /* 复用为GPIO1_IO03 *//* 2、、配置GPIO1_IO03的IO属性  *bit 16:0 HYS关闭*bit [15:14]: 00 默认下拉*bit [13]: 0 kepper功能*bit [12]: 1 pull/keeper使能*bit [11]: 0 关闭开路输出*bit [7:6]: 10 速度100Mhz*bit [5:3]: 110 R0/6驱动能力*bit [0]: 0 低转换率*/SW_PAD_GPIO1_IO03 = 0X10B0;     /* 3、初始化GPIO */GPIO1_GDIR = 0X0000008; /* GPIO1_IO03设置为输出 *//* 4、设置GPIO1_IO03输出低电平,打开LED0 */GPIO1_DR = 0X0;
}/** @description  : 打开LED灯* @param       : 无* @return       : 无*/
void led_on(void)
{/* * 将GPIO1_DR的bit3清零   */GPIO1_DR &= ~(1<<3);
}/** @description  : 关闭LED灯* @param       : 无* @return       : 无*/
void led_off(void)
{/*    * 将GPIO1_DR的bit3置1*/GPIO1_DR |= (1<<3);
}/** @description  : 短时间延时函数* @param - n  : 要延时循环次数(空操作循环次数,模式延时)* @return        : 无*/
void delay_short(volatile unsigned int n)
{while(n--){}
}/** @description  : 延时函数,在396Mhz的主频下*                   延时时间大约为1ms* @param - n   : 要延时的ms数* @return         : 无*/
void delay(volatile unsigned int n)
{while(n--){delay_short(0x7ff);}
}/** @description  : mian函数* @param       : 无* @return       : 无*/
int main(void)
{clk_enable();      /* 使能所有的时钟          */led_init();           /* 初始化led           */while(1)          /* 死循环              */{ led_off();      /* 关闭LED            */delay(500);       /* 延时大约500ms        */led_on();     /* 打开LED            */delay(500);       /* 延时大约500ms        */}return 0;
}

main.h

#ifndef __MAIN_H
#define __MAIN_H
/*************************************
文件名 :    main.h
作者     : 果果小师弟
版本     : V1.0
描述     : 时钟GPIO1_IO03相关寄存器地址定义。
其他     : 无
日志     : 初版V1.0 2021-07-04 19:46:32 果果创建
*************************************//* * CCM相关寄存器地址 */
#define CCM_CCGR0           *((volatile unsigned int *)0X020C4068)
#define CCM_CCGR1           *((volatile unsigned int *)0X020C406C)#define CCM_CCGR2             *((volatile unsigned int *)0X020C4070)
#define CCM_CCGR3           *((volatile unsigned int *)0X020C4074)
#define CCM_CCGR4           *((volatile unsigned int *)0X020C4078)
#define CCM_CCGR5           *((volatile unsigned int *)0X020C407C)
#define CCM_CCGR6           *((volatile unsigned int *)0X020C4080)/* * IOMUX相关寄存器地址 */
#define SW_MUX_GPIO1_IO03   *((volatile unsigned int *)0X020E0068)
#define SW_PAD_GPIO1_IO03   *((volatile unsigned int *)0X020E02F4)/* * GPIO1相关寄存器地址 */
#define GPIO1_DR            *((volatile unsigned int *)0X0209C000)
#define GPIO1_GDIR          *((volatile unsigned int *)0X0209C004)
#define GPIO1_PSR           *((volatile unsigned int *)0X0209C008)
#define GPIO1_ICR1          *((volatile unsigned int *)0X0209C00C)
#define GPIO1_ICR2          *((volatile unsigned int *)0X0209C010)
#define GPIO1_IMR           *((volatile unsigned int *)0X0209C014)
#define GPIO1_ISR           *((volatile unsigned int *)0X0209C018)
#define GPIO1_EDGE_SEL      *((volatile unsigned int *)0X0209C01C)#endif

2、编写Makefile

objs := start.o main.oledc.bin : $(objs)arm-linux-gnueabihf-ld -Ttext 0X87800000  $^ -o ledc.elfarm-linux-gnueabihf-objcopy -O binary -S ledc.elf $@arm-linux-gnueabihf-objdump -D -m arm ledc.elf > ledc.dis%.o:%.carm-linux-gnueabihf-gcc -Wall -nostdlib -c  -o $@ $<    %.o:%.sarm-linux-gnueabihf-gcc -Wall -nostdlib -c  -o $@ $<clean:rm -rf *.o ledc.bin ledc.elf ledc.dis

3、编译代码

编写好Makefile文件后就可以在终端输入make指令来编译代码

编译没有错误后,会生成ledc.bin ledc.dis ledc.elf main.o start.o五个文件。

4、烧录程序

这里选择SD卡的模式。

首先要将imxdownload文件复制到工程文件LEDC中。你可以用命令行复制,也可以用鼠标右键复制都可以。如下图所示:

cp ../1_leds/imxdownload  ./

将SD卡插入电脑
要保证ubuntu正确识别到SD卡。
然后使用ls /dev/sd* -l查看SD卡设备

ls /dev/sd* -l

可以判断出SD卡设备为sdb

然后使用./imxdownload led.bin /dev/sdb命令向SD卡烧录ledc.bin文件。

./imxdownload ledc.bin /dev/sdb


烧录完成,拔掉SD卡,将SD卡插入到开发板中,接入电源,按下复位按键。之后就可以观察到LED每隔一秒钟闪烁一次。

I.MX6ULL—使用C语言点亮LED灯相关推荐

  1. 单片机C语言-1-点亮LED灯

    单片机C语言-1-点亮LED灯 #include "stm32f10x.h" //引入头文件//高低电平 //低电平 GND 0V //高电平 VCC 单片机的VCC供电电压//I ...

  2. S3C2440之裸机之C语言按键点亮LED灯

    虚拟机环境:Oracle VM VirtualBox Linux系统:ubuntu_14.04.6 交叉编译工具:[100ask分享的所有文件](https://eyun.baidu.com/s/3b ...

  3. 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...

    STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...

  4. STC89C52单片机 点亮LED灯

    点亮LED灯 一.什么是LED LED全称为半导体发光二极管,采用半导体材料制成的,以直接将电能转化为光能,电号转换成光信号的发光器件:其特点是功耗低.高亮度.色彩艳丽.坑振动.寿命长(正常发光8-1 ...

  5. STM32汇编语言点亮led灯

    STM32汇编语言点亮led灯 首先,这篇blog的主要内容是在C语言中调用汇编语言写的函数.即在我们常用的标准库函数工程中,对外设(这里指led)使用汇编语言完成相关的寄存器配置和控制. 一.背景 ...

  6. 星星点灯(点亮LED灯)

    1.点亮LED灯 学习单片机的第一件事就是点亮LED灯,学习ARM开发,也不例外,先拿LED来开刀 我们如何开始呢?我们分为3步: 看原理图 ----- 确定引脚连线 看芯片手册 ----- 确定引脚 ...

  7. 嵌入式开发学习之--点亮LED灯(中)

    上篇我们主要学习的是环境搭建和实际操作,这篇详细记录一下整个思考的过程. 首先,我们需要想一个问题,这个灯为什么会亮? 物理上来说,LED灯属于发光二极管,只要有正确的电压就会发亮.也就是说,我们烧写 ...

  8. TQ210_裸机编程(一)——点亮LED灯

    TQ210_裸机编程点亮LED灯 首先查看 TQ210 的底板原理图: 我们可以看到 两个 LED 分别接到 S5PV210 的 GPC0_3 和 GPC0_4 引脚. 这里用了 NPN 三极管,具有 ...

  9. 第一节:C#工业控制编程基础--点亮LED灯实验

    第一节:C#工业控制编程基础–点亮LED灯实验 文章目录 第一节:C#工业控制编程基础--点亮LED灯实验 一.实验目的: C#入门基础学习. 二.实验内容: 用C#控制LED的亮灭. 三.实验步骤: ...

最新文章

  1. 路由协议有类和无类的区别
  2. tcp port numbers reused出现原因_谈谈 TCP 的 TIME_WAIT
  3. SSL / TLS REST服务器–带有Spring和TomEE的客户端
  4. 数组逆序重存放(信息学奥赛一本通-T1105)
  5. python函数——形参中的:*args和**kwargs
  6. 《MFC游戏开发》笔记八 游戏特效的实现(二):粒子系统
  7. 【计算机网络笔记】计算机网络五层体系结构
  8. SharePoint 2010 价格计算器
  9. 微信语音终于可以转发了,安卓用户优先!
  10. unity3d 人物对话_Unity 3D游戏-NPC对话系统With XML
  11. 全电发票的最新进展:有关咨询整理(上篇)
  12. 汉字风格迁移篇--基于生成对抗网络的无监督字体风格转换模型
  13. jmeter 接口测试 签名_JMeter处理接口签名(sign)
  14. bzoj 2827 千山鸟飞绝 平衡树
  15. 使用Python播放MIDI音符
  16. php socket 服务端
  17. 如何安装pypi下载的包
  18. OpenCV 图像分块 分块图像合并
  19. js将数字转换为汉字
  20. sqlite数据库下载安装和初步操作和所遇到的问题near sqlite3:syntax error

热门文章

  1. js装修计算器java代码_用js编写的简单的计算器代码程序
  2. 最好用的10个php开发工具推荐
  3. Stream通过List里对象中某个属性最小来取该最小对象
  4. 网络钓鱼常用手段大揭秘,超级科技教你如何防范
  5. java office 类库_OfficeFloor
  6. iOS- 利用.dSYM和.app文件准确定位Crash位置
  7. 姚老板讲机器学习之SVM算法
  8. Java项目-博客管理系统介绍
  9. Visual Studio TFS安装详解
  10. 一天半辛苦的搞机过程