查看: 4049|回复: 7

[原创] 【KL27 mini Board 开发】+按键

[复制链接]
  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2016-4-9 15:38:53 | 显示全部楼层 |阅读模式
    本帖最后由 wambob 于 2016-4-9 15:38 编辑

    GPIO是一个通用I/O模块,最经典的LED灯就是输出,按键是输入。GPIO由PORT模块控制。PORT是一个带寄存器控制的单刀多掷开关(选择管脚功能)
    未命名1.JPG
    和两个单刀单掷开关(设置上拉或下拉电阻)
    未命名2.JPG
    。不能设置成推拉模式。
    对于按键,GPIO控制寄存器有,PDDR(端口数据方向寄存器|)、PDIR(端口数据输入寄存器)。
    KL27 mini Board上按键电路
    3.JPG
    1. int main()
    2. {
    3. //     SystemCoreClockUpdate();
    4.     SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK            
    5.                   | SIM_SCGC5_PORTB_MASK
    6.                   | SIM_SCGC5_PORTC_MASK
    7.                   | SIM_SCGC5_PORTD_MASK
    8.                   | SIM_SCGC5_PORTE_MASK );

    9.     LPUART1_init();
    10.     printf("按键\r\n");
    11.    
    12.     PORTC_PCR3|= 0x00000100u;
    13.     PORTA_PCR1|= 0x00000100u;        //设置  复用为 GPIO 模式
    14.     PORTE_PCR0|= 0x00000100u;           
    15.     PORTA_PCR2|= 0x00000100u;
    16.    
    17.     PORTB_PCR0|= 0x00000103u;        //gpio复用和上拉
    18.     PORTB_PCR1|= 0x00000103u;
    19.    
    20.     PORTA_PCR4&= ~(7<<8);   
    21.     PORTA_PCR4|= 0x00000103u;
    22.    
    23.     GPIOC_PSOR |= 1U<< 3;                //初始化输出状态为1
    24.     GPIOA_PSOR |= 1U<< 1;
    25.     GPIOE_PSOR |= 1U;
    26.     GPIOA_PSOR |= 1U<< 2;
    27.    
    28.     GPIOC_PDDR |= 1U<<3;                //设置为输出
    29.     GPIOA_PDDR |= 1U<<1;               
    30.     GPIOE_PDDR |= 1U;
    31.     GPIOA_PDDR |= 1U<<2;
    32.    
    33.     GPIOA_PDDR &=~(1<<4);                //设置为输入
    34.     GPIOB_PDDR &=~(1<<0);
    35.     GPIOB_PDDR &=~(1<<1);
    36.    
    37.     while(1)
    38.      {               
    39.         if((GPIOB_PDIR&0x1)==0)          //k1
    40.         {
    41.             GPIOC_PDOR&= ~(1U<< 3);
    42.             printf("k1按下了,红色LED亮\r\n");   
    43.         }
    44.          
    45.         else  GPIOC_PSOR |= 1U<< 3;
    46.       
    47. //        myDelay(200);
    48.         if((GPIOB_PDIR&0x2)==0)              //k3
    49.         {      
    50.             GPIOA_PCOR |= 1U<< 1;
    51.             printf("k3按下了,黄色LED亮\r\n");
    52.         }   
    53.             else GPIOA_PSOR |= 1U<< 1;
    54. //        myDelay(200);
    55.         if((GPIOA_PDIR&0x10)==0)          //k2
    56.         {
    57.             GPIOE_PCOR |= 1U;
    58.             printf("k2按下了,蓝色LED亮\r\n");
    59.         
    60.         }
    61.         else GPIOE_PSOR |= 1U;
    62. //        myDelay(200);
    63.         GPIOA_PTOR =1U<< 2;
    64.         myDelay(200);
    65.     }   

    66. }
    复制代码

    使用寄存器容易犯的错误,置寄存器的某几位时,如果不是全置位,一定要先清0,在置位。如果不清0,会出现问题。上面代码中PTA4管脚复用就出现了问题,改为清0置位后正常。
    33.JPG
    kl27_Template.rar (87.25 KB, 下载次数: 7)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-4-9 16:31:00 | 显示全部楼层
    不错,学习了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-11-23 10:20
  • 签到天数: 45 天

    连续签到: 1 天

    [LV.5]常住居民I

    5

    主题

    693

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1406
    最后登录
    2025-7-21
    发表于 2016-4-9 22:41:22 | 显示全部楼层
    谢谢lz,学习了
    dfdfdfdfdfdfdfd dsfa222
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-4 08:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    24

    主题

    291

    帖子

    0

    高级会员

    Rank: 4

    积分
    613
    最后登录
    2020-11-21
    发表于 2016-4-13 21:00:28 | 显示全部楼层

    好活动,支持下。。。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-12-12 19:51
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    1

    主题

    18

    帖子

    0

    注册会员

    Rank: 2

    积分
    91
    最后登录
    2017-4-17
    发表于 2016-11-20 22:08:29 | 显示全部楼层
    非常感谢
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2018-12-25 13:50
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    1

    主题

    36

    帖子

    0

    注册会员

    Rank: 2

    积分
    76
    最后登录
    2018-12-26
    发表于 2018-12-8 14:09:54 | 显示全部楼层
    开始学
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情

    2022-6-3 10:27
  • 签到天数: 131 天

    连续签到: 1 天

    [LV.7]常住居民III

    19

    主题

    519

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1611
    最后登录
    2022-6-26
    发表于 2018-12-17 16:10:07 | 显示全部楼层

    +1刚开始学
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2022-6-3 10:27
  • 签到天数: 131 天

    连续签到: 1 天

    [LV.7]常住居民III

    19

    主题

    519

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1611
    最后登录
    2022-6-26
    发表于 2018-12-19 11:06:16 | 显示全部楼层
    有没有外部中断的例程呀 大神求教
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 20:18 , Processed in 0.101092 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表