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;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值