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;

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

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

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

相关文章

Vitis HLS 学习笔记--AXI4 主接口

目录 1. 简介 2. 认识MAXI 3. MAXI突发操作 3.1 全局/本地存储器 3.2 MAXI优势与特点 3.3 查看MAXI报告 3.3.1 HW Interfaces 3.3.2 M_AXI Burst Information 3.4 MAXI 资源消耗 4. 理解 Volatile 4.1 标准C/C中的 volatile 4.2 HLS 中的 volatile 5. 总结 1. 简介…

Blog图床

img avatar Audrey.webp icon.png personal.webp

labview强制转换的一个坑

32位整形强制转换成枚举的结果如何? 你以为的结果是 实际上的结果是 仔细看,枚举的数据类型是U16,"1"的数据类型是U32,所以转换产生了不可预期的结果。所以使用强制转换时一定要保证两个数据类型一致,否则…

深入理解多层感知机MLP

1. 基础理论 神经网络基础: 目标:了解神经网络的结构,包括神经元、权重、偏置和激活函数。 神经网络是由多个层次的神经元组成的网络,它模拟了人脑处理信息的方式。每个神经元可以接收输入、处理输入并生成输出。这一过程涉及到…

【学习AI-相关路程-工具使用-NVIDIA SDK MANAGER==NVIDIA-jetson刷机工具安装使用 】

【学习AI-相关路程-工具使用-NVIDIA SDK manager-NVIDIA-jetson刷机工具安装使用 】 1、前言2、环境配置3、知识点了解(1)jetson 系列硬件了解(2)以下大致罗列jetson系列1. Jetson Nano2. Jetson TX23. Jetson Xavier NX4. Jetson…

Hi3519AV100 处理器⾼速全局快⻔相机

⾼速全局快⻔相机采⽤ 1英⼨全局快⻔ Sensor,⽀持 H.264/H.265 编码,8 百万 分辨率模式下最⾼帧率可达 50 帧/秒,1080P 模式下最⾼帧率可达 120 帧/秒。主控采⽤ Hi3519AV100 处理器,集成 2 Tops AI 算⼒ NPU ,⽀持⼤…

华为5700配置

恢复出厂设置,清空配置 1、更改名字 system-view sysname tp-10-50-01-04 2、配置管理接口 int vlan 1 ip add 10.50.1.4 255.255.254.0 quit 2、链路汇聚 interface eth-trunk 1 mode lacp quit 3、绑定端口 interface eth-trunk 1 trunkport gigabitethernet …

制作一个 rpm 软件包

首发日期 2024-04-30, 以下为原文内容: 本文以 ibrus (艾刷, 胖喵拼音 ibus 接口模块) 为例, 介绍 rpm 软件包的制作过程. 相关文章: 《发布 AUR 软件包 (ArchLinux)》 https://blog.csdn.net/secext2022/article/details/136803790《多种双拼方案的实现》 https://blog.csdn.…

Redisson分布式锁,重试锁和锁续命的原理

RedissonLock 锁重试原理 tryLock有三个三个参数,第一个是等待时间,第二个是锁失效后自动释放的时间,不填默认为-1,第三个是时间单位; 当设置了第一个参数,那这个锁就成了可重试锁;获取锁失败后&#xff0c…

人工智能|深度学习——多模态条件机制 Cross Attention 原理及实现

一、引入 虽然之前写过 Attention 的文章,但现在回头看之前写的一些文章,感觉都好啰嗦,正好下一篇要写的 Stable Diffusion 中有 cross-attention,索性就再单拎出来简单说一下 Attention 吧,那么这篇文章的作用有两个&…

图搜索算法详解与示例代码

在计算机科学领域,图搜索算法是一类用于在图数据结构中查找特定节点或路径的算法。图搜索算法在许多领域都有着广泛的应用,包括网络路由、社交网络分析、游戏开发等。本文将详细介绍几种常见的图搜索算法,包括深度优先搜索(DFS&am…

大数据技术就业和发展前景怎么样

大数据技术的就业和发展前景极为乐观,具有行业需求旺盛、就业多样性、可持续发展潜力等特点, 上大学网 (www.sdaxue.com)整理出了大数据技术的就业和发展前景以下几个关键趋势,供大家参考! 行业需求旺盛&…

链表例题(分割链表)

链接: . - 力扣(LeetCode) 题目描述: 即将小于特定值的节点放在前面,大于特定值的节点接在后面 思路: 我们可以创建两个链表分别存放大于的值和小于的值。5个变量(记录链表当前位置的指针st…

【开发技巧 | 第一篇】Typora快捷键方式给字体添加颜色

文章目录 1.Typora快捷键方式给字体添加颜色1.1下载并安装AutoHotkey1.2新建ahk脚本文件1.3运行ahk脚本文件1.4小结 1.Typora快捷键方式给字体添加颜色 1.1下载并安装AutoHotkey 点击下载: https://autohotkey.com/download/ahk-install.exe下载安装包,执行安装&a…

前端开发攻略---介绍HTML中的<dialog>标签,浏览器的原生弹框。

1、演示 2、介绍 <dialog> 标签用于定义对话框&#xff0c;即一个独立的窗口&#xff0c;通常用来显示对话框、提示框、确认框等弹出式内容。在对话框中&#xff0c;可以包含文本、表单元素、按钮等内容&#xff0c;用户可以和这些内容进行交互。 3、兼容性 4、示例代码 …

02 spring-boot+mybatis+elementui 的登录,文件上传,增删改查的入门级项目

前言 主要是来自于 朋友的需求 项目概况 就是一个 学生信息的增删改查 然后 具体到业务这边 使用 mybatis xml 来配置的增删改查 后端这边 springboot mybatis mysql fastjson hutool 的一个基础的增删改查的学习项目, 简单容易上手 前端这边 node14 vue element…

ZABAPGIT问题,导入github上的程序包时报 DBSQL_DUPLICATE_KEY_ERROR

跟踪程序发现在94050行 INSERT seocompotx FROM TABLE it_descriptions 报的错 刚开始&#xff0c;不想着改动他&#xff0c;把seocompotx 表的数据做下指定清楚&#xff0c;但是5次清楚后&#xff0c;果断注释掉 改成 MODIFY seocompotx FROM TABLE it_descriptions。 在用…

算法训练营第十天 | LeetCode 232 用栈实现队列、LeetCode 225 用队列实现栈

栈的实现有顺序表和链式表两种&#xff0c;也就是数组和链表实现。 其中抽象栈类的私有成员函数有operator的重载函数和stack的构造函数&#xff0c;为了保护栈的构造和拷贝被保护。公有成员函数有Stack()&#xff0c;~Stack()&#xff0c;clear()&#xff0c;push()&#xff…

解决Redis的键值前出现类似\xAC\xED\x00\x05t\x00*这样的字符序列

文章目录 1.问题2.解决方法3.StringRedisTemplate和RedisTemplate的区别 1.问题 在使用RedisTemplate对Redis进行操作时,发现Reids键值对前有\xAC\xED\x00\x05t\x00*这样的字符序列 如图所示: 虽说不影响使用,但是听影响观感的 2.解决方法 查找了很多方法,可以指定RedisTem…

数据结构实验--实验02 栈的应用(数制转换及回文判断)

一、实验内容 二、算法实现 1、用栈的特性实现进转换的思路&#xff1a;参考手算求进制转换的思路——除r取余法&#xff0c;这里的r表示基数&#xff0c;8进制的基数就是8&#xff0c;那么将十进制数转换成8进制数手算的方法就是除8取余法&#xff0c;具体手算方法如图&#…