- /********************该程序是由噬猎者编写************************************/
 
- void main()
 
- {
 
-           int i=2;//更改i切换不同模式
 
-         int data=0;
 
-         DisableInterrupts; //关闭中断使能
 
-         gpio_init(PTB18,GPO,1);//IO口初始化
 
-         
 
-         
 
-         while(1)
 
-         {
 
-           switch(i)
 
-           {
 
-                   case 0:
 
-                           GPIO_TURN(PTB18);
 
-                         DELAY_MS(500);
 
-                         break;
 
-                   case 1:        
 
-                               PTB18_OUT=1;
 
-                           DELAY_MS(500);
 
-                         PTB18_OUT=0;
 
-                           DELAY_MS(500);
 
-                         break;
 
-                  case 2:
 
-                         GPIO_SET_NBIT(1,PTB18,1);
 
-                         DELAY_MS(500);
 
-                         GPIO_SET_NBIT(1,PTB18,0);
 
-                         DELAY_MS(500);
 
-                         break;
 
-                   case 3:
 
-                           data = GPIO_GET(PTB18);
 
-                         if(data==0)
 
-                                  PTB18_OUT=1;
 
-                         else
 
-                                   PTB18_OUT=0;
 
-                         DELAY_MS(500);
 
-                         break;
 
-                 
 
-           }
 
-                 
 
-         }
 
 
-   
 
- }
 
- /******************************************************************************/
 
 
 
 
- /****************************GPIO学习指南************************************/
 
- /*************************** 编辑:噬猎者 ************************************
 
- 我的喜好,一般不采用函数形式,采用宏定义形式更加迅速,不过这里也指出来很多不得已用函数的。
 
- 【1.gpio_init(PTxn ptxn, uint8_t dir, uint8_t state)//GPIO初始化
 
-         PTx = PTA,PTB,PTC,PTD,PTE//端口名
 
-         n   = 0-31        //管脚号
 
-         dir =    //输入输出配置
 
-                     GPI         = 0,                          //定义管脚输入方向      GPIOx_PDDRn里,0表示输入,1表示输出
 
-                     GPO         = 1,                          //定义管脚输出方向
 
 
-                     GPI_DOWN    = 0x02,                       //输入下拉              PORTx_PCRn需要PE=1,PS=0
 
-                     GPI_UP      = 0x03,                       //输入上拉              PORTx_PCRn需要PE=1,PS=1
 
-                     GPI_PF      = 0x10,                       //输入,带无源滤波器,滤波范围:10 MHz ~ 30 MHz 。不支持高速接口(>=2MHz)  0b10000           Passive Filter Enable
 
-                     GPI_DOWN_PF = GPI_DOWN | GPI_PF ,         //输入下拉,带无源滤波器
 
-                     GPI_UP_PF   = GPI_UP   | GPI_PF ,         //输入上拉,带无源滤波器
 
 
-                     GPO_HDS     = 0x41,                        //输出高驱动能力   0b100 0001    High drive strength
 
-                     GPO_SSR     = 0x05,                        //输出慢变化率          0b101    Slow slew rate
 
-                     GPO_HDS_SSR = GPO_HDS | GPO_SSR,           //输出高驱动能力、慢变化率
 
-                 //带滤波器的可用于按键,不过也得消抖
 
-         state = 0,1  //引脚状态(输入的模式填0就可以了)
 
- 例子:gpio_init(PTB19,GPO,1);//PTB19初始化为输出模式,输出高电平。
 
-         
 
- 【2.GPIO_SET(PTxn,data)  //设置引脚状态
 
-         PTx  = PTA,PTB,PTC...//端口名
 
-         n      = 0-31        //管脚号
 
-         x      =  0,1   //引脚电平
 
- 例子:GPIO_SET(PTA18,1);//PTA18输出高电平
 
 
- 【3.GPIO_TURN(PTxn)        //翻转引脚电平
 
-         PTx  = PTA,PTB,PTC...//端口名
 
-         n      = 0-31        //管脚号
 
- 例子:GPIO_TURN(PTA18);//翻转PTA18引脚电平
 
 
- 【4.data =  GPIO_GET(PTxn);        //获取引脚电平
 
-         PTx  = PTA,PTB,PTC...//端口名
 
-         n      = 0-31        //管脚号
 
- 例子:data = GPIO_GET(PTA18);//读取PTA18的引脚电平
 
 
- 【5.对GPIO进行位操作:
 
-         GPIO_SET_NBIT(NBIT,PTxn,data)        //设定n位电平
 
-         GPIO_DDR_NBIT(NBIT,PTxn,ddr)        //设置n位输入输出模式
 
-         GPIO_GET_NBIT(NBIT,PTxn)         //读取n位电平
 
 
- 【6.GPIO_DDR(PTxn,ddr)        //设置输入输出状态
 
-         ddr = 输入输出配置  
 
 
 
- 【7.最常用的IO电平
 
-         PTxn_OUT = 1         PTxn输出高电平
 
-         data = PTxn_IN        读取PTxn输入的电平
 
 
- ****************************************************************************/
 
 
 
 
 
 
 
- /******************************延时函数*************************************/
 
- /***************************************************************************
 
- VCAN_MK60_conf.h
 
- #if  0
 
- #include "MKL_lptmr.h"//定时器延时
 
- #define     DELAY()         lptmr_delay_ms(500)
 
- #define     DELAY_MS(ms)    lptmr_delay_ms(ms)
 
- #define     DELAY_US(us)    lptmr_delay_us(us)
 
- #elif   0
 
- #include "MKL_pit.h"
 
- #define DELAY()         pit_delay_ms(PIT1,500)
 
- #define DELAY_MS(ms)    pit_delay_ms(PIT1,ms)
 
- #define DELAY_US(us)    pit_delay_us(PIT1,us)
 
- #else
 
- #include "MKL_SysTick.h"//系统时钟
 
- #define DELAY()         systick_delay_ms(500)
 
- #define DELAY_MS(ms)    systick_delay_ms(ms)
 
- #define DELAY_US(us)    systick_delay_us(us)
 
 
- 也就是说要想更改延时就直接去 VCAN_MK60_conf.h,换一下选择函数即可
 
- DELAY()       //500ms延时 
 
- DELAY_MS(ms)  //ms级延时
 
- DELAY_US(us)  //us级延时
 
- ****************************************************************************/