合泰杯——合泰单片机工程3之按键输入


前言

按键输入的例程中我采用的是stm32的代码编辑方式,即通过预处理来编辑模块头文件和相应的.c文件,用的时候再去主函数中进行调用即可。这样代码编辑起来就比较有逻辑一点,且没有那么多堆在一起。 按键输入使用的引脚是PA1,要设置为输入模式,还要设置为上拉模式,拉高为高电平状态,保证PA1处于一个高电平状态。只要通过按键来改变它的电平状态。PS.按键的一端连接PA1,另一端是连接GND的,也就是接地。

提示:以下是本篇文章正文内容,下面案例可供参考

一、按键函数

先来看头文件

#ifndef __KEY_H
#define __KEY_H	

#include "HT66F2390.h"
#include "delay.h"

#define key _pa1     
#define keyc _pac1       //输入输出模式选择寄存器
#define keyPU _papu1     //设置为上拉模式,保证是高电平


void key_Init(void);
int key_Scan(void); 
#endif

这里的输入输出寄存器是在这里插入图片描述
上拉设置寄存器是
在这里插入图片描述
所以来看.c文件

#include "key.h"
/*

按键初始化函数
设置按键IO口为pa0
且为上拉模式,保证有稳定的高电平
引脚的设置,进入头文件中更改
*/
void key_Init(void)   
{
	keyc =1;   //设置为输入模式
	keyPU = 1; //PxPUn寄存器设置为上拉模式		
}

int key_Scan(void)  //按键扫描函数
{
	if(key == 0)
	{
		delay_ms(10);  //去抖动
		if (key == 0) 
			return 1;
		else 
			return 0;
		while(!key);  //检测按键是否松开
	}
	else 
		return 0;
}

有设置了一个按键扫描函数,如果有按键按下会返回1,没有则返回0。

二、主函数

main.c):

#include "HT66F2390.h"
#include "delay.h"
#include "led.h"
#include "key.h"


void main()
{
	int n=0,t=0;
	LED_Init();    //LED初始化
	key_Init();      //按键初始化
	while(1)
	{
		if (key_Scan())  //按键按下
		{
			n++;
			n %= 2;   //n =n%2   n = 1~2
		}
		switch(n)
		{
			case 1: LED1 = 0; //灭
				break ;
			case 0: LED1 =1;  //亮
				break ;
		}
		delay_ms(10);
		t++;
		if(t ==100)
		{
			t=0;
			LED2 = ~LED2;    	
		}
	}
}

主函数是通过按键扫描函数不断的循环检查是否有按键按下,如果有按键按下的话LED1会进行亮灯。而LED2则是不断地闪烁检查系统是否正常运行。

三、 怎么添加头文件和.c文件?

在这里插入图片描述
在这里插入图片描述


总结

相应的工程文件在这里[添加链接描述]。
链接:https://pan.baidu.com/s/1NeoJCCUVHLKtMR8X1fi19Q
提取码:1111
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V2的分享

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yijianpeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值