用了一阵麒麟版,我觉得很有意思。
我用麒麟版实验了温湿度例程,流水灯例程。
但是找了半天没有找到开关量输入检测的。而我需要检测外置传感器信号。
我有一个红外线避障传感器和一个人体热释传感器,都是满足条件输出高电平的,然后单片机就需要在检测到高电平后,执行某些动作(程序)。
我知道开发板是用的 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 | /* |
然后在 main()中直接使用函数
1 | // 定义控制LED的引脚 |
笔记整理
我浏览了很多的网站,上面的部分内容就来自这些网站,谢谢这几位朋友给我带来的帮助。
然后我整理了一下这些网站,如果大家不是很清楚,可以进来更多的了解。
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