文章目录
- 一、引言
- 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卡里面(不是直接把文件托进去)
之后再插入板子上即可