中国移动物联网麒麟版 mini 开关量输入检测

用了一阵麒麟版,我觉得很有意思。
我用麒麟版实验了温湿度例程,流水灯例程。
但是找了半天没有找到开关量输入检测的。而我需要检测外置传感器信号。
我有一个红外线避障传感器和一个人体热释传感器,都是满足条件输出高电平的,然后单片机就需要在检测到高电平后,执行某些动作(程序)。
我知道开发板是用的 stm32 芯片,所以我在网上找了一下相关 lib(也就是库),看看能不能直接调用。还真找到现成的了。
这是我找到的一些资料,在这里做一下整理。

GPIO 输入

当 GPIO 连接了外部传感器,而传感器的信号是开关量的时候,GPIO 可能需要去轮询输入的状态是高是低,这时候 GPIO 就需要当做输入来用。
按键的动作可以用来模拟传感器的动作,按键通过上拉电阻接到高电平。当按键按下时,会使相应的 GPIO 管脚变成低电平。配置这些 GPIO 引脚为上拉模式,在没有收到信号的情况下,保持这些 GPIO 口为高电平。
GPIO 的库函数也为我们提供了读取某指定端口管脚的输入– GPIO_ReadInputDataBit 正是这样一个函数

函数名 GPIO_ReadInputDataBit
函数原形 u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
功能描述 读取指定端口管脚的输入
输入参数 1 GPIOx :x 可以是 A,B ,C ,D 或者 E,来选择 GPIO 外设
输入参数 2 GPIO_Pin:待读取的端口位
返回值 输入端口管脚值,高或者低
u8 ReadValue;
ReadValue = GPIO_ReadInputDataBit(GPIOx, GPIO_Pin_x);
返回值 ReadValue 反应了 GPIO 口的高低状态。

上面的就是我找的资料了,非常实用。然后我又找了一些现成的例程,修改了一下就可以直接上手使用。

开关量检测程序

首先要初始化一下 IO 口,初始化为输入模式

1
2
3
4
5
6
7
8
9
10
11
12
/*
* @brief 初始化按键
* @param 无
* @retval 无
*/
void Key_GPIO_Config(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 选择按键引脚 PA0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; // 设置引脚模式为浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化按键
}

然后在 main() 中直接使用函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 定义控制 LED 的引脚 
#define LED_TOGGLE LED_Control(GPIOB, GPIO_Pin_0)
// 使用带参宏输出 LED 灯的另一种状态
#define LED_Control(GPIOx, GPIO_Pin) {GPIOx->ODR ^= GPIO_Pin;}

int main(void) {

uint8_t SaveStatus = 0;
uint8_t State;

LED_GPIO_Config();
Key_GPIO_Config();

while (1)
{
State = Key_DETECTOR(GPIOA, GPIO_Pin_0);
if (SaveStatus != State)
{
if (State == 1)
{
LED_TOGGLE;
}
SaveStatus = State;
}
}
}

笔记整理

我浏览了很多的网站,上面的部分内容就来自这些网站,谢谢这几位朋友给我带来的帮助。
然后我整理了一下这些网站,如果大家不是很清楚,可以进来更多的了解。

http://blog.csdn.net/kevinhg/article/details/17490273
http://blog.csdn.net/wjjontheway/article/details/9302189
http://blog.csdn.net/u010657219/article/details/41810771
http://blog.csdn.net/persistvonyao/article/details/38542847
http://blog.csdn.net/huangchijun11/article/details/53321566
https://zhuanlan.zhihu.com/p/23662301?refer=stm32

坚持原创技术分享,您的支持将鼓励我继续创作!