蓝桥杯物联网竞赛_STM32L071_4_按键控制

原理图:



当按键S1按下PC14接GND,为低电平

CubMX配置:

Keil配置:

main函数:

c 复制代码
while (1)
  {
    /* USER CODE END WHILE */
		OLED_ShowString(32, 0, "hello", 16);
    if(Function_KEY_S1Check() == 1){ 
			OLED_ShowString(16, 2, "key:", 16);
			OLED_ShowString(48, 2, "1", 16);
		}
		else{
			OLED_ShowString(16, 2, "key:", 16);
			OLED_ShowString(48, 2, "0", 16);
		}
    /* USER CODE BEGIN 3 */
  }

Function.c和.h函数:

c 复制代码
#include "Function.h"
#include "i2c.h"
#include "oled.h"

void OLED_Write(unsigned char type, unsigned char data){
	unsigned char Write_Data[2];
	Write_Data[0] = type;
	Write_Data[1] = data;
	HAL_I2C_Master_Transmit(&hi2c3, 0x78, Write_Data, 2, 0xff);
}


void Function_OledEnable(unsigned char ms){
	HAL_GPIO_WritePin(OLED_Power_GPIO_Port, OLED_Power_Pin, GPIO_PIN_RESET);
	HAL_Delay(ms);
	OLED_Init();
}

uint8_t Function_KEY_S1Check(void){
	if(HAL_GPIO_ReadPin(KEY_S1_GPIO_Port, KEY_S1_Pin) == GPIO_PIN_RESET) return (uint8_t) 1;
	else return (uint8_t) 0;
}
c 复制代码
#ifndef __FUNCTION__
#define __FUNCTION__
#include <stdint.h>

void OLED_Write(unsigned char type, unsigned char data);
void Function_OledEnable(unsigned char ms);
uint8_t Function_KEY_S1Check(void);
#endif

效果:

待更新...

拓展:

1.实验板GPIO引脚无论是上拉还是下拉都可以检测出外界输入的高电平还是低电平,这和模拟电路不一样模拟电路是1&01&1来判断,当模拟电路引脚默认电平为低即0,那么外界输入为1或者0它都不能判断,而实验板是通过输入电平是否能改变本引脚的电平大小来判断,外界输入电平导致本引脚电平变高,所以外界为高电平,外界输入导致本引脚变低外界为低电平

2.代码引用的头文件比较有意思,理论上通过头文件能将零散代码连在一起,个别报错还是能运行例如:

这里oled.c没有引用Function.h文件所以有个函数没有定义,报了红线

但是在main函数中这些代码通过头文件组合在一起了,能运行:

3.oled使能函数一定要放在i2c初始化函数后面,因为先将i2c初始化了才能传递信息,才能被oled接收,才能被显示:

相关推荐
艾格北峰5 小时前
STM32 物联网智能家居 (六) OLED显示设备
arm开发·stm32·单片机·嵌入式硬件·物联网·智能家居
雪兽软件6 小时前
物联网简介集合
物联网
夏天的阳光吖7 小时前
C++蓝桥杯基础篇(四)
开发语言·c++·蓝桥杯
热爱嵌入式的小许9 小时前
STM32 HAL库&标准库+ESP8266+机智云
stm32·单片机·嵌入式硬件·stm32移植机智云·stm32连接机智云·hal库移植机智云·标准库移植机智云
无际单片机编程9 小时前
面对STM32的庞大体系,如何避免迷失在细节中?
java·stm32·单片机·嵌入式硬件·嵌入式开发
查理零世10 小时前
【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
python·算法·蓝桥杯
【云轩】11 小时前
【零基础实战】用STM32玩转DRV8313电机驱动:从原理到无人机/机器人控制
stm32·机器人·无人机
2301_7646022312 小时前
stm32hal库寻迹+蓝牙智能车(STM32F103C8T6)
stm32·单片机·嵌入式硬件
楼台的春风12 小时前
PWM(脉宽调制)技术详解:从基础到应用实践示例
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式
程序员JerrySUN14 小时前
树莓派 4B:AI 物联网完整部署方案
linux·人工智能·嵌入式硬件·物联网·分类·数据挖掘