CODE001

GPIO通用输入输出端口
1.可以配置八种输入输出模式
2.引脚电平0~3.3v 部分可以容忍5V
3.输出模式下可控制端口输出高低电平,用来驱动LED,蜂鸣器,模拟通信协议输出时序
4.输入模式下可读取端口的高低电平或电压,用于读取按键输入,外部模块电平输入,ADC电压采集,模拟通信协议接收数据


```c
/*
GPIO控制小灯泡闪烁
*/
#include "stm32f10x.h"#include "Delay.h"
void LED_Init(void){//1.开启GPIO端口对应的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef  GPIO_InitStructure;//2.定义一个结构体变量,然后对GPIO端口的各个相应参数赋值GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);//3.将赋值好的结构体变量传给GPIO_Init函数GPIO_SetBits(GPIOA,GPIO_Pin_0);}
//4.写一个闪烁的函数即可 
void LED_ShanShuo(void){Delay_ms(50);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
Delay_ms(50);
GPIO_SetBits(GPIOA,GPIO_Pin_0);}
```bash
#include "stm32f10x.h" 
#include "Delay.h"
/*
获取按键键值,通过键值控制LED*?
void KeyInit(void){//1.开启对应GPIO的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//2.定义一个结构体变量。来对GPIOB端口的参数进行配置GPIO_InitTypeDef GPIO_Initstructure;GPIO_Initstructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Initstructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_11;GPIO_Initstructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_Initstructure);}/*uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取输入数据的某一位
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读取输入数据全部
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取输出数据某一位
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//读取输出数据全部*/
uint8_t Get_KeyNum(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;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0){ Delay_ms(20);//去抖动            while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0);//此函数是阻塞式操作,当按键按住不放时,函数会卡住,直到按键松手Delay_ms(20);//去抖动      keynum=2;}return keynum;}```c
void LED_ON(void) 
{GPIO_SetBits(GPIOA,GPIO_PIN_1);
}void LED_OFF(void){GPIO_SetBits(GPIOA,GPIO_PIN_1);
}void LED_TURN(void){
//使用GPIO_ReadOutPutDataBits();通过判断输出引脚的某一位的值去反转
if(GPIO_ReadOutPutDataBits(GPIOA,GPIO_PiN_1)==0) {GPIO_ResetBits(GPIOA,GPIO_PIN_1);
}
}
}
//BEEP模块,同上配置一下即可,其控制方式和LED一样
void KeyInit(void){//1.开启对应GPIO的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//2.定义一个结构体变量。来对GPIOB端口的参数进行配置GPIO_InitTypeDef GPIO_Initstructure;GPIO_Initstructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Initstructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8;GPIO_Initstructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_Initstructure);}

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

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

相关文章

3.Python从入门到精通—Python 基础语法详细讲解-中

【30天】Python从入门到精通详解版—第二天—Python 基础语法详细讲解-中 控制流程语句条件语句循环语句 函数和模块函数模块 控制流程语句 在Python中,控制流程语句用于控制程序的执行流程,包括条件语句和循环语句。 条件语句 Python中的条件语句包括…

Database Connectivity using Python使用 Python 进行数据库连接

Introduction • The Python programming language has powerful features for database programming • Python supports various databases like MySQL, Oracle, Sybase, PostgreSQL, etc • Python also supports Data Definition Language (DDL), Data Manipulation Langua…

ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 思考: 1、cache的entry里都是有什么? 2、TLB的entry里都是有什么? 3、MMU操作…

代码简洁之道

《代码简洁之道》(Clean Code)是由Robert C. Martin所著的一本经典书籍,主要介绍了如何编写清晰、可读性高、易于维护的代码。以下是该书中的一些重要观点: 1. 命名清晰明了:变量、函数、类等命名应当清晰明了&#x…

unity3d Animal Controller的Animal组件中Speeds,States和modes基础部分理解

Speeds 速度集是修改你可以做的原始动画,增加或减少运动,旋转,或动画速度。它们与 州 所以,当动物在运动状态下,在飞行或游泳时,你可以有不同的速度 如果你的性格动画是 (已到位), 你一定要调整速度 位置 和 旋转 每一种的价值观 速度装置 …否则,它们不会移动或旋转。 每个速…

Java策略模式源码剖析及使用场景

策略模式 一、介绍二、不同的支付方式采用不同的策略三、 电商定价策略四、日志记录策略五、 压缩算法六、Java 中的 Arrays.sort() 方法,不同的排序策略进行排序七、Spring 中的 ResourceLoader 类,不同的资源位置采用不同的加载策略 一、介绍 策略模式是一种行为型设计模式,…

计算机行业在数字经济时代的角色与数字化转型之路

目录 前言1 数字经济时代下的计算机行业角色与定位1.1 数字经济支撑者1.2 创新引领者1.3 产业融合者 2 数字化转型对计算机行业的影响与挑战2.1 技术更新换代的压力2.2 人才培养与流动的问题2.3 数据隐私与安全的挑战 3 数字化转型如何提升行业竞争力3.1 提高生产效率与优化产品…

【Java】获取手机文件名称补充

本地的 ADB 工具路径指的是你电脑上安装的 Android Debug Bridge(ADB)工具的路径。ADB 是 Android SDK 中的一个工具,用于与连接到计算机上的 Android 设备进行通信。你需要确保 ADB 已正确安装,并知道其在你计算机上的位置。 通…

Prometheus 监控告警配置

文章目录 一、告警通知1.邮件通知2.钉钉通知2.1.获取钉钉机器人webhook2.2.prometheus-webhook-dingtalk2.3.配置信息2.4.自定义模板 3.自定义 二、告警规则1.Prometheus2.Linux3.Docker4.Nginx5.Redis6.PostgreSQL7.MySQL8.RabbitMQ9.JVM10.Elasticsearch 开源中间件 # Prome…

odoo中使用domain基础操作

Odoo中的domain是一个用于筛选记录的条件列表,它通常用于搜索、过滤和定义视图中可见记录的规则。Domain由一系列的元组组成,每个元组定义了一个筛选条件。这些条件可以是简单的字段比较,也可以是更复杂的逻辑组合。 基本语法 Domain的基础…

模拟无人驾驶汽

下面是一个简单的Python代码示例,用于模拟无人驾驶汽车的自动驾驶功能。 import timeclass Car:def __init__(self):self.speed 0self.heading 0def drive(self):while True:self.update_sensors()self.process_sensors()self.control_car()self.update_car()tim…

CentOS搭建NAS服务器并使用

CentOS搭建NAS服务器并使用 文章目录 前言一、配置NAS服务器安装 NFS 服务:启动 NFS 服务:使 NFS 服务在系统启动时自动启动: 二、挂载服务器三、常见错误以及解决方案1、mount.nfs: No route to host2、mount.nfs: access denied by server …

vue3之组合式函数

抽取成一个组合式函数: // fetch.js //接收响应式状态 import { ref, watchEffect, toValue } from vue //一个封装的异步请求 import { fetch } from ../XX export function useFetch(url) {const data ref(null)const error ref(null)const fetchData () >…

OpenCV的常用数据类型

OpenCV涉及的常用数据类型除包含C的基本数据类型,如:char、uchar,int、unsigned int,short 、long、float、double等数据类型外, 还包含Vec,Point、Scalar、Size、Rect、RotatedRect、Mat等类。C中的基本数据类型不需再做说明下面重点介绍一下…

打包 加載AB包 webGl TextMeshPro 變紫色的原因

1.打包 加載AB包 webGl TextMeshPro 變紫色的原因 編輯器命令行https://docs.unity3d.com/cn/2019.4/Manual/CommandLineArguments.html 1.UnityHub 切換命令行參數 -force-gles 2.-force-gles(仅限 Windows)| 使 Editor 使用 OpenGL for Embedded Sys…

揭秘WMM:wifi中的QOS

更多内容在 WiFi WMM(无线多媒体)是一种用于无线局域网(WLAN)的QoS(服务质量)标准。WMM旨在提供更好的网络性能,特别是在传输多媒体内容(如音频和视频)时。它通过对不同类…

42.坑王驾到第八期:uniCloud报错

uniCloud 报错 今天调用云函数来调试小程序的时候突然暴了一个奇葩错误,require(…).main is not a function。翻官方文档后发现,原来是这样:**如果你写的是云对象,入口文件应为 index.obj.js,如果你写的是云函数入口…

python学习2:日志记录的用法

一些日志记录的简单记录: 用basicConfig可以进行配置 注意日志的等级: 上述代码得到的日志如下(最基础的日志): 关于记录下来的日志格式可以有很多内容:如等级、发生的时间、发生的位置、发生的进程、…

WinRAR功能之【加密文件名】

很多人知道,WinRAR解压缩软件可以给压缩包设置密码,这样就可以保护压缩包里的文件,不被随意打开。 设置密码后,双击压缩包还是可以打开的,但要打开里面的文件时,就需要输入原本设置的密码才能打开。 虽然…

蓝桥杯-Python组(一)

1. 冒泡排序 算法步骤: 比较相邻元素,如果第一个大于第二个则交换从左往右遍历一遍,重复第一步,可以保证最大的元素在最后面重复上述操作,可以得到第二大、第三大、… n int(input()) a list(map(int, input()…