STM32学习笔记【江科协】【3-3】GPIO输入

按键简介

按键:常见的输入设备,按下导通,松手断开
按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动
需要过滤抖动,做法是加一段延时度过这段抖动(delay函数)


 传感器模块简介

传感器模块:传感器元件(光敏电阻 / 热敏电阻 / 红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出 (*电阻的变化不容易直接观察) ,再通过电压比较器进行二值化即可得到数字电压输出
光敏、热敏、对射式红外、反射式红外

 传感器模块基本电路

对不同传感器来说,N1对应不同,热敏传感器来说N1对应热敏电阻,对红外传感器来说N1就是红外接收管(当然会对应多一个点亮红外发射管电路)

 

 

可以用来做寻迹小车

 硬件电路

必须要求PA0是上拉输入(引脚悬空为高电平),否则会出现引脚电压不确定的错误现象,这种情况下,按键按下,引脚为低电平,松手,引脚为高电平
接了一个上拉电阻,这种状态下,引脚不会出现悬空的状态,引脚可以配置成上拉输入(高电平更稳定)(引脚被拉到低时损耗也会更大)或浮空输入

 上接的方式(一般采用这个)(和LED接法类似,是电路设计的习惯和规范)

必须配置成下拉输入(一般单片机可能没这个模式),按键按下时,引脚为高电平,松手时,引脚回到默认值低电平
外接了一个下拉电阻,引脚需配置成 下拉输入或者浮空输入模式

 下接的方式

总结:上接,按键按下为低电平,松手为高电平;下接,按键按下为高电平,松手为低电平

 


C语言的部分内容 

 C语言数据类型

 注意事项:51单片机中,int占16位,STM32中,int占32位,如果要用16位的数据,需要用short来表示

 

 综上,为了解决上述问题,C语言和ST给这些变量换了个名字

 

 

 

*
ST关键字中u8

从前面*可以看出,新版库函数不使用u8之类的ST字符


C语言宏定义
关键字: #define
用途:用一个字符串代替一个数字,便于理解,防止出错;
            提取程序中经常出现的参数,便于快速修改 (比如用一个字符串代替GPIO_0,就用不着一个个修改)
定义宏定义:  #define ABC 12345    (这里的意思时用ABC代替12345)
引用宏定义:  int a = ABC;  //等效于int a = 12345;

 


C语言typdef
关键字: typedef
用途:将一个比较长的变量类型名换个名字,便于使用
定义 typedef   typedef unsigned char uint8_t ;        (新定义的名字在左边,必须加;,只可以变量类型更换名字)
引用 typedef :  uint8_t a;  //等效于 unsigned char a; 

C语言结构体

关键字:struct

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

定义结构体变量: 
 

struct{char x;

       int y;

       float z;

} StructName;

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

引用结构体成员:

  StructName.x = 'A';

  StructName.y = 66;

  StructName.z = 1.23;

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

     pStructName->y = 66;

     pStructName->z = 1.23;

 

 

 


C语言枚举 

关键字:enum

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

定义枚举变量:

  enum{
        FALSE = 0, 
        TRUE = 1
} EnumName;

(如果数值是顺序的值,后面的数可以省掉)

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

引用枚举成员:

  EnumName = FALSE;

  EnumName = TRUE;

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值