一、传感器模块
1.其中AO为模拟信号输出,DO为数字信号输出,此外还需要额外的供电模块。DO输出是通过比较器实现的。
2.从左到右为光敏电阻传感器、热敏电阻传感器、对射式红外传感器、反射式红外传感器,以上传感器都是利用其接受的相应的信号越强,其电阻值越小来实现对应的参数监测。
3.DO口可以直接接一个IO口即可
二、按键模块
案件模块需要一定的消隐时间,防止单片机啊多次误触
按键和传感器的接法,按键一般使用下接方式。其中左边两种接法要求IO口为上拉输入模式,右边可以为浮空输入模式。
三、C语言输入类型
1.在STM32中使用stdint关键字进行参数类型的定义。
2.c语言的宏定义,可使得引脚定义中更加方便快捷
3.C语言typedef
4.C语言结构体,组合不同数据类型的数组
使用typedef给结构体命名
typedef struct
{
uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured.
This parameter can be any value of @ref GPIO_pins_define */
GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins.
This parameter can be a value of @ref GPIOSpeed_TypeDef */
GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins.
This parameter can be a value of @ref GPIOMode_TypeDef */
}GPIO_InitTypeDef;
5.C语言的枚举,也是一种变量类型,可用typedef改变名字
使用typedef可以给枚举命名:
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
6.强转可以在变量前面加上(类型名称)
四、IO口读取输入
1.uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);用于指定某一个端口,返回值为char型变量,用于读取确定端口。
2.uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);读取整个输入输出寄存器,只有一个参数用于指定具体外设,如GPIOA。
3.uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);用于读取输出数据寄存器的某一位,一般用于输出模式下,用来确定自己输出的具体值。
4.uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);读取整个输出寄存器。