STM32 F103ZET6 use key

firstly,we have to get led light up and light off program STM32 F103ZET6 light on and off led

secondly we init key,like below

key.h:

#ifndef KEY_MMT_H
#define KEY_MMT_H
#include <stm32f10x.h>
#define KEY_ON     1
#define KEY_OFF    0
#define RCC_KEY_PERIPH     RCC_APB2Periph_GPIOA
typedef struct KeyStuct{
	GPIO_TypeDef * gpiox;
	uint16_t pin;
}KeyInitType;
void key_mmt_init(KeyInitType *key);
uint8_t key_mmt_scan(KeyInitType *key);


#endif

key.c :

#include "key.h"
#include "../Led/led.h"
void key_mmt_init(KeyInitType *key){
	GPIO_InitTypeDef GPIO_InitStruct;
	RCC_APB2PeriphClockCmd(RCC_KEY_PERIPH,ENABLE);//init clock of key->gpiox
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_InitStruct.GPIO_Pin = key->pin; 
	GPIO_Init(key->gpiox,&GPIO_InitStruct);
}
uint8_t key_mmt_scan(KeyInitType *key){
	
	if(GPIO_ReadInputDataBit(key->gpiox,key->pin)==KEY_ON){
		while(GPIO_ReadInputDataBit(key->gpiox,key->pin)==KEY_ON); //wait for key up
		return KEY_ON;
	}else{
		
		return KEY_OFF;
	}
}

 

main.c:

#include <stm32f10x.h>
#include "Led/led.h"
#include "key/key.h"
int main(){
	uint8_t flag =0; // flag ==0 for light off,flag==1 for light on
	led_mmt_init();
	KeyInitType key;  // key init data type ,inf key.h
	key.gpiox = GPIOA; // key1 linked to GPIOA  pin0
	key.pin = GPIO_Pin_0;  // key1 linked to GPIOA  pin0
	key_mmt_init(&key);  
	while(1){
		if(key_mmt_scan(&key)==KEY_ON){
			if(!flag){
				LED_ON();
				flag = 1;
			}else{
				LED_OFF();
				flag=0;
			}
		}
	}
}

 

 

正点原子stm32f103项目keil是一个基于STM32F103芯片的项目,使用Keil开发环境进行开发。该项目包含了main.c、beep.h和EXTI.h等文件。在main.c文件中,包含了beep.h、key.h和EXTI.h头文件,并定义了一个主函数。在beep.h文件中,定义了BEEP_Init函数。此外,还需要设置头文件路径和宏定义全局变量。在Keil中,可以通过点击魔法棒,选择c/c++,然后在Include Path中添加头文件路径。同时,在Define输入框中填写相应的宏定义,如"STM32F10X_HD,USE_STDPERIPH_DRIVER"。这样就可以进行正点原子stm32f103项目的开发了。 #### 引用[.reference_title] - *1* *2* [正点原子STM32F103综合课程操作学习笔记(包含代码)](https://blog.csdn.net/weixin_47681071/article/details/118404776)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [正点原子STM32F103ZET6学习笔记-新建库函数工程模板](https://blog.csdn.net/qq_63306482/article/details/126180744)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值