江科大stm32学习笔记6——GPIO输入准备

一、按键消抖

由于按键内部使用的是机械式弹簧片,所以在按下和松开时会产生5~10ms的抖动,需要通过代码来进行消抖。

二、滤波电容

在电路中,如果见到一端接在电路中,一端接地的电容,则可以考虑它的作用为滤波电容,作用为保证电路的稳定,在分析电路时可以隐去。

三、sdint关键字

sdint关键字是用typedef定义的关键字,用来代替原C语言的关键字,这里只是换个叫法而已,含义其实都相同。

  • int8_t 对应 char
  • uint8_t 对应 unsigned char
  • int16_t 对应 short
  • uint16_t 对应 unsigned short
  • int32_t 对应 int
  • uint32_t 对应 unsigned int
  • int64_t 对应 long long
  • uint64_t 对应 unsigned long long

四、typedef 

将一个变量类型换个名字,与C语言宏定义类似

typedef unsigned char uint8_t;    //注意分号不能丢
uint8_t a = 0;    //等价于unsigned char a = 0;

 五、C语言结构体

数据打包,不同类型数据的组合。int a[10]是10个整型数的集合,但如果我们想要的集合既包括整型又包括其他类型数据,可以使用结构体使它们进行集合。

//定义
struct{char x;int y;float z;}c;
//引用
c.x = 'A';
c.y = 66;
c.z = 1.23;

我们也可以将结构体与typedef混合使用以降低代码复杂程度:

typedef struct{
    char x;
    int y;
    float z;
}StructName_t

int main()
{
    StructName_t c;
    c.x = 'A';
    c.y = 66;
    c.z = 1.23;
    
    return 0;
}

六、C语言枚举

定义一个取值受限的整形变量,用于限制变量的取值范围。

enum{MONDAY = 1,TUESDAY,WEDNESDAY}Week_t
Week_t = MONDAY;
week = MONDAY;    //week赋值只能是“MONDAY、TUESDAY、WEDNESDAY”三个中的一个

这里,如果赋值的是别的其他东西,那么编译器会报警告。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫实战——获取酷我音乐数据

嗨喽,大家好呀~这里是爱看美女的茜茜呐 开发环境: 版 本: python 3.8 编辑器:pycharm 2022.3.2 模块使用: requests >>> pip install requests 如何安装python第三方模块: win R 输入 cmd 点击确定, 输入安装命令 pip install…

职业身份来认同自己对吗?

人们常常以自己的职业身份来认同自己。这是一个巨大的错误。 你的职业身份只是一个外壳;它不能定义你是一个人。你可以期待你的职业媒介会随着时间而改变,但是你传达的信息会应该更加稳定。你的信息就是回答你是谁,你应该通过三十几年的工作…

linux中常用的命令

一:tree命令 (码字不易,关注一下吧,w~~w) 以树状形式查看指定目录内容。 tree --树状显示当前目录下的文件信息。 tree 目录 --树状显示指定目录下的文件信息。 注意: tree只能查看目录内容,不能…

【Axure高保真原型】随机抽取案例

今天和大家分享随机抽取点餐案例的原型模板,包括2种效果,第一种是手动暂停效果,点击开始后随机抽取食物,手动点击暂停按钮后停止;第二种是自动暂停效果,点击开始按钮后随机抽取食物,并且开始倒计…

webassembly003 whisper.cpp的python绑定实现+Cython+Setuptools的GUI程序

CODE python端的绑定和本文一样,还需要将cdef char* LANGUAGE b’en’改为中文zh(也可以在函数中配置一个参数修改这个值)。ps:本来想尝试cdef whisper_context* whisper_init_from_file_with_params_no_state(char*, whisper_full_params)…

Gitlab7.14 中文版安装教程

Gitlab7.14 中文版安装教程 注: 本教程由羞涩梦整理同步发布,本人技术分享站点:blog.hukanfa.com转发本文请备注原文链接,本文内容整理日期:2024-01-28csdn 博客名称:五维空间-影子,欢迎关注 …

部署LNMP、Nginx+FastCGI、Nginx地址重写语法,地址重写应用案例

1 案例1:部署LNMP环境 1.1 问题 安装部署LNMP环境实现动态网站解析 静态网站 在不同环境下访问,网站内容不会变化 动态网站 在不同环境下访问,网站内容有可能发生变化 安装部署Nginx、MariaDB、PHP、PHP-FPM;启动Nginx、Mari…

STM32标准库——(6)TIM定时中断

1.TIM简介 TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时不仅具备基本的定时中断功能&#xff0…

LVGL部件

一.标签部件 1.如何创建标签部件以及设置文本 ![2024-01-28T09:54:08.png][3] void my_lvgl(void) {lv_obj_t *lablelv_label_create(lv_scr_act()); //创建一个标签lv_label_set_text(lable,"hello"); //普通更改文字lv_label_set_text_fmt(lab…

Zerosync:构建基于STARK的Bitcoin证明系统

1. 引言 前序博客: BitcoinSTARK: ZeroSync & Khepri Robin Linus、Tino Steffens、Lukas George 等人成立了一个名为 ZeroSync 协会(ZeroSync Association)的瑞士非营利组织,该组织将牵头开发比特币证明系统。ZeroSync 于…

shell

目录 一.运行方式 二.编程习惯 三.变量 3.1变量的命名 3.3普通变量(局部变量) 3.4特殊变量 3.5变量子串 3.6变量赋值 四.运算方式 4.1$(( )) 4.2let 4.3expr 4.4bc(小数运算) 4.5$[ ] 4.6awk 4.7总结运算方式 五.条件测试语句 5.1文件 5.2条件测试表达式…

js实现动漫拼图1.0版

文章目录 1 实现效果视频2 功能实现思路3代码实现 1 实现效果视频 拼图1.0 2 功能实现思路 布局忽略(小白学前端,不献丑了) 左侧拼图格 左侧4*4的拼图小格子 利用表格实现,规划好td的大小,给每个格子加上背景图片&…

计算方法实验2:利用二分法及不动点迭代求解非线性方程

一、问题描述 利用二分法及不动点迭代求解非线性方程。 二、实验目的 掌握二分法及不动点迭代的算法原理;能分析两种方法的收敛性;能熟练编写代码实现利用二分法及不动点迭代来求解非线性方程。 三、实验内容及要求 二分法 (1) 编写代码计算下列数字…

类和对象 第五部分第四小节:赋值运算符重载

C编译器至少给一个类添加4个函数 1.默认构造函数无参,函数体为空 2.默认析构函数无参,函数体为空 3.默认拷贝沟早函数,对属性进行值拷贝 4.赋值运算符“operator”,对属性进行值拷贝 如果类中有属性指向堆区,做赋值操作…

上推加载更多组件

本组件使用的是TaroReact 实现的 ,具体代码如下 一共分为tsx和less文件 //index.tsx /** RefreshLoading* description 上推加载更多组件* param loading boolean* param style* returns*/import { View } from "tarojs/components"; import React, { FC…

[ESP32 IDF] wifi 的应用

目录 背景知识 wifi的基本连接使用 WiFi篇—— WiFi两种模式文章中二、WiFi 的启动(STA 及 AP 模式) 输出现象 通过websocket控制LED 实践验证 实验现象 背景知识 WIFI是ESP32非常重要的一个功能,想要使用一下IDF的API实现将ESP32连…

深度学习核心技术与实践之深度学习研究篇

非书中全部内容,只是写了些自认为有收获的部分。 Batch Normalization 向前传播 (1)三个主要任务:计算出每批训练数据的统计量。 对数据进行标准化 对标…

vue 使用 v-viewer 用于图片浏览的Vue组件,支持旋转、缩放、翻转等操作,基于viewer.js。

作者连接 npm: npm install v-viewerlegacy viewerjs main.js 引入: // 引入Viewer插件 import VueViewer, { directive as viewerDirective } from v-viewer; // 引入Viewer插件的图片预览器的样式 import viewerjs/dist/viewer.css; // 使用Viewer图片…

最新Unity DOTS Instancing合批:如何针对单个渲染实体修改材质参数

最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画,我们是将角色的所有动画数据Baker到一个纹理里面,通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点,材质参数AnimTime记录当前过去的动画时间。但是在做大…

RabbitMQ“延时队列“

1.RabbitMQ"延时队列" 延迟队列存储的对象是对应的延迟消息,所谓“延迟消息”是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费 注意RabbitMQ并没有延时队列慨念,…