1. 原理图与实物图对照图

https://download.youkuaiyun.com/download/Kshine2017/73732833
2.详细介绍
2.1 Led电路


普通控制代码:
//GPBCON 0x56000010 R/W 配置端口B的引脚
#define GPBCON (*(unsigned int *)0x56000010)
//GPBDAT 0x56000014 R/W 端口B的数据寄存器
#define GPBDAT (*(unsigned int *)0x56000014)
void delay(unsigned int time)
{
int i,j;
for(i=0;i<time;i++)
for(j=0;j<5000;j++);
}
int main(void)
{
GPBCON = 0x15400; //配置B5,B6,B7,B8 为IO输出
GPBDAT = 0x1e0; //初始化让四个灯灭 (高电平 - 灭)
while(1)
{
delay(100);
GPBDAT = 0x00; //亮
delay(100);
GPBDAT = 0x1e0;//灭
}
}
2.2 蜂鸣器电路

//GPBCON 0x56000010 R/W 配置端口 B 的引脚
#define GPBCON (*(unsigned int *)0x56000010)
//GPBDAT 0x56000014 R/W 端口 B 的数据寄存器
#define GPBDAT (*(unsigned int *)0x56000014)
void delay(unsigned int time)
{
int i,j;
for(i=0;i<time;i++)
for(j=0;j<5000;j++);
}
int main(void)
{
GPBCON = 0x1; //设置GPB0为output
GPBDAT = 0x0; //设置GPB0为低电平,蜂鸣器不响
while(1)
{
delay(100);
GPBDAT = 0x01; //设置GPB0为高电平,蜂鸣器响
delay(100);
GPBDAT = 0x00; //设置GPB0为低电平,蜂鸣器不响
}
}
2.3 按键

//GPGDAT 0x56000064 R/W 端口G 的数据寄存器
#define GPGDAT (*(int *)0x56000064)
//GPBCON 0x56000010 R/W 配置端口B 的引脚
#define GPBCON (*(int *)0x56000010)
//GPBDAT 0x56000014 R/W 端口B 的数据寄存器
#define GPBDAT (*(int *)0x56000014)
void delay(int time)
{
int i,j;
for(i=0; i<time; i++)
for(j=0; j<1000; j++);
}
int main(void)
{
GPBCON = 0x01;//set GPB0->output
GPBDAT = 0x00;//set beep off
//GPGCON 默认值
//GPGDAT
// xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
//& 0000 0000 0000 0000 0000 0000 0000 0001
//============================================
// 0000 0000 0000 0000 0000 0000 0000 000x
while(1)
{
if((GPGDAT & 0x01)==0)
{
// xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 异或 0^0 =0 1^1=0 0^1=1 1^0=1
//^ 0000 0000 0000 0000 0000 0000 0000 0001
//============================================
// xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
GPBDAT ^= 0x01;//蜂鸣器状态切换
}
}
}
加上消抖逻辑:
while(1)
{
if((GPGDAT & 0x01)==0)
{
delay(200);
if((GPGDAT & 0x01)==0)
{
while((GPGDAT & 0x01)==0);//等待手松开
// xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 异或 0^0 =0 1^1=0 0^1=1 1^0=1
//^ 0000 0000 0000 0000 0000 0000 0000 0001
//============================================
// xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
GPBDAT ^= 0x01;//蜂鸣器状态切换
}
}
}
相关代码的工程文件
https://download.youkuaiyun.com/download/Kshine2017/74059558
本文详细介绍了如何使用GPIO接口控制LED灯、蜂鸣器的工作,并实现按键的消抖逻辑。通过C语言代码展示了如何配置端口、数据寄存器及实现基本定时操作,适合初学者理解嵌入式系统基础应用。
2052

被折叠的 条评论
为什么被折叠?



