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

【IAR工程】STM8S208RB基于ST标准库下按键检测

【IAR工程】STM8S208RB基于ST标准库下按键检测


  • 📍相关篇《【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例》
  • 🎈《【IAR工程】STM8S208RB基于ST标准库下EXTI外部中断》
  • 🔖基于ST STM8S/A标准外设库:STSW-STM8069,版本号:2.3.1
  • 📌STSW-STM8069官方资源下载地址:https://www.st.com/zh/embedded-software/stsw-stm8069.html
  • 🔧IAR编译器版本:IAR Assembler for STMicroelectronics STM8 3.11.1
  • 📌STM8S207/208RBT6最小系统板:https://oshwhub.com/perseverance51/stm8s207rbt6-kai-fa-ban

✨当然可以通过上面的相关示例篇,可以将按键检测功能放到能支持EXTI外部中断的引脚上来实现,可以减少主任务的资源占用,EXTI外部中断可以说是按键扫描功能的升级版本,只不过EXTI针对STM8S208RB来说只支持端口A、B、C、D、E端口上的引脚,其他型号的也参不多只要是引脚数64或以上的端口号都是如此。作为普通IO输入引脚就没有这么多限制了。本例作为基础例程部分。

🛠按键输入检测GPIO引脚配置

  • 🔖GPIO作为普通的输入模式配置有两种模式:
  GPIO_MODE_IN_FL_NO_IT      = (uint8_t)0x00,  /*!< Input floating, no external interrupt */GPIO_MODE_IN_PU_NO_IT      = (uint8_t)0x40,  /*!< Input pull-up, no external interrupt */
  1. 浮空输入
  2. 带上拉输入

📑具体引脚配置函数

#define KEY_GPIO_PORT  (GPIO_TypeDef *)(GPIOG)
#define KEY_GPIO_PINS  (GPIO_PIN_0 | GPIO_PIN_1)#define KEY1 	GPIO_ReadInputPin(KEY_GPIO_PORT,GPIO_PIN_0)
#define KEY2 	GPIO_ReadInputPin(KEY_GPIO_PORT,GPIO_PIN_1)void KEY_Init( void )
{//设置PG0为不含中断带上拉电阻输入
//   	GPIO_Init(GPIOG , GPIO_PIN_0 , GPIO_MODE_IN_PU_NO_IT);//设置PG1为不含中断带上拉电阻输入
//   	GPIO_Init(GPIOG , GPIO_PIN_1 , GPIO_MODE_IN_PU_NO_IT);GPIO_Init( KEY_GPIO_PORT, ( GPIO_Pin_TypeDef )KEY_GPIO_PINS, GPIO_MODE_OUT_PP_HIGH_FAST ); //同上
}

📝主程序代码

/**************************************************************************************
实验现象:按下K1键,控制LED1指示灯亮灭,按下K2键,控制LED2指示灯亮灭接线说明:	1,STM8S单片机-->LEDPC7-->LED1PC6-->LED22,STM8S单片机-->独立按键模块PG0-->K1PG1-->K2注意事项:1、点击“Download active application”按钮,程序下载完成后,即可运行程序。***************************************************************************************/#include "stm8s.h"      /*  添加库函数头文件 */
#include "delay.h"
#include "led.h"
#include "key.h"/* 主函数 */
int main( void )
{//内部时钟为1分频 = 16MhzCLK_SYSCLKConfig( CLK_PRESCALER_HSIDIV1 );LED_Init();KEY_Init();while( 1 ){if( KEY1 == 0 ){//检测到按键PG0被按下delay_ms( 20 );//消抖while( KEY1 == 0 );LED1_TOGGLE;}if( KEY2 == 0 ){//检测到按键PG1被按下delay_ms( 20 );//消抖while( KEY2 == 0 );LED2_TOGGLE;}}
}
//是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数
void assert_failed( u8* file, u32 line )
{while ( 1 ){}
}

📚工程源码

  • 🔖IAR对中文路径不友好,不要将工程解压在带有中文字符路径的文件夹内直接打开工程编译,这样会导致IAR内部检索文件路径将消耗大量CPU资源。
链接: https://pan.baidu.com/s/1m5qnnBZ0fba-Yrus0oTwJQ
提取码: txjn

相关文章:

【IAR工程】STM8S208RB基于ST标准库下按键检测

【IAR工程】STM8S208RB基于ST标准库下按键检测&#x1f4cd;相关篇《【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例》&#x1f388;《【IAR工程】STM8S208RB基于ST标准库下EXTI外部中断》&#x1f516;基于ST STM8S/A标准外设库:STSW-STM8069,版本号&#xff1a;2.3.1&…...

【5】深度学习之Pytorch——如何使用张量处理文本数据集(语料库数据集)

在计算机领域&#xff0c;不断崛起的两个领域&#xff0c;一个是CV一个是NLP&#xff0c;下面我们可以探索一下深度学习在NLP的应用和特点。 深度学习在自然语言处理&#xff08;NLP&#xff09;领域有广泛的应用。以下是一些主要的应用和特点&#xff1a; 语音识别&#xff1…...

《Spring系列》第5章 refresh()

前言 Spring框架中最重要的肯定是IOC容器&#xff0c;那么其如何进行初始化&#xff0c;就是通过refresh()这个方法&#xff0c;无论是单独使用Spring框架&#xff0c;还是SpringBoot&#xff0c;最终都会通过执行到这个方法&#xff0c;那么下面会介绍一下这个方法 一、IOC容…...

ThreeJS-缩放、旋转(四)

代码&#xff1a; <template> <div id"three_div"> </div> </template> <script> import * as THREE from "three"; import {OrbitControls } from three/examples/jsm/controls/OrbitControls export default { name: &quo…...

数据更新 | CnOpenData法拍房数据

法拍房数据 一、数据简介 法拍房&#xff0c;即“法院拍卖房产”&#xff0c;是被法院强制执行拍卖的房屋 。当债务人&#xff08;业主&#xff09;无力履行借款合约或无法清偿债务时&#xff0c;而被债权人经司法程序向法院申请强制执行&#xff0c;将债务人名下房屋拍卖&…...

【Spring从成神到升仙系列 五】从根上剖析 Spring 循环依赖

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙…...

设计模式之代理模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、代理模式是什么&#xff1f; 代理模式是一种结构型的软件设计模式&#xff0c;在不改变原代码前提下&#xff0c;提供一个代理…...

c++11 标准模板(STL)(std::unordered_multimap)(三)

定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…...

Linux进程控制-2

紧接着上篇博客出发&#xff0c;我们接着来讲述Linux中进程控制的内容。 目录 1.等待 1.1具体操作 1.等待 进程等待主要的作用在于&#xff1a;父进程创建子进程之后&#xff0c;等待子进程退出&#xff0c;获取子进程的退出码&#xff0c;释放子进程的资源&#xff0c;避…...

快速排序算法

一&#xff1a;快速排序思想 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数&#xff08;不要被这个名词吓到了&#xff0c;就是一个用来参照的数&#xff0c;待会你就知道它用来做啥的了&#xff09;。为了方便&#xff…...

中华好诗词大学季第二季(四)

第七期 1,二十四友一朝尽&#xff0c;爱妾坠楼何足言出自许浑的《金谷园》&#xff0c;“爱妾”指的是谁 2,李白在《九月十日即事》借菊花表达自己的惋惜之情&#xff0c;请问九月十日是什么节日 A 后登高 B 菊花节 C 小重阳 3,贾宝玉在大观园里面题了“曲径通幽”&#xf…...

分布式系统容灾部署方案

本文主要以OceanBase部署来说明分布式系统容灾部署方案 分布式系统提供持续可用的服务尤为重要。 好的分布式系统根据需求提供不同等级的的高可用与容灾级别。 而在分布式系统中&#xff0c;数据库系统又是最核心最关键的系统。 我们以数据库分布式系统为主&#xff0c;考虑…...

Python 爬虫性能相关总结

这里我们通过请求网页例子来一步步理解爬虫性能 当我们有一个列表存放了一些url需要我们获取相关数据&#xff0c;我们首先想到的是循环 简单的循环串行 这一种方法相对来说是最慢的&#xff0c;因为一个一个循环&#xff0c;耗时是最长的&#xff0c;是所有的时间总和 代码…...

Baumer工业相机堡盟工业相机如何设置网口的IP地址(工业相机连接的网口设置IP地址步骤)

Baumer工业相机堡盟工业相机如何设置网口的IP地址&#xff08;工业相机连接的网口设置IP地址步骤&#xff09;Baumer工业相机Baumer工业相机设置网络端口IP地址匹配设置网络端口IP地址和工业相机IP地址匹配第一次打开CameraExplorer软件确认问题为IP地址不匹配问题打开网络连接…...

Android MediaCodec设置H264 Profile到High

H264 High Profile压缩率高&#xff0c;能降低码率&#xff0c;这里记录下MediaCodec Profile设置到High遇到的一些问题。 Android 4.1 就引入了MediaCodecInfo.CodecProfileLevel类&#xff0c;下面截取H264(AVC)的Profile和Level定义: /** Copyright (C) 2012 The Android O…...

QT之QSysInfo(查看电脑信息)

文章目录前言一、API使用总结前言 QSysInfo是Qt中用于获取有关运行应用程序的系统信息的类。 我们可以获取以下信息&#xff1a; 返回系统产品类型&#xff0c;如ios&#xff0c;windows&#xff0c;Linux等 返回当前系统的产品版本。 返回当前系统的内核类型。 返回当前系统的…...

中国塑料编织袋产业竞争状况及投资前景预测报告2023-2029年

中国塑料编织袋产业竞争状况及投资前景预测报告2023-2029年 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 《报告编号》: BG451639 《出版时间》: 2023年4月 《出版机构》: 中智正业研究院 免费售后 服务一年&#xff0c;具体内容及订购流程欢迎咨询客服人员 内容简介&…...

从头用脚分析FFmpeg源码 - av_read_frame

av_read_frame作用 /*** Return the next frame of a stream.* This function returns what is stored in the file, and does not validate* that what is there are valid frames for the decoder. It will split what is* stored in the file into frames and return one f…...

第17章_触发器

第17章_触发器 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff0c;目前在某公…...

3956. 截断数组

3956. 截断数组 - AcWing题库 3956. 截断数组 【题目描述】 给定一个长度为 nn 的数组 a1,a2,…,ana1,a2,…,an。 现在&#xff0c;要将该数组从中间截断&#xff0c;得到三个非空子数组。 要求&#xff0c;三个子数组内各元素之和都相等。 请问&#xff0c;共有多少种不同…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

[特殊字符] 手撸 Redis 互斥锁那些坑

&#x1f4d6; 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作&#xff0c;想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁&#xff0c;也顺便跟 Redisson 的 RLock 机制对比了下&#xff0c;记录一波&#xff0c;别踩我踩过…...