打印
[Kinetis]

FRDM-K64F按键控制LED点亮

[复制链接]
612|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Micachl|  楼主 | 2016-1-24 19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
还是一个简单的GPIO功能实现,通过查询按键端口电平,来控制LED亮灭。

原理图


用户手册
#include "MK64F12.h"

#define LED0_ON  GPIOB_PCOR |=(1<<21)
#define LED0_OFF GPIOB_PSOR |=(1<<21)

#define LED1_ON  GPIOB_PCOR |=(1<<22)
#define LED1_OFF GPIOB_PSOR |=(1<<22)

#define LED2_ON  GPIOE_PCOR |=(1<<26)
#define LED2_OFF GPIOE_PSOR |=(1<<26)

void Delay(void)
{
        unsigned int i,j;

        for(j=2000;j>0;j--)
                for(i=1000;i>0;i--);
}

int main(void)
{

        SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK|SIM_SCGC5_PORTB_MASK|SIM_SCGC5_PORTC_MASK|SIM_SCGC5_PORTE_MASK;

        PORTA_PCR4  = PORT_PCR_MUX(1)| PORT_PCR_DSE_MASK;
        PORTC_PCR6  = PORT_PCR_MUX(1)| PORT_PCR_DSE_MASK;

        PORTB_PCR21  = PORT_PCR_MUX(1)| PORT_PCR_DSE_MASK;
        PORTB_PCR22  = PORT_PCR_MUX(1)| PORT_PCR_DSE_MASK;
        PORTE_PCR26  = PORT_PCR_MUX(1)| PORT_PCR_DSE_MASK;

        GPIOB_PDDR |= (1<<21);
        GPIOB_PDDR |= (1<<22);
        GPIOE_PDDR |= (1<<26);

    for (;;) {

            if((GPIOA_PDIR&(1<<4)) == 0)
            {
                    LED0_ON;
                    LED1_OFF;
                    LED2_OFF;
            //        Delay();
            }
            else if((GPIOC_PDIR&(1<<6)) == 0)
            {
                    LED1_ON;
                    LED2_OFF;
                    LED0_OFF;
            //        Delay();
            }
            else
                {
                    LED0_OFF;
                    LED1_OFF;
                    LED2_ON;
                }

    }
    return 0;
}
由于基础的程序比较简单,先把基础的程序都测试一遍。

下面是实物展示。


V51027-120354.mp4_1445918757.gif (2.57 MB, 下载次数: 0)
下载附件
2015-10-27 12:08 上传






相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

300

帖子

1

粉丝