STM32(c语言基础)

1.硬件部分:按键,传感器

传感器模块:光敏电阻,热敏电阻,红外接收管

光敏电阻:光线越强,光敏电阻的阻值就越小;

热敏电阻:温度越高,热敏电阻的阻值越小;

红外接收管:红外光线越强,红外接收管的阻值越小;

注意:电阻的变化不容易直接被观察,通常将传感器元件和定值电阻串联,进行分压,从而得到模拟电压的输出!!!再通过电压比较器(运算放大器)进行二值化即可得到数字电压

(一般我们遇见一端接电路,一端接地,都可以考虑是不是滤波电容)

第三个:AO点电压变化,分压思想和上拉下拉思想

上拉下拉:当N1阻值为0,强下拉,AO电压会直接被拉到0V;N1阻值变大,下拉作用会减弱,中间引脚由于R1的上拉作用电压会升高;N1阻值无穷大,相当于断路,输出电压被拉到VCC(不计R1的阻值)

AO输出端:想象成放在屋子里的水平杆子,R1上拉电阻相当于有一个弹簧将杆子往上拉,N1下拉电阻相当于栓在地面的弹簧,将AO杆子向下拉;电阻阻值越小,弹簧拉力越强;

强上拉,强下拉;弱上拉,弱下拉:指弹簧力的大小(也就是电阻的阻值大小)

(压降!!!)

逐次逼近AD 转换器!!!

LM393就是电压比较器,两个电压比较器(运放)

IN+接AO,IN-接电位器(拧电位器,可改变阈值)进行比较,最后输出DO

注意:对于对射式红外传感器,N1就是红外接收管,会多一个点亮红外发射管的电路;(模拟电压是表示接收到的光强度(会避免自然红外光的干扰))此处的电位器是两个电阻进行分压,阈值一定

反射式红外传感器:向下发射红外光,接收反射光强,制作寻迹小车!!!

下图为开漏输出模式,在按下按键低电平,接通;松手时候引脚悬空,断开(需要引脚PA0里面再接一个弱上拉(上拉输入VDD接通),保证引脚的稳定性,阻值要大,防止对输入的影响)引脚悬空,此时是高电平。

下图,默认是弱上拉高电平模式;按下按键是强下来拉到GND,变为低电平,接通;

可以上拉输入或者浮空状态输入

PA0内部再弱上拉(上拉输入),此时上拉作用会强,再按下会强制拉到GND低电平,损耗较大

所以选择悬空模式,两个都不接通

二.c语言基础

右边是c语言stdint.h文件和ST对这些变量的重命名(typedef)

原因:左边名字比较长,而且int的位数(字节大小)根据操作系统的不同还有可能不一样,(int对于32位操作系统是4字节,64位操作系统是8字节),还有就是有时候名字和存储内容不一样,比如char关键字,是存储字符型数据,但是我们经常拿来存放整数而不是字符。

typedef:给变量类型换名字,重命名;即使用原来名字和此别名有一样效果

typedef  unsigned char uint8_t;

引用typedef:

uint8_t a;    // 等效于  unsigned char a;

宏定义和typedef的区别:1.宏定义不需要分号,typedef后面必须加分号;2.宏定义任何名字都可以换(一般将数字换成字符串进行替换,明显),typedef只能专门给变量类型换名字;宏定义改名范围更宽,typedef给变量类型命名更加安全,会检查变量类型是否正确。宏定义不会进行检查字符串名字;

数据类型:结构体,枚举,int,char等等

结构体:数据打包,不同数据类型变量的集合

关键字:struct

用途:数据打包,不同类型变量的集合

定义结构体变量:

struct

{

char x;

int y;

float z;

} StructName;     

结构体名字可以放在最后,或者关键字旁边

struct   StructName

{

char x;

int y;

float z;

};

因为结构体变量类型较长,所以通常用typedef更改变量类型名

引用结构体成员:     StructName.x = 'A';     StructName.y = 66;     StructName.z = 1.23;

pStructName->x = 'A';    //pStructName为结构体的地址  

 pStructName->y = 66;   

 pStructName->z = 1.23;

注意:链表中,存储的地址,就是下个节点的地址,和存储地址单元 是一个东西!!!!

关键字:enum

用途:定义一个取值受限制的整型变量,用于限制变量取值范围;

宏定义的集合

定义枚举变量:     enum{FALSE = 0, TRUE = 1} EnumName;     

因为枚举变量类型较长,所以通常用typedef更改变量类型名

引用枚举成员:     EnumName = FALSE;     EnumName = TRUE;

注意:枚举的值也可以赋值给别的变量;枚举只能赋值字符串,直接赋值会警告

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【全网首发】2024五一数学建模ABC题保奖思路(后续会更新)

一定要点击文末的卡片哦! 1)常见模型分类 机理分析类:来源于实际问题,需要了解一定的物理机理,转化为优化问题。 运筹优化类:旨在找到使某个目标函数取得最大或最小值的最优解,对于机理要求要求不高&…

Linux下安装snaphu

1、官网下载安装包 2、解压,移动文件夹到/usr/local/下 3、在/usr/local/下创建man,在man下创建man1文件夹 4、进入到snaphu的src文件夹里,执行sudo make,如果报错 在这个 Makefile 中,-arch x86_64 是 macOS 特定的…

三种滤波(EKF、UKF、CKF)的对比,含MATLAB源代码

使用MATLAB模拟三维的滤波,包含扩展卡尔曼滤波EKF、无迹卡尔曼滤波UKF、容积卡尔曼滤波CKF。 状态更新和观测更新均为非线性的,模拟一定强度的机动性,可用于卡尔曼滤波方法的对比学习,自己修改成需要的运动模型后,可以用于组合导航(GPS+DVL形式)。 运行结果 真值的三轴…

Docker容器---Harbor私有仓库部署与管理

一、搭建本地私有仓库 1、下载registry镜像 [rootlocalhost ~]#docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4a2: Pull complete e2ead8259a04: Pull comp…

移植 SquareLine 导出的 UI 源码到 HMI-Board

目录 准备工具创建 HMI 工程设计 UIUI 移植板级验证更多内容 HMI-Board 为 RT-Thread 联合瑞萨推出的高性价比图形评估套件,取代传统的 HMI 主控板 硬件,一套硬件即可实现 HMI IoT 控制 的全套能力。依托于瑞萨高性能芯片 RA6M3 及 RT-Thread 软件生态…

mysql数据库navicat数据同步时误删除部分数据

背景介绍 听说过删库跑路被抓的,今天就碰到升级服务器(Alibaba Cloud Linux ----> Ubuntu)原因是taos3.2不支持Alibaba Cloud Linux系统! 为了保险起见把现在这个数据库里的数据都备份一份,为了不耽误同事们继续开…

渐悟之程序员

目录 感谢互联网为什么选择这行?现在的现状未来的展望多说几句好好学习,好好工作,好好生活,好好活着,共勉! 就是一篇流水文,没什么质量,权当给各位看客打发时间 行路难,行…

Jenkins构建触发器-触发远程构建-构建后触发-定时构建-轮询SCM

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudso…

第12章 软件测试基础(第三部分)测试类型

七、测试类型(按工程阶段划分) 单集系确收 (一)单元测试 1、单元测试/模块测试 单元就是软件中最小单位(或模块)。可以是一个函数、一个过程、一个类。主要依据是模块的详细设计文档。价值在于尽早发现…

Linux安装软件没有权限 Permission denied

切换到root用户即可 另一个原因: 脚本没有可执行权限 chmod x 脚本名即可

google search API 获取

登录谷歌云启动服务 首先登录谷歌云Google Cloud: https://console.cloud.google.com/,登录后创建一个项目。 选择创建的项目,进入API库。搜索Google Search。 选择custom Search API并启用。 此外,有个非常具有类似的API-- Google Search …

口袋实验室--使用AD2高效调试IIC、UART、SPI等低速接口

目录 1. 简介 2. 调试过程 2.1 简要步骤 2.2 Si5338 寄存器配置流程 2.3 AD2的基本配置 2.4 检查Si5338状态 2.5 配置Si5338寄存器 2.6 保存Si5338寄存器 3. 总结 1. 简介 使用Digilent Analog Discovery 2进行调试不仅提升了工作效率,而且极大地简化了常…

[python趣味实战]----基于python代码实现浪漫爱心 დ

正文 01-效果演示 下图是代码运行之后的爱心显示结果: 下面的视频该爱心是动态效果,较为简洁,如果需要使用,可以进行完善,这里只是一个趣味实战,下面将对代码实现进行非常详细地描述: 浪漫爱心…

判断字符串由几个单词组成(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int world 0;int i 0;char c 0;char string[81] { 0 };int num 0;//提示用户&#xff…

深入探索 C++ 中 string 的用法:从基础到实践

C String 用法详解 C中的 std::string 是一个非常强大且灵活的类&#xff0c;用于处理字符串。std::string 类是C标准库中的一部分&#xff0c;它提供了丰富的成员函数来执行各种字符串操作&#xff0c;如连接、比较、查找、替换等。在本篇博客中&#xff0c;我们将深入探索 s…

redis核心数据结构——跳表项目设计与实现(跳表结构介绍,节点类设计,随机层级函数)

跳表结构介绍。跳表是redis等知名软件的核心数据结构&#xff0c;其实现的前提是有序链表&#xff0c;思想的本质是在原有一串存储数据的链表中&#xff0c;间隔地抽出一半元素作为上一级链表&#xff0c;并将抽提出的元素和原先的位置相关联&#xff0c;这样重复下去直到最上层…

【考研数学】张宇「25版」跟「24版」的差距大吗?

其实差别不大&#xff01;要是进度比较快可以不跟着25更新&#xff0c;先跟着24的网课跟就可以了&#xff01; 身边真的很多130-140的大佬都是跟着张宇从头到尾&#xff0c;张宇老师的习题册非常适合基础扎实&#xff0c;想冲刺高分的考研党 我是属于基础不太好的&#xff0c…

Windows下面源码安装PostgreSQL

目录 一、环境&#xff1a; 二、安装MSYS2 三、安装PG 四、初始化数据库 五、启停数据库 六、调试PG 平时我们在LINUX下&#xff0c;使用源码安装PG的比较多&#xff0c;但在WINDOWS下安装&#xff0c;一般是使用二机制安装包来安装&#xff0c;能否使用源码来安装呢&…

【进收藏夹吃灰系列】算法学习指南

文章目录 [toc]分治算法 个人主页&#xff1a;丷从心 系列专栏&#xff1a;进收藏夹吃灰系列 分治算法 博客标题博客url【分治算法】【Python实现】Hanoi塔问题https://blog.csdn.net/from__2024_04_11/article/details/138093461?spm1001.2014.3001.5502

搜索引擎的设计与实现参考论文(论文 + 源码)

【免费】搜索引擎的设计与实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89249705?spm1001.2014.3001.5501 搜索引擎的设计与实现 摘要&#xff1a; 我们处在一个大数据的时代&#xff0c;伴随着网络信息资源的庞大&#xff0c;人们越来越多地注重怎样才能…