这里要用到一定的模电知识。电容两端电压不能突变,电感两端电流不能突变。这里利用了电容的放电延时实现硬件消抖。按键按下会有抖动,波形有毛刺,使得高低电平显现不明显,而按键按下时,电容放电一下,马上又被充电,此时电容两端的电压不会突然变化,这个延时时间恰好可以达到消抖作用。

这里需要使用一个固件库函数:

/**
* @brief Reads the specified input port pin.
* @param GPIOx: where x can be (A..K) to select the GPIO peripheral for STM32F405xx/407xx and STM32F415xx/417xx devices
* x can be (A..I) to select the GPIO peripheral for STM32F42xxx/43xxx devices.
* x can be (A, B, C, D and H) to select the GPIO peripheral for STM32F401xx devices.
* @param GPIO_Pin: specifies the port bit to read.
* This parameter can be GPIO_Pin_x where x can be (0..15).
* @retval The input port pin value.
*/
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
uint8_t bitstatus = 0x00; /* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
{
bitstatus = (uint8_t)Bit_SET;
}
else
{
bitstatus = (uint8_t)Bit_RESET;
}
return bitstatus;
}

在第一次使用这个函数的时候,我没有理解到位,一看到定义bitstatus=0x00,就以为返回的是个八位端口的值,其实这个返回值只有0或者1两种结果。

/**
* @brief GPIO Bit SET and Bit RESET enumeration
*/
typedef enum
{
Bit_RESET = 0,
Bit_SET
}BitAction;

在这个枚举中,可以知道,读取IO的数据只可能是0或者1。

最新文章

  1. valuestack,stackContext,ActionContext.之间的关系以及如何存取数值的
  2. Ubuntu下编译第一个C程序的成功运行
  3. chrome浏览器遇到的异常
  4. C#下的Redis 学习
  5. BZOJ_1028_[JSOI2007]_麻将_(模拟+贪心)
  6. 安装Cygwin
  7. Java数据结构和算法(十)——二叉树
  8. C#处理JavaScript引擎
  9. Android 启动APP时黑屏白屏的解决方案
  10. python语法_字符串
  11. QQ聊天框变成方框口口口口的解决办法
  12. Loadrunner进行HTTPS协议性能测试
  13. Python相关机器学习‘武器库’
  14. Gym 101194E / UVALive 7901 - Ice Cream Tower - [数学+long double][2016 EC-Final Problem E]
  15. hadoop 分布式机群搭建
  16. redis 的一主二从三哨兵模式
  17. Windows Phone本地数据库(SQLCE):11、使用LINQ查询数据库(翻译) (转)
  18. Linux学习16-CentOS安装gitlab环境
  19. zabbix install
  20. 48 (OC)* 适配iPad和iPhone、以及横竖屏适配。

热门文章

  1. SPSS Clementine 数据挖掘入门3
  2. jquery使用jsonp进行跨域调用
  3. HDFS的常用操作
  4. 【Python】Django CSRF问题
  5. EJS快速入门
  6. systemctl使用
  7. SPOJ 8222 NSUBSTR(SAM)
  8. C#返回多个参数 ref及out
  9. POI按行读取word,并去掉属性标签内容:超链接
  10. unity3d GameCenter的使用