还是一个简单的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 上传
|