03按键控制LED

上回讲到点亮一个LED
    这次我们来实现用按键控制led 不带中断的方式 当然实例来源网络 加上自己整合 先熟悉流程

0.添加一个自己写的驱动库文件

    为什么添加 笔者想的是一个项目工程希望能适应很多个应用场景需要什么直接在里面调用分装好的函数就行

1.如何添加文件以及编写驱动后编译

    用上回案例讲到的实例工程添加一个Hardware文件夹 :
img

img
img
img
img

1.封装LED库函数

     Led.C 引脚按需配置

#include "stm32f10x.h"                  // Device header// LED 初始化 
void LED_Init(void){GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct);// 初始化 置1 GPIO_SetBits(GPIOC,GPIO_Pin_13);
}void LED_ON(void){GPIO_ResetBits(GPIOC,GPIO_Pin_13);
}
void LED_OFF(void){GPIO_SetBits(GPIOC,GPIO_Pin_13);
}// 高低电平反转 
void LED_Turn(void)
{if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_13)==0){GPIO_SetBits(GPIOC,GPIO_Pin_13);}else{GPIO_ResetBits(GPIOC,GPIO_Pin_13);}
}

Led.h

#ifndef __LED_H
#define __LED_Hvoid LED_Init(void);   // led 引脚初始化
void LED_ON(void);     // led 开
void LED_OFF(void);    // led 关
void LED_Turn(void);   // led 反转#endif

2.封装Key函数库

    和上步相同
Key.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"// 初始化接地按键
void Key_Init(void){GPIO_InitTypeDef  GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_12;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct);}uint8_t Key_GetNum(void){uint8_t Key_Num = 0;if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)== 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)== 0);Delay_ms(20);Key_Num = 1;	}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)== 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)== 0);Delay_ms(20);Key_Num = 2;}return  Key_Num;
}

key.h

#ifndef __KEY_H
#define __KEY_Hvoid Key_Init(void);uint8_t Key_GetNum(void);#endif

编写功能需求

main.c


#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"uint8_t KeyNum;
uint8_t StaNum=0;
int main(void)
{LED_Init();Key_Init();while (1){KeyNum = Key_GetNum();if (KeyNum == 1){LED_Turn();}}
}

#现象就是按一下按键led pc13状态反转一次
img
编译下载看现象
img
img
就是按一下按键led pc13状态反转一次
img
编译下载看现象
img
img
这里的项目配置不要出错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/503542.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「媒体宣传」如何写好新闻稿?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 写好新闻稿是媒体宣传的关键环节之一,下面是一些关于如何写好新闻稿的建议: 明确新闻稿的目的和受众:在写新闻稿之前,首先要明确新闻稿的目…

wpa_supplicant交叉编译

文章目录 源码编译openssl编译libnl交叉编译WPA 开发板测试使用 源码 wpa_supplicant官网:http://w1.fi/wpa_supplicant/ GIT源:git://w1.fi/hostap.git openssl 源码: https://www.openssl.org/ libnl 源码: https://github.c…

Socket网络编程(四)——点对点传输场景方案

目录 场景如何去获取到TCP的IP和Port?UDP的搜索IP地址、端口号方案UDP搜索取消实现相关的流程:代码实现逻辑服务端实现客户端实现UDP搜索代码执行结果 TCP点对点传输实现代码实现步骤点对点传输测试结果 源码下载 场景 在一个局域网当中,不知…

26、Qt调用.py文件中的函数

一、开发环境 Qt5.12.0 Python3.7.8 64bit 二、使用 新建一个Qt项目,右击项目名称,选择“添加库” 选择“外部库”,点击“下一步” 点击“浏览”,选择Python安装目录下的libs文件夹中的“python37.lib”文件,点击“下…

gpt批量工具,gpt批量生成文章工具

GPT批量工具在今天的数字化时代扮演着越来越重要的角色,它们通过人工智能技术,可以自动批量生成各种类型的文章,为用户提供了便利和效率。本文将介绍5款不同的GPT批量工具,并介绍一款知名的147GPT生成工具,以及另外一款…

TypeScript学习

TypeScript 是一种基于 JavaScript 构建的强类型编程语言。 ts不是js的替代只是为了大型项目更好的扩展,微软编写的一个强类型的脚本。 ts中对参数,变量,返回值 都有限制,不像js那么随意,类的定义也更严格&#xff0…

[unity] c# 扩展知识点其一 【个人复习笔记/有不足之处欢迎斧正/侵删】

.NET 微软的.Net既不是编程语言也不是框架,是类似于互联网时代、次时代、21世纪、信息时代之类的宣传口号,是一整套技术体系的统称,或者说是微软提供的技术平台的代号. 1.跨语言 只要是面向.NET平台的编程语言(C#、VB、 C、 F#等等),用其中一种语言编写…

雅马哈伺服器TS-S系列说明具体详情内容可参看PDF目录内容

雅马哈伺服器TS-S系列说明具体详情内容可参看PDF目录内容

快递平台独立版小程序源码|带cps推广营销流量主+前端

源码介绍: 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序,接入云洋/易达物流接口,支持选择快递公司,三通一达,极兔,德邦等,功能成熟 如何收益: 1.对接第三方平台成本大约4元…

低密度奇偶校验码LDPC(七)——SPA和积译码算法的简化

一、SPA译码算法的实际应用 查找表与拟合 盒加SPA译码器 二、SPA译码算法的简化算法 最小和算法(MSA) 归一化最小和算法(Normalized MSA, NMSA) 偏移最小和算法(Offset MSA, OMSA) 三、NMSA算法的Matlab实现 function [x_hat, iter_this_time] Layered_NMSA_BP_decoder(ll…

【C语言】linux内核xmit_one函数

一、中文注释 static int xmit_one(struct sk_buff *skb, struct net_device *dev,struct netdev_queue *txq, bool more) {unsigned int len;int rc;// 如果全局ptype列表或者设备特定的ptype列表不为空,则执行网络接口层网络层的NIT(Network Tap&…

GenAI助力DevOps,塑造软件工程的未来

自 2022 年以来,GenAI 无疑已成为一种普遍的技术趋势。在本文中,我们将探索 DevOps 中令人兴奋的 GenAI 领域,讨论其潜在优势、局限性、新兴趋势和最佳实践,深入了解 AI 支持的 DevOps 前沿世界,并探索这一强大组合如何…