您的位置:首页 > 文旅 > 旅游 > 正点原子阿尔法ARM开发板-IMX6ULL(六)——通过官方SDK完成实验

正点原子阿尔法ARM开发板-IMX6ULL(六)——通过官方SDK完成实验

2024/10/5 21:25:01 来源:https://blog.csdn.net/m0_52592798/article/details/142223572  浏览:    关键词:正点原子阿尔法ARM开发板-IMX6ULL(六)——通过官方SDK完成实验

文章目录

  • 一、引言
    • 1.1 cc.h
    • 1.2 main.c
    • 1.2 fsl_common.h、MCIMX6Y2.h、fsl_iomuxc.h
    • 1.3 对于宏定义能多个参数
  • 其他

一、引言

在开发过程中,如果一个人来写寄存器、汇编等东西,会变得特别繁琐,好在官方NXP官方给出了SDK包,

1.1 cc.h

有关变量类型的定义,NXP官方SDK的一些移植文件会用到。

#define     __I     volatile 
#define     __O     volatile 
#define     __IO    volatiletypedef   signed          char int8_t;
typedef   signed short     int int16_t;
typedef   signed           int int32_t;
typedef unsigned          char uint8_t;
typedef unsigned short     int uint16_t;
typedef unsigned           int uint32_t;
typedef unsigned long     long uint64_t;
typedef	  signed char  	 	   s8;		
typedef	  signed short 	  int  s16;
typedef	  signed int 		   s32;
typedef	  signed long long int s64;
typedef	unsigned char 		   u8;
typedef	unsigned short int     u16;
typedef	unsigned int 		   u32;
typedef	unsigned long long int u64;#endif

1.2 main.c

#include "fsl_common.h"#include "fsl_iomuxc.h"#include "MCIMX6Y2.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复用 */IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0);		/* 复用为GPIO1_IO0 *//* 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 低转换率*/IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO03_GPIO1_IO03,0X10B0);/* 3、初始化GPIO,设置GPIO1_IO03设置为输出  */GPIO1->GDIR |= (1 << 3);	/* 4、设置GPIO1_IO03输出低电平,打开LED0 */GPIO1->DR &= ~(1 << 3);			}/** @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;}

1.2 fsl_common.h、MCIMX6Y2.h、fsl_iomuxc.h

从官方NXP的SDK包里面,主要是对于这三个文件的调用
对于fsl_common是NXP官方SDK的通用宏定义文档
对于fsl_iomuxc是NXP官方SDK的寄存器地址定义文档
对于MCIM6Y2是NXP官方SDK的寄存器结构体和相关位定义文档

1.3 对于宏定义能多个参数

IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03, 0);
IOMUXC_GPIO1_IO03_GPIO1_IO03这个宏定义里面有5个参数,IOMUXC_SetPinMux这个函数总共有6个入口参数
在这里插入图片描述
在这里插入图片描述

其他

今天买了一块 RGBLCD的4.3寸的屏幕(200大洋没了),之后就是进行实验,记录下验证留着看
对了例程里面,尤其是裸机例程,进入文件夹先make
之后必须用到imxdownload进行烧写到SD卡里面(不是直接把文件托进去)
之后再插入板子上即可
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com