当前位置: 首页 > article >正文

【STM8】STM8固件库的坑(GPIO_ReadInputDataBit)

1. 问题

读取IO口输入,返回值有可能是0 或 1以外的值。问题出在GPIO_ReadInputDataBit()这个函数。

BitStatus GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
  return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));
}

typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus, BitAction;

2. 解决

2.1 判断0

if(0 == GPIO_ReadInputDataBit(...))
{
}
else
{
}

2.2 修改固件库

BitStatus GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)
{
  if(0 == (GPIOx->IDR & (uint8_t)GPIO_Pin));
  	return RESET;
  else
  	return SET;
}

http://www.kler.cn/a/303634.html

相关文章:

  • 【知识科普】微内核架构与宏内核架构
  • PCA 原理推导
  • 文献阅读 | Nature Communications:使用自适应图注意自动编码器从空间解析的转录组学中解读空间域
  • Java 类型转换(Type Casting)
  • Vue 组件通信及进阶语法
  • 【LeetCode】每日一题 2024_11_14 统计好节点的数目(图/树的 DFS)
  • 如何编译OpenHarmony SDK API
  • ‘“node“‘ �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���
  • 体育场座位【python实现】
  • 谷歌-BERT-“bert-base-chinese ”
  • 网络运维故障处理
  • Java | Leetcode Java题解之第396题旋转函数
  • 开源项目低代码表单FormCreate中通过接口加载远程数据选项
  • MySQL:undo log
  • 吴恩达大神神作经典珍藏版:《LLM大模型通关手册》面面俱到太全了!
  • Ubuntu 下载软件包时,提示 但是它将不会被安装E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
  • 【网络安全 | 甲方建设】SaaS平台、Jira工具及Jenkins服务器
  • LeetCode之字典树
  • SpringBoot3与SpringBoot2的区别
  • 内存魔术师:精通内存函数的艺术
  • 如何划分类/单一职权原则SRP
  • java重点学习-线程的并发安全(2)
  • 甘特图介绍
  • 解锁生活密码,AI答案之书解决复杂难题
  • 提取蛋白质复合体结构中组装体的变换矩阵
  • gitlab配置统一前缀路径源码版