当前位置: 首页 > news >正文

【STM32】LED状态翻转函数

1.利用状态标志位控制LED状态翻转

在平常编写LED状态翻转函数时,通常利用状态标志位实现LED状态的翻转。如下所示:

unsigned char led_turn_flag;    //LED状态标志位,1-点亮,0-熄灭/***************************************函数名称:LED亮灭控制函数形参:sta 1-点亮,0-熄灭
****************************************/
void led_control(unsigned char sta)
{if(sta) //高电平{GPIO_SetBits(GPIOA,GPIO_Pin_1);}else{GPIO_ResetBits(GPIOA,GPIO_Pin_1);}
}/***************************************函数名称:LED翻转控制函数形参:无
****************************************/
void led_control_turn()
{led_control(led_turn_flag);
}

使用状态标志位,可以轻松实现LED状态翻转,但其存在可移植性差的问题。

led_turn_flag这个变量如果在其他.c文件中需要使用,则需要在该.c文件中对该变量再次进行声明,如此一来,使得程序繁琐冗长、可读性差、可移植性差。

下面将介绍一种利用STM32关于GPIO库函数实现LED状态翻转,其可读性强、可移植性强。

2.利用STM32库函数实现LED状态翻转

利用读GPIO引脚函数和写GPIO位函数实现,先读取引脚状态再将其进行翻转,代码如下:

void led_control_turn(void)
{GPIO_WriteBit(GPIOA,GPIO_Pin_1,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1)));//读取到是0,1-0=1,就翻转为1;读取到是1,1-1=0,就翻转为0
}//下面两个函数是STM32自己的库函数,不需要我们自己添加
/*** @brief  Sets or clears the selected data port bit.* @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.* @param  GPIO_Pin: specifies the port bit to be written.*   This parameter can be one of GPIO_Pin_x where x can be (0..15).* @param  BitVal: specifies the value to be written to the selected bit.*   This parameter can be one of the BitAction enum values:*     @arg Bit_RESET: to clear the port pin*     @arg Bit_SET: to set the port pin* @retval None*/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)
{/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GET_GPIO_PIN(GPIO_Pin));assert_param(IS_GPIO_BIT_ACTION(BitVal)); if (BitVal != Bit_RESET){GPIOx->BSRR = GPIO_Pin;}else{GPIOx->BRR = GPIO_Pin;}
}/*** @brief  Reads the specified output data port bit.* @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.* @param  GPIO_Pin:  specifies the port bit to read.*   This parameter can be GPIO_Pin_x where x can be (0..15).* @retval The output port pin value.*/
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{uint8_t bitstatus = 0x00;/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET){bitstatus = (uint8_t)Bit_SET;}else{bitstatus = (uint8_t)Bit_RESET;}return bitstatus;
}

利用STM32库函数实现LED状态翻转,简洁明了,可移植性强。

相关文章:

【STM32】LED状态翻转函数

1.利用状态标志位控制LED状态翻转 在平常编写LED状态翻转函数时,通常利用状态标志位实现LED状态的翻转。如下所示: unsigned char led_turn_flag; //LED状态标志位,1-点亮,0-熄灭/***************************************函…...

uniapp 小程序 textarea 层级穿透,聚焦光标位置错误怎么办?

前言 在开发微信小程序时,使用 textarea 组件可能会遇到一些棘手的问题。最近我在使用 uniapp 开发微信小程序时,就遇到了两个非常令人头疼的问题: 层级穿透:由于 textarea 是原生组件,任何元素都无法遮盖住它。当其…...

汽车 SOA 架构下的信息安全新问题及对策漫谈

摘要:随着汽车行业的快速发展,客户和制造商对车辆功能的新需求促使汽车架构从面向信号向面向服务的架构(SOA)转变。本文详细阐述了汽车 SOA 架构的协议、通信模式,并与传统架构进行对比,深入分析了 SOA 给信…...

Unity-Mirror网络框架-从入门到精通之RigidbodyPhysics示例

文章目录 前言示例一、球体的基础配置二、三个球体的设置差异三、示例意图LatencySimulation前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开…...

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意:小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务,如果没有就在插件管理中添加插件 2.腾讯位置服务…...

H3CNE-12-静态路由(一)

静态路由应用场景: 静态路由是指由管理员手动配置和维护的路由 路由表:路由器用来妆发数据包的一张“地图” 查看命令: dis ip routing-table 直连路由:接口配置好IP地址并UP后自动生成的路由 静态路由配置: ip…...

多线程锁

在并发编程中,锁(Lock)是一种用于控制多个线程对共享资源访问的机制。正确使用锁可以确保数据的一致性和完整性,避免出现竞态条件(Race Condition)、死锁(Deadlock)等问题。Java 提供…...

ZooKeeper 核心知识全解析:架构、角色、节点与应用

1.ZooKeeper 分布式锁怎么实现的 ZooKeeper 是一个高效的分布式协调服务,它提供了简单的原语集来构建更复杂的同步原语和协调数据结构。利用 ZooKeeper 实现分布式锁主要依赖于它的顺序节点(Sequential Node)特性以及临时节点(Ep…...

笔记本电脑 选购 回收 特权模式使用 指南

笔记本电脑 factor 无线网卡:有些笔记本无法检测到特定频段的信息,会导致连不上校园网 sudo iwlist wlp2s0 scan | grep Frequency > net.txt cat net.txt>表示用终端输出覆盖后续文件,>>表示添加到后续文件的末尾 一种更简…...

2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一

2023-2024 学年 广东省职业院校技能大赛(高职组“信息安全管理与评估”赛题一) 模块一:网络平台搭建与设备安全防护第一阶段任务书任务 1:网络平台搭建任务 2:网络安全设备配置与防护DCRS:DCFW:DCWS:DCBC:WAF: 模块二:网络安全事件…...

C#补充----反射,特性,迭代器,特殊语法,值类型运用类型。

1.反射&#xff1a;通过type 获取类中的数据。创建实例&#xff0c;并赋值。 《1》获取类的方式 《2》反射的应用 <1>获取类型的所有公共成员 <2>获取构造函数 <3>获取类型的 公共成员变量 <4>获取类型的 公共方法 <5>.获取类型的 属性 <6&g…...

深度学习核函数

一、核函数的基本概念 核函数在机器学习中具有重要应用价值&#xff0c;常用于支持向量机&#xff08;SVM&#xff09;等算法中。 核函数是面试中经常被考到的知识点&#xff0c;对于找工作和实际数据转换都有重要作用。 二、数据建模与核函数的作用 数据越多&#xff0c;可…...

Spring MVC流程一张图理解

由于现在项目中大部分都是使用springboot了&#xff0c;但是ssm中的springmvc还是可以了解一下 1 、用户发送请求至前端控制器 DispatcherServlet 。 2 、 DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。 3 、处理器映射器找到具体的处理器 ( 可以根据 xml 配…...

计算机网络速成

前言&#xff1a;最近在做一些动态的crypto&#xff0c;但是配置总搞不好&#xff0c;正好也有学web的想法&#xff0c;就先学学web再回去做密码&#xff0c;速成视频推荐b站建模老哥 目录 计算机网络概述网络的范围分级电路交换网络&#xff08;电路交换&#xff09;报文交换网…...

spring.profiles.active不同优先级

1、在editConfiguration中配置profiles.activedev会同时影响项目取application-dev.properties、bootstrap-dev.yaml&#xff0c;且这种方式优先级最高&#xff0c;会覆盖application.properties、bootstrap.yaml中的spring.profiles.active配置 2、在application.properties配…...

我这不需要保留本地修改, 只需要拉取远程更改

如果你不需要保留本地修改&#xff0c;只需要拉取远程更改并强制将本地分支与远程分支同步&#xff0c;可以按照以下步骤操作&#xff1a; 1. 丢弃本地修改 首先&#xff0c;丢弃所有本地未提交的修改&#xff1a; git reset --hard这会重置工作目录和暂存区&#xff0c;丢弃…...

源码编译安装httpd 2.4,提供系统服务管理脚本并测试(两种方法实现)

下载 httpd 2.4 源码&#xff1a; wget https://dlcdn.apache.org/httpd/httpd-2.4.x.tar.gztar -zxvf httpd-2.4.x.tar.gzcd httpd-2.4.x配置、编译和安装&#xff1a; ./configure --prefix/usr/local/apache2 --enable-so --enable-ssl --enable-cgi makesudo make install实…...

深度学习在自动化测试中的创新应用:提升运维效率与质量

《深度学习在自动化测试中的创新应用:提升运维效率与质量》 一、引言 在当今快速发展的软件行业中,自动化测试是确保软件质量和可靠性的关键环节。随着软件系统的日益复杂,传统的自动化测试方法在处理复杂场景、提高测试覆盖率和准确性方面面临着诸多挑战。深度学习作为人…...

单独编译QT子模块

单独编译QT子模块 系统 win qt-everywhere-src-5.12.12 下载源码&#xff1a; https://download.qt.io/archive/qt/5.12/5.12.12/single/ 参考&#xff1a; https://doc.qt.io/qt-5/windows-building.html 安装依赖 https://doc.qt.io/qt-5/windows-requirements.html Per…...

学习华为熵减:激发组织活力(系列之三)

目录 为什么学习华为&#xff1f; 学习华为什么&#xff1f; 一、势&#xff1a;顺势而为&#xff0c;在风口上猪都会飞起来。 二、道&#xff1a;就是认识和利用规律层面&#xff0c;文化和制度创新就是企业经营之道。 三、法&#xff1a;就是一套价值管理的变革方法论。…...

YOLO-v5实战:用预训练模型快速检测图片中的物体

YOLO-v5实战&#xff1a;用预训练模型快速检测图片中的物体 1. 引言&#xff1a;为什么选择YOLO-v5 在计算机视觉领域&#xff0c;物体检测是一项基础而重要的任务。YOLO&#xff08;You Only Look Once&#xff09;系列模型因其速度快、精度高的特点&#xff0c;成为工业界和…...

Wan2.2-I2V-A14B企业应用:法律文书解读AI动画视频生成系统

Wan2.2-I2V-A14B企业应用&#xff1a;法律文书解读AI动画视频生成系统 1. 系统概述与核心价值 法律行业每天需要处理大量文书材料&#xff0c;传统的人工解读和可视化呈现方式效率低下且成本高昂。Wan2.2-I2V-A14B法律文书解读AI动画视频生成系统正是为解决这一痛点而生。 这…...

基于vue的错题管理系统[vue]-计算机毕业设计源码+LW文档

摘要&#xff1a;随着在线教育的发展&#xff0c;错题管理作为学习过程中的重要环节&#xff0c;其信息化管理需求日益增长。本文旨在设计并实现一个基于Vue框架的错题管理系统&#xff0c;通过对系统需求进行深入分析&#xff0c;采用合适的技术架构和开发技术&#xff0c;完成…...

简单介绍C语言中的字符串函数

1.首先给出字符分类函数这几个就简单过一下&#xff0c;不做重点说明。这两个为字符转换函数&#xff0c;顾名思义&#xff0c;没什么好介绍的&#xff1b;接下来简单介绍几个字符串函数&#xff1a;strlen.strcpy.strcat.strstr.strncpy.strncat.memcpy.memmove;strlen:求字符…...

OffscreenCanvas黑科技:让你的网页动画性能提升300%的配置指南

OffscreenCanvas黑科技&#xff1a;让你的网页动画性能提升300%的配置指南 当网页动画开始卡顿&#xff0c;用户的体验就会直线下降。传统Canvas渲染在主线程执行&#xff0c;复杂的图形运算很容易阻塞UI响应。OffscreenCanvas的出现彻底改变了这一局面——它允许你将绘制逻辑转…...

Voyager复杂导航模式实现:底部导航、标签页和嵌套导航实战

Voyager复杂导航模式实现&#xff1a;底部导航、标签页和嵌套导航实战 【免费下载链接】voyager &#x1f6f8; A pragmatic navigation library for Jetpack Compose 项目地址: https://gitcode.com/gh_mirrors/voyag/voyager Voyager是一个专为Jetpack Compose设计的实…...

CLIP-GmP-ViT-L-14图文匹配工具入门必看:上传图片+批量文本匹配全流程

CLIP-GmP-ViT-L-14图文匹配工具入门必看&#xff1a;上传图片批量文本匹配全流程 你是不是经常好奇&#xff0c;AI到底能不能看懂图片&#xff1f;比如&#xff0c;你给它一张小狗的照片&#xff0c;它能准确说出这是“一只狗”而不是“一只猫”或“一辆车”吗&#xff1f;今天…...

【读书笔记】《如何做到爱孩子也被孩子爱》

《如何做到爱孩子也被孩子爱》作者&#xff1a;法国著名心理学家&#xff08;著有《你好&#xff0c;焦虑分子》&#xff09;核心框架&#xff1a;爱、理性与逻辑 本书提出教养孩子的三大抓手&#xff0c;缺一不可&#xff1a; 爱 → 带来丰富情感与能量&#xff0c;让孩子将来…...

手机关键词 SEO 优化与网站速度优化有什么关系_手机关键词 SEO 优化与内容营销策略有什么联系

手机关键词 SEO 优化与网站速度优化有什么关系 在当今数字化时代&#xff0c;网站的流量和用户体验直接影响企业的品牌价值和市场竞争力。手机关键词 SEO 优化与网站速度优化这两个看似独立的环节&#xff0c;实际上有着密不可分的联系。本文将详细探讨它们之间的关系&#xf…...

新手零基础入门:用快马生成你的第一个dify对话应用

今天想和大家分享一个特别适合新手入门的实践&#xff1a;用InsCode(快马)平台快速搭建你的第一个dify对话应用。作为一个刚接触AI开发的小白&#xff0c;我发现这个平台真的能省去很多麻烦的配置步骤&#xff0c;特别适合想快速看到成果的新手。 为什么选择dify作为入门&…...