1276|0

6991

帖子

0

资源

五彩晶圆(中级)

TMS320 F28035的按键驱动编程实例 [复制链接]

/************************************
    标题:key.h
    软件平台:DSP.com/forum.php?mod=forumdisplay&fid=58" target="_blank" class="relatedlink">CCS v5.2
    硬件平台:毕设控制板
    主频:60M
    author:小船
    data:2013-02-23
*************************************/
#ifndef KEY_H_
#define KEY_H_
#include "PeripheralHeaderIncludes.h"
#include
#define delay_cheak 15000
#define KEY1     1
#define KEY2     2
#define KEY3     3
#define KEY4     4
#define noKEY    0
#define KEY1_on        GpioDataRegs.GPADAT.bit.GPIO19 == 0
#define KEY2_on        GpioDataRegs.GPADAT.bit.GPIO6 == 0
#define KEY3_on     GpioDataRegs.GPADAT.bit.GPIO12 == 0
#define KEY4_on        GpioDataRegs.GPADAT.bit.GPIO16 == 0
#define KEYs_on     (GpioDataRegs.GPADAT.all & 0x00091040) != 0x00091040
extern void (*key1_handle)();
extern void (*key2_handle)();
extern void (*key3_handle)();
extern void (*key4_handle)();
void KEY_init(void (*key1_dle)(), void (*key2_dle)(), void (*key3_handle)(), void (*key4_dle)());
char KEY_scanf_handle();
#endif /* KEY_H_ */
/************************************
    标题:key.c
    软件平台:CCS v5.2
    硬件平台:毕设控制板
    主频:60M
    author:小船
    data:2013-02-23
*************************************/
#include "key.h"
void (*key1_handle) () = NULL;
void (*key2_handle) () = NULL;
void (*key3_handle) () = NULL;
void (*key4_handle) () = NULL;
void KEY_init(void (*key1_dle)(), void (*key2_dle)(), void (*key3_dle)(), void (*key4_dle)())
{
    EALLOW;
    GpioCtrlRegs.GPAPUD.all &= (~0x00091040); //除能上拉电阻
    GpioCtrlRegs.GPADIR.all &= (~0x00091040);   //输入
    GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0;  //GPIO19
    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 2; // 6 samples
    GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;  //GPIO6
    GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 2; // 6 samples
    GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;  //GPIO12
    GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 2; // 6 samples
    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 0;  //GPIO16
    GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 2; // 6 samples
    EDIS;
    GpioDataRegs.GPASET.all |= 0x00091040;
    key1_handle = key1_dle;
    key2_handle = key2_dle;
    key3_handle = key3_dle;
    key4_handle = key4_dle;
}
char KEY_scanf_handle()
{
char KEY_mun = 0;
if(KEYs_on)
  {
   DELAY_US(delay_cheak);
   if(KEYs_on)
   {
       if(KEY1_on)
       {
        (*key1_handle)();
        KEY_mun = KEY1;
       }
       if(KEY2_on)
       {
        (*key2_handle)();
        KEY_mun = KEY2;
       }
       if(KEY3_on)
       {
        (*key3_handle)();
        KEY_mun = KEY3;
       }
       if(KEY4_on)
       {
        (*key4_handle)();
        KEY_mun = KEY4;
       }
   }
  }
return KEY_mun;
}

回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
    关闭
    站长推荐上一条 1/10 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表