蓝桥杯物联网竞赛_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接收,才能被显示:

相关推荐
wdfk_prog6 小时前
便携式功耗分析仪LuatOS IoT Power vs. Nordic PPK2
物联网
BreezeJuvenile7 小时前
外设模块学习(8)——HC-SR04超声波模块(STM32)
stm32·单片机·嵌入式硬件·学习·超声波测距模块·hc-sr04
极造数字8 小时前
从EMS看分布式能源发展:挑战与机遇并存
人工智能·分布式·物联网·信息可视化·能源·制造
安庆平.Я10 小时前
STM32——定时器
stm32·单片机·嵌入式硬件·定时器
ヾChen11 小时前
头歌MySQL——复杂查询
数据库·物联网·学习·mysql·头歌
小叮当⇔11 小时前
知识就是力量——PM2.5传感器全面解析:从原理、型号到选型指南
物联网
NEU-UUN12 小时前
1.2.STM32简介——全程手敲板书
stm32·单片机·嵌入式硬件
应用市场12 小时前
基于STM32的多模态智能门锁系统设计与实现
stm32·单片机·嵌入式硬件
xiaohai@Linux12 小时前
STM32在LVGL上实现移植FatFs文件系统(保姆级详细教程)
stm32·单片机·嵌入式硬件·lvgl·fatfs
Jerry丶Li12 小时前
二十二、STM32的ADC(二)(ADC单通道)
stm32·单片机·嵌入式硬件