K60 first GPIO

来源:互联网 发布:php程序员的发展方向 编辑:程序博客网 时间:2024/05/21 17:22
对于IT专业的学生来说,这是一个严肃的话题,但是我还是尽量用轻松的语气来表达。
我想说的就是
我终于看懂了拉普兰德的GPIO例程,并且自己能新建工程,写一个简单的按键控制LED亮的程序了。

一开始的点亮LED就不说了,直接上按键控制LED亮的了
主要还是感谢拉普兰德
首先去拉普兰德下载固件库和例程
固件库http://pan.baidu.com/s/1lkjdc    例程http://pan.baidu.com/s/14gXRK
里面有一个可以自己建立工程的程序,我感觉还是蛮方便的   K60快速建立工程_VG_1.0.2
建立工程后,在如图位置打开
K60 <wbr>first <wbr>GPIO
就会看到一个main函数,里面有一个while(1)死循环,到这里大家一定很激动,因为和之前接触的C51,PIC都和类似了。

和C51,PIC这些相对低级的单片机比,K60的IO更复杂,不是简简单单的PA=1或TRISA1=0;RA=1;这样。它有更多的寄存器可以来配置引脚的功能。

一般要初始化IO引脚,(对于初始化IO,之前只学过51的可能会比较意外,我也意外过,学过PIC的会知道要初始化TRISx)。初始化步骤一般如下:
选择用ABCDE那个口x
选择要用到x的那些Pin
设置该Pin是输入还是输出
若为输出,设置初始值
配置控制寄存器,一般用来关闭中断或启用内部上拉
然后把配置好的值送去让固件库初始化去
我这里用PTA19检测键盘输入,PTA10控制LED是否亮
GPIO_init如下

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运行,开发板上就开始运行你的程序了。
我的结果就是这样的
开始运行程序,但什么动作都没有
K60 <wbr>first <wbr>GPIO

然后我作死按下了switch5。。。。。。。。。。。。。天呐,居然就亮了
K60 <wbr>first <wbr>GPIO

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,超声波测距,电机驱动。。。。。。。。不说了

加纳