05. NXP官方SDK使用实验

05. NXP官方SDK使用实验

  • 官方SDK移植

官方SDK移植

  1. 新建cc.h文件
    SDK包里面会用到很多数据类型,所以需要在该文件中定义一些常用的数据类型
#pragma once
#define     __I     volatile 
#define     __O     volatile 
#define     __IO    volatile

typedef   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;

  1. 移植文件
    需要移植的文件fsl_common.h、fsl_iomuxc.h、MCIMX6Y2.h

  2. 主函数

#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "MCIMX6Y2.h"

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;

}
void led_init(void)
{
	/* 1、初始化IO复用 */
	IOMUXC_SetPinMux(IOMUXC_GPIO1_IO03_GPIO1_IO03,0); // 设置IO复用功能
	/* 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); // 设置IO的上下拉、电阻等
	// 该函数第一个参数是IO配置寄存器,如果要复用为GPIO,就是IO03,第二个参数是要写入寄存器的值
	
	/* 3、初始化GPIO,设置GPIO1_IO03设置为输出  */
	GPIO1->GDIR |= (1 << 3);	
	
	/* 4、设置GPIO1_IO03输出低电平,打开LED0 */
	GPIO1->DR &= ~(1 << 3);			
}
void led_on(void)
{
	/* 将GPIO1_DR的bit3清零 	*/
	GPIO1->DR &= ~(1<<3); 
}
void led_off(void)
{
	/* 将GPIO1_DR的bit3置1 */
	GPIO1->DR |= (1<<3); 
}
void delay_short(volatile unsigned int n)
{
	while(n--){}
}
void delay(volatile unsigned int n)
{
	while(n--)
	{
		delay_short(0x7ff);
	}
}
int main(void)
{
	clk_enable();		
	led_init();			
	while(1)			
	{	
		led_off();		
		delay(500);		
		led_on();		
		delay(500);		
	}
	return 0;
}

你可能感兴趣的:(嵌入式裸机ARM驱动开发,嵌入式硬件)