我终于看懂了拉普兰德的GPIO例程,并且自己能新建工程,写一个简单的按键控制LED亮的程序了。
固件库 http://pan.baidu.com/s/1lkjdc 例程 http://pan.baidu.com/s/14gXRK
里面有一个可以自己建立工程的程序,我感觉还是蛮方便的 K60快速建立工程_VG_1.0.2
就会看到一个main函数,里面有一个while(1)死循环,到这里大家一定很激动,因为和之前接触的C51,PIC都和类似了。
和C51,PIC这些相对低级的单片机比,K60的IO更复杂,不是简简单单的PA=1或TRISA1=0;RA=1;这样。它有更多的寄存器可以来配置引脚的功能。
一般要初始化IO引脚,(对于初始化IO,之前只学过51的可能会比较意外,我也意外过,学过PIC的会知道要初始化TRISx)。初始化步骤一般如下:
void init_gpio()
{
// 配置 PTD8~PTD15 为GPIO功能,输出,高电平,禁用中断
gpio_init_struct.GPIO_PTx = PTA; //配置结构体的GPIO_PTx变量,选择使用PTD组的GPIO引脚。
gpio_init_struct.GPIO_Pins = GPIO_Pin19; //配置结构体的GPIO_Pins变量,选择使用编号为D8~D15的引脚。
gpio_init_struct.GPIO_Dir = DIR_INPUT; //配置结构体的GPIO_Dir变量,设置PTD的相关引脚方向为输出。
// gpio_init_struct.GPIO_Output = OUTPUT_H; //配置结构体的GPIO_Output变量,设置PTD的相关引脚初始化输出为高电平。
gpio_init_struct.GPIO_PinControl = INPUT_PULL_UP|IRQC_DIS; //配置结构体的GPIO_PinControl变量,配置端口的控制模式为禁止中断。
LPLD_GPIO_Init(gpio_init_struct); //调用GPIO初始化的库函数,并将初始化结构体变量传入其中,完成初始化。
gpio_init_struct.GPIO_PTx = PTA;
gpio_init_struct.GPIO_Pins = GPIO_Pin10;
gpio_init_struct.GPIO_Dir = DIR_OUTPUT;
gpio_init_struct.GPIO_Output = OUTPUT_L;
gpio_init_struct.GPIO_PinControl = IRQC_DIS;
LPLD_GPIO_Init(gpio_init_struct);
}
对于主函数,除了对于名字不知道外,算法大家一定都知道的
void main (void)
{
//初始化 GPIO
init_gpio();
while(1)
{
if(PTA19_I==0)
{
while(PTA19_I==0)
PTA10_O=0;
}
PTA10_O=1;
}
}
然后配置options
在general options里选择自己的芯片,还有什么什么的。。。。不一定,到时候自己查一下,马上就能解决的。
然后就是download and debug,点击go运行,开发板上就开始运行你的程序了。
我的结果就是这样的
开始运行程序,但什么动作都没有
然后我作死按下了switch5。。。。。。。。。。。。。天呐,居然就亮了
1 |
DDRA0 = 1; //设置PortA0口为输出
|
2 |
DDRC19 = 0; //设置PortC19口为输入
|
3 |
|
4 |
PTA0_O = 1; //设置PortA0输出高电平
|
5 |
PTA1_O = 0; //设置PortA1输出低电平
|
6 |
|
7 |
uint8 data;
|
8 |
data = PTA0_I; //读取PortA0口的电平
|
就是这样,再结合以前学过的东西,就可以做很多东西了,例如数码管,矩阵键盘,LCD1602,AT24C02~16,超声波测距,电机驱动。。。。。。。。不说了
加纳