/********************该程序是由噬猎者编写************************************/
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级延时
****************************************************************************/