【单片机学习】之STM32项目2————按键控制LED

项目基础:

1.GPIO输入

2.宏定义:对数字进行重命名

关键词#define,#ifndef,#endif

例子:#define ABC 12345 

翻译:ABC替换的是12345,前面的是新变量名字,后面是被替换的数字

3.typedef:对变量进行重命名

关键词:typedef

例子: typedef    struct{} GPIO_InitStructure;

翻译:struct{}替换成GPIO_InitStructure

4.结构体:对不同的变量类型进行组合配对

关键词:struct

定义方式:struct{char x,int y,float z}StructName;

引用方式1:StructName.x='A',StructName.y=66.StructName.z=1.3

引用方式2:&StructName->x,表示对结构体的地址进行引用

5.按键基础知识

https://blog.csdn.net/m0_69142917/article/details/136644381

6.模块化编程

定义:单独对元器件驱动进行定义和封装(建立元器件的.c和.h文件),储存在project\HardWare文件夹下,记得要在keil软件里添加路径

 1.LED驱动配置

首先点击Hardware文件,点击添加新文件>添加一个LED.c,一个LED.h文件,.c文件添加头文件,.h文件初始化#ifndef;#define<>#endif

 

添加LED启动函数void LED_Unit(void){}

把函数名添加到.h文件里且在.c文件里添加#include "LED.h"才能够外部引用

再添加一个LED_ON和OFF的函数

同样在.h文件里添加引用

运行结果0错误,0警告

下载到单片机,因为初始化之后输出低电平,端口为推挽输出模式,低电平驱动LED点亮

给端口设置低电平,编译运行,下载,LED熄灭

LED驱动配置完成;

2.按键驱动配置

与LED一样,先写KEY初始化文件KEY_Init(){}

 

添加按键读取函数uint8_t KEY_GetNum(void){}

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现STM32按键控制LED,可以按照以下步骤进行: 1. 配置LED引脚为输出模式,配置按键引脚为输入模式; 2. 在主函数中初始化按键和LED引脚; 3. 在主函数中读取按键引脚状态,如果检测到按键按下,则将LED引脚输出高电平,否则输出低电平; 4. 使用延时函数等待按键松开。 下面是一个简单的示例代码: ```c #include "stm32f10x.h" #define LED_PIN GPIO_Pin_8 #define LED_PORT GPIOB #define KEY_PIN GPIO_Pin_7 #define KEY_PORT GPIOB void LED_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = LED_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LED_PORT, &GPIO_InitStructure); } void KEY_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = KEY_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(KEY_PORT, &GPIO_InitStructure); } int main(void) { LED_Configuration(); KEY_Configuration(); while (1) { if (GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN) == RESET) { GPIO_SetBits(LED_PORT, LED_PIN); while (GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN) == RESET); GPIO_ResetBits(LED_PORT, LED_PIN); } } } ``` 在这个例子中,我们使用PB7作为按键输入引脚,PB8作为LED输出引脚。在主函数中,我们使用`GPIO_ReadInputDataBit()`函数检测按键引脚状态,如果检测到按键按下,则使用`GPIO_SetBits()`函数将LED引脚输出高电平,等待按键松开后使用`GPIO_ResetBits()`函数将LED引脚输出低电平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值