首页 > 其他分享 >STM32读取GPIO状态的代码优化

STM32读取GPIO状态的代码优化

时间:2024-05-24 16:29:19浏览次数:27  
标签:PortNum ReadInputDataBit GPIOx 0x00 return STM32 代码优化 GPIO

最近看到新的读取GPIO状态引脚状态的代码

伪代码如图:

优势:读取消抖前第一次的GPIO状态,与引脚先前状态进行对比;如果电平状态一致则跳过延时消抖的流程,可以节约时间,减少裸机工作循环一轮所用时间

​
static u8 ReadIOPort(GPIO_TypeDef* GPIOx, u16 PortNum, u8 prePortStatus)
{
    if(0x00 == prePortStatus)
    {
        if(0x00 == GPIO_ReadInputDataBit(GPIOx, PortNum))
        {
            delay_us(100);
            if(0x00 == GPIO_ReadInputDataBit(GPIOx, PortNum))
            {
                return 0;
            }
        }
        return 1;
    }
    else
    {
        if(0x00 != GPIO_ReadInputDataBit(GPIOx, PortNum))
        {
            delay_us(100);
            if(0x00 != GPIO_ReadInputDataBit(GPIOx, PortNum))
            {
                return 1;
            }
        }
        return 0;
    }
       
}

​

标签:PortNum,ReadInputDataBit,GPIOx,0x00,return,STM32,代码优化,GPIO
From: https://blog.csdn.net/m0_52856052/article/details/139070626

相关文章

  • 基于STM32的电子秤毕业论文
    撰写基于STM32的电子秤毕业论文,你需要围绕系统设计、实现、测试和结论几个核心部分展开。下面是一个基本的大纲和每个部分的概览,帮助你组织和撰写论文。论文标题:基于STM32的高精度电子秤设计与实现摘要:简述电子秤设计的背景、目的、主要技术特点、实现的功能以及研究的重......
  • 基于STM32的环境质量监测系统
    基于STM32的环境质量监测系统是一个集成了微控制器技术、传感器技术、数据通信和人机交互界面的综合应用项目。以下是一个简要的论文提纲,旨在指导你如何撰写关于这一主题的研究或设计报告。**标题:**基于STM32的智能环境质量监测系统设计与实现**摘要:**简要介绍研究背景、系......
  • 基于STM32的环境检测温湿度大气参数上传阿里云的论文
    基于STM32的环境检测温湿度大气参数上传阿里云的论文可以从多个方面来展开,以下是一个论文的概要结构及其内容的建议:一、引言介绍环境检测在现代化生活中的重要性和应用场景。阐述STM32微控制器在环境检测系统中的优势。简述阿里云物联网平台的特点和其在环境检测数据管理中的......
  • STM32在不支持5V输入IO口输入5V电平带来的奇怪现象
    今天在使用stm32单片机的时候,发现了一个奇怪的现象,调试器经常识别不到单片机,给单片机重新上电后有时就正常,但重新下载又无法识别。刚开始以为是调试器坏了,于是更换了调试器,但没有换调试器的杜邦线,还是相同的问题,因此把调试器故障排除了。然后又尝试了降低SW频率、更换调试线,问......
  • CubeMX离线安装stm32f1固件包
    一.打开CubeMX软件点击Help选择Manageembededsoftwarepackages二、找到STM32F1版本最新的固件包,点击install 三、登录账号 四、等待下载完成五、下载完成......
  • Amazon Q Developer 实战:从新代码生成到遗留代码优化(上)
    本文将探索如何在VisualStudioCode这个开发者常用的一种集成编程环境(IDE)中,使用AmazonQDeveloper列出指定区域的AmazonS3存储桶的示例代码实现。我们将从在AmazonQDeveloperAgent的协助下,从生成新代码开始,到将生成的新代码与现有的低效“遗留”旧代码进行性能对比;......
  • 嵌入式Linux中的LED驱动控制(以野火STM32MP157开发板为例)
    在嵌入式Linux系统中,由于从硬件到软件都是自己定制的,所以很多时候需要对自己定义的设备编写驱动程序。本例就以野火STM32MP157开发板为例,讨论如何控制开发板上三个LED的亮灭。先来看一下LED部分的电路原理图,如下所示。从上图中可以看到,三个RGB颜色的二极管采用共阳接法,因此在......
  • stm32cubemx+cmake vscode开发
    stm32cubemx在2.17之后可以新建cmake工程文件,然后就可以在vscode中无痛编译单片机程序,可以再配合openocd等编译调试下载1.准备1.1stm32cubemx1.2vscode1.3arm-none-eabi-gcc2.cubemx生成cmake工程文件2.1利用__weak函数实现cubemx代码与用户代码分离2.2利用宏定义......
  • stm32 bootloader的app中断向量偏移设置,HAL库
    如何设置Hal库的中断向量偏移看前几篇的stm32f103c8t6HAL库更改中断向量表(app部分)-这一切足够了-博客园(cnblogs.com)我这里bootloader的APP开始地址就是0x08006000,中断向量偏移0x00006000设置完成之后编译mdk,将生成的bin文件使用ymodem写入0x08006000中这里设置一个IO......
  • stm32f103c8t6使用bootloader进行ymodem下载和app程序测试,部分总结(暂未测试中断向量偏
    bootloader程序部分(功能测试)print_boot_message();/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/uint8_tkey_get_state;while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/key_get_state=g......