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;

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

相关推荐
scan12 小时前
单片机串口接收状态机STM32
stm32·单片机·串口·51·串口接收
DARLING Zero two♡2 小时前
关于我、重生到500年前凭借C语言改变世界科技vlog.16——万字详解指针概念及技巧
c语言·开发语言·科技
Qingniu012 小时前
【青牛科技】应用方案 | RTC实时时钟芯片D8563和D1302
科技·单片机·嵌入式硬件·实时音视频·安防·工控·储能
QAQ小菜鸟3 小时前
一、初识C语言(1)
c语言
何曾参静谧3 小时前
「C/C++」C/C++ 之 变量作用域详解
c语言·开发语言·c++
互联网打工人no13 小时前
每日一题——第一百二十一题
c语言
Mortal_hhh4 小时前
VScode的C/C++点击转到定义,不是跳转定义而是跳转声明怎么办?(内附详细做法)
ide·vscode·stm32·编辑器
深圳市青牛科技实业有限公司4 小时前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
朱一头zcy5 小时前
C语言复习第9章 字符串/字符/内存函数
c语言
此生只爱蛋5 小时前
【手撕排序2】快速排序
c语言·c++·算法·排序算法