资讯专栏INFORMATION COLUMN

IMX6ULL裸机学习----LED正点原子在韦东山开发板上实现

chengtao1633 / 1465人阅读

摘要:前言一启动流程二代码移植硬件介绍代码移植总结前言最近在学习这个开发板,手边有韦东山老师的全功能板子,为了练习学习的初步效果,采用了正点原子的视频课程进行学习。

前言


前言

        最近在学习IMX6ULL这个开发板,手边有韦东山老师的imx6ull全功能板子,为了练习学习的初步效果,采用了正点原子的视频课程进行学习。首先移植了一个基本的LED控制实验。


提示:以下是本篇文章正文内容,下面案例可供参考

一、IMX6ULL 启动流程?

        我们手头上的开发板一般都有直接的拨码开关来控制IMX6ULL的启动方式,常见的有SD卡、USB、EMMC等。这里各位根据开发板设置一下即可。(具体IMX6ULL的启动方式选择和启动设备选择可参考正点原子的,感觉写的不错)。

我这里选择SD卡进行。

二、LED代码移植

1.硬件介绍

正点原子开发板LED原理图如下:

 韦东山开发板LED原理图如下:

 

2.代码移植

原子采用的是GPIO1_3,韦东山开发板采用的是GPIO5_3.其配在过程主要如下:

①、使能 GPIO 对应的时钟( 原子已经全部开启,可以不用动
②、设置寄存器 IOMUXC_SW_MUX_CTL_PAD_XX_XX ,设置 IO 的复用功能,使其复用
GPIO 功能( 设置对应引脚 )。
③、设置寄存器 IOMUXC_SW_PAD_CTL_PAD_XX_XX ,设置 IO 的上下拉、速度等( 设置对应引脚 )。
④、第②步已经将 IO 复用为了 GPIO 功能,所以需要配置 GPIO ,设置输入 / 输出、是否使
用中断、默认输出电平等( 设置对应引脚 )。

例程中,对应的引脚地址已全部更改,注释保留原子的,具体大家可以上原子网站找,同时为开发板上电,有微弱电流,会使LED亮,为确保修改成功,添加了延时函数,大家调整delay中的r2即可观察到闪烁频率的不同。具体代码如下:

.global _start  /* 全局标号 *//* * 描述:	_start函数,程序从此函数开始执行此函数完成时钟使能、 *		  GPIO初始化、最终控制GPIO输出低电平来点亮LED灯。 */_start:	/* 例程代码 */	/* 1、使能所有时钟 */	ldr r0, =0X020C4068 	/* CCGR0 */	ldr r1, =0XFFFFFFFF  	str r1, [r0]				ldr r0, =0X020C406C  	/* CCGR1 */	str r1, [r0]	ldr r0, =0X020C4070  	/* CCGR2 */	str r1, [r0]		ldr r0, =0X020C4074  	/* CCGR3 */	str r1, [r0]		ldr r0, =0X020C4078  	/* CCGR4 */	str r1, [r0]		ldr r0, =0X020C407C  	/* CCGR5 */	str r1, [r0]		ldr r0, =0X020C4080  	/* CCGR6 */	str r1, [r0]		/* 2、设置GPIO5_IO03复用为GPIO1_IO03 */	ldr r0, =0X2290014	/* 将寄存器SW_MUX_GPIO1_IO03_BASE加载到r0中 */	ldr r1, =0X5		/* 设置寄存器SW_MUX_GPIO1_IO03_BASE的MUX_MODE为5 */	str r1,[r0]	/* 3、配置GPIO5_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 低转换率     */    ldr r0, =0X02290058	/*寄存器SW_PAD_GPIO1_IO03_BASE */    ldr r1, =0X10B0    str r1,[r0]	/* 4、设置GPIO5_IO03为输出 */    ldr r0, =0X020AC004	/*寄存器GPIO1_GDIR */    ldr r1, =0X0000008		    str r1,[r0]flash:	/* 5、打开LED0	 * 设置GPIO5_IO03输出低电平	 */	ldr r0, =0X020AC000	/*寄存器GPIO1_DR */    ldr r1, =0		    str r1,[r0]		bl delay	ldr r0, =0X020AC000	ldr r1, =8	str r1,[r0]		bl delay	b flash /* * 描述:	loop死循环 */loop:	b loop 					// 延时函数:函数名:delaydelay:	ldr r2, =1000000	ldr r3, =0x0delay_loop:		sub r2, r2, #1				//r2 = r2 -1	cmp r2, r3					// cmp会影响Z标志位,如果r2等于r3则Z=1,下一句中eq就会成立	bne delay_loop	mov pc, lr					// 函数调用返回


总结

仅仅用于学习中笔记的记录,LED在不同开发板实现要点:

1、不同开发板启动方式有EMMC、SD卡和USB,这里仅仅是裸机学习,因此可以采用SD卡和USB,这里采用SD卡进行,USB暂未进行。

2、对于不同引脚,应该进行修改

3、用汇编添加了延时函数

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119498.html

相关文章

  • 七,FreeRTOS之——队列同步与互斥

    摘要:声明本专栏参考韦东山,野火,正点原子以及其他博主的教程,如若侵权请告知,马上删帖致歉,个人总结,如有不对,欢迎指正。 声明:本专栏参考韦东山,野火,正点原...

    Yu_Huang 评论0 收藏0
  • STM32学习——半天学完正点原子入门篇例程,STM32:学会了吗?我:学废了✨

    本文代码均来正点原子标准例程 声明:本文不是教学文章,可能也不适合初学者阅读 不知为什么,最近总蹦出有很多想法(可能是工作太闲了)一会想学这,一会想学那,这不,突然想复习一下STM32了。 我好久以前就学过正点原子的课程,还买过一些开发板,但现在手上只有一个核心板了,就暂且凑合着用吧。 我是个喜欢制定计划的人,既然有了想法,那就得制定一个学习计划,估摸了一下,明天要上班,现在已经中午了,所以我只...

    MingjunYang 评论0 收藏0
  • 2021-09-04

    摘要:使用实现连网实现巴法云物联网使用硬件程序思路基于正点原子的测试程序在巴法云物联网创建的主题初始化代码比较简陋主函数代码如果想用串口助手调试,接线方法如下使用硬件我这里使用的是正点原子家的开发板精英版和模块。 ...

    Zack 评论0 收藏0
  • stm32mini开发lora模块例程中中文字库更新失败的解决方案

    摘要:此文章用于解决开发板的模块中文字库加载问题,也可用于其它关于中文字库无法加载的问题。如下图,已经完成了中文字库烧入,无需再挂载。 正点原子stm32mini板lor...

    longmon 评论0 收藏0
  • 正点原子FPGA连载】第三十六章双路高速DA实验 -摘自【正点原子】新起点之FPGA开发指南_V2

    摘要:本章我们将使用高速芯片实现数模转换,产生正弦波模拟电压信号。实验任务本节实验任务是使用新起点开发板及双路高速扩展模块模块实现数模转换。下载验证将双路高速模块插入新起点开发板的扩展口,连接时注意扩展口电源引脚方向和开发板电源引脚方向一致。 ...

    李文鹏 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<