STM32f103入门(3)按键控制LED灯以及光敏传感器控制LED

按键控制 技术点

  • 控制LED的 GPIO 设置为输出
  • 控制按键的GPIO 设置为上拉输入

按键部分代码

Key.c

#include "stm32f10x.h"
#include "Delay.h"
void Key_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU; //ÉÏÀ­ÊäÈëGPIO_InitStructure.GPIO_Pin= GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz ;GPIO_Init(GPIOB,&GPIO_InitStructure);}
uint8_t Key_GetNum(void)
{uint8_t KeyNum = 0;if( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) ==0 ){Delay_ms(20);while( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) ==0 );Delay_ms(20);KeyNum = 1;}return KeyNum;}

Key.h

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

Led部分代码
Led.c

#include "stm32f10x.h"void LED_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //ÍÆÃâÊä³öGPIO_InitStructure.GPIO_Pin= GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz ;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_ResetBits(GPIOA,GPIO_Pin_1);}void LED_ON(){ ///chose a onGPIO_ResetBits(GPIOA,GPIO_Pin_1);
}void LED_OFF(){GPIO_SetBits(GPIOA,GPIO_Pin_1);
}

Main

#include "stm32f10x.h"
#include "Delay.h"
#include "Led.h"
#include "Key.h"#define  dm Delay_ms
uint8_t KeyNum;
uint8_t flag=0;int main(void){LED_Init();Key_Init();while(1){KeyNum = Key_GetNum();if(KeyNum) flag=!flag;if(flag) LED_ON();else LED_OFF();}}

光敏传感部分

光敏传感器设置为上拉输入
无光为亮 有光则暗

Light.c

#include "stm32f10x.h"void Light_Init(void){GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU; //ÉÏÀ­ÊäÈëGPIO_InitStructure.GPIO_Pin= GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz ;GPIO_Init(GPIOA,&GPIO_InitStructure);}uint8_t get_num(){return GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);
}

Led.c

#include "stm32f10x.h"void LED_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //ÍÆÃâÊä³öGPIO_InitStructure.GPIO_Pin= GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz ;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_ResetBits(GPIOA,GPIO_Pin_1);}void LED_ON(){ ///chose a onGPIO_ResetBits(GPIOA,GPIO_Pin_1);
}void LED_OFF(){GPIO_SetBits(GPIOA,GPIO_Pin_1);
}

main

#include "stm32f10x.h"
#include "Delay.h"
#include "Led.h"
#include "Light.h"#define  dm Delay_ms
uint8_t KeyNum;
uint8_t flag=0;int main(void){LED_Init();Light_Init();while(1){if(get_num()==1) LED_ON();else LED_OFF();}}

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

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

相关文章

AJAX请求

一、HTTP 1、请求报文 行 POST /s?ieutf-8 HTTP/1.1 头 HOST: ceshi.comCookie: namehelloContent-type: application/x-www-form-urlencodedUser-Agent: chrome 83 空行 体 usernameadmin&passwordadmin2、响应报文 行 HTTP/1.1 200 OK 头 Content-Type: text/htm…

Mqtt学习笔记--交叉编译移植(1)

简述 Mqtt目前在物联网行业的应用比较多,mqtt属于应用层的一个中间件,这个中间件实现消息的订阅发布机制。网上介绍Mqtt的实现原来的比较多,这里不细介绍。 其实在我们之前的产品中,自己也开发的有类似的中间件,除了具…

ORB-SLAM2算法12之单目初始化Initializer

文章目录 0 引言1 单目初始化Initializer1.1 构造函数1.2 成员函数1.2.1 Initialize1.2.2 FindHomography1.2.3 FindFundamental1.2.4 ReconstructH1.2.5 ReconstructF 2 总结 0 引言 ORB-SLAM2算法7详细了解了System主类和多线程、ORB-SLAM2学习笔记8详细了解了图像特征点提取…

每日一题 1921. 消灭怪物的最大数量

难度:中等 思路: 已知速度和距离,可求时间必定先消灭时间最短的怪物求得时间数组排序,只要在第 i 秒时,time[i] > i ,那么就可以消灭第 i 个怪物 代码: class Solution:def eliminateMax…

理解透API

一、API是什么 当我们谈论API(Application Programming Interface,应用程序编程接口)时,我们指的是一组定义了软件组件之间如何相互通信的规则和约定。API可以被用于不同的软件、操作系统或服务之间的交互。 API定义了一系列的接…

QT(9.3)定时器,绘制事件

作业: 自定义一个闹钟 pro文件: QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecat…

线程的状态

线程按道理来说应该只有两种状态,分别为就绪状态和堵塞状态,这是系统设定的状态,不过在Java中,把这两个状态又做了进一步细分,分为了6种状态。 1)NEW:Thread对象创建好了,但是还没有…

PYTHON知识点学习-列表和元组

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由 Aileen_0v0🧸 原创 CSDN首发🐒 如…

GPT带我学-设计模式-迭代器模式

1 什么是迭代器设计模式? 迭代器设计模式是一种行为型设计模式,用于提供一种统一的方式来遍历一个集合对象中的元素,而不需要暴露该对象的内部结构。它将集合对象的遍历操作与集合对象本身分离开来,使得遍历操作可以独立于集合对…

科目1基础知识快速入门精简

科目1-4 科目一,又称科目一理论考试、驾驶员理论考试。》学习道路交通安全法律、法规和相关知识学习 考试内容包括驾车理论基础、道路安全法律法规、地方性法规等相关知识,再加地方性法规。考试形式为上机考试,100道题,90分及以…

Python安装

windows安装Python python官网 python官网下载 打开下载链接选择需要下载的python版本。 点击版本号或者Download按钮进入下载页面,滚动到页面最下面可看到各个平台的 Python 安装包。 选择Operating System项为Windows的文件,这里我们选择windows64位…

用户中心笔记-leovany

1. 安装 官方地址:https://pro.ant.design/zh-CN/docs/getting-started 1.1 Mac系统 1.1.1 安装yarn 安装yarn brew install yarn查看版本 brew -v 1.1.2 安装node // 安装node brew install node // 关联 brew unlink node && brew link node // 查看版…

【开发语言】C语言与Python的互操作详解

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

在 Python 中构建卷积神经网络; 从 0 到 9 的手绘数字的灰度图像预测数字

一、说明 为了预测从0到9的数字&#xff0c;我选择了一个基于著名的Kaggle的MNIST数据集的数据集。数据集包含从 <0> 到 <9> 的手绘图数字的灰度图像。在本文中&#xff0c;我将根据像素数据&#xff08;即数值数据&#xff09;和卷积神经网络预测数字。 二、 卷积…

不可变集合、Lambda表达式、Stream流

不可变集合、Lambda表达式、Stream流 创建不可变集合 不能被修改的集合 应用场景 如果某个数据不能被修改&#xff0c;把它防御性的拷贝到不可变集合中是个很好的实践。 当集合对象被不可信的库调用时&#xff0c;不可变形式是安全的。 创建不可变集合 在List、Set、Map接口中…

leetcode 189. 轮转数组

2023.9.3 k的取值范围为0~100000&#xff0c;此时需要考虑到两种情况&#xff0c;当k为0时&#xff0c;此时数组不需要轮转&#xff0c;因此直接return返回&#xff1b;当k大于等于数组nums的大小时&#xff0c;数组将会转为原来的数组&#xff0c;然后再接着轮转&#xff0c;此…

2.神经网络的实现

创建神经网络类 import numpy # scipy.special包含S函数expit(x) import scipy.special # 打包模块 import pickle# 激活函数 def activation_func(x):return scipy.special.expit(x)# 用于创建、 训练和查询3层神经网络 class neuralNetwork:# 初始化神经网络def __init__(se…

C语言中内存分配的几种方式

目录 C语言中内存分配的几种方式静态内存分配栈内存分配堆内存分配内存映射文件 C语言中内存分配的几种方式 静态内存分配 静态内存分配是在程序编译时分配内存&#xff0c;通常用于全局变量和静态变量。这些变量的内存空间在程序的整个运行期间都是存在的。 栈内存分配 栈内存…

租服务器训练深度学习模型

一、选择租哪个 推荐用AutoDL(便宜、功能强大、gug少、有时时客服解决问题) AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL 二、注册、登录 学生可以认证&#xff0c;享受会员价 服务器需要登录后先充值&#xff0c;先充个10元&#xff0c;接下来试试看。每次都是开机…

Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明

Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明 目录 Stable Diffuse 之 安装文件夹、以及操作界面 UI 、Prompt相关说明 一、简单介绍 二、安装文件相关说明 三、界面的简单说明 四、prompt 的一些语法简单说明 1、Prompt &#xff1a;正向提示词 &am…