STM8S库文件判断指定IO输入引脚电平GPIO_ReadInputPin有问题

2020-02-08来源: eefocus关键字:STM8S  库文件  IO输入  引脚电平

/**

  * @brief  Reads the specified GPIO input data pin.

  * @param  GPIOx : Select the GPIO peripheral number (x = A to I).

  * @param  GPIO_Pin : Specifies the pin number.

  * @retval BitStatus : GPIO input pin status.

  */

BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)

{

    return ((BitStatus)(GPIOx->IDR & (uint8_t)GPIO_Pin));

}



以上是ST文件读取指定IO口电平原型。


如果你使用类似

if(GPIO_ReadInputPin(GPIO_ReadInputPin(GPIOC,GPIO_PIN_7) == SET)

{

.....

}

这样的判断代码,你会发现永远的不到你想要的。

原因是BitStatus是个enum类型,其实而enum从某个层面上说它是与int类型相似。

所以你用

BitStatus test = GPIO_ReadInputPin(GPIO_ReadInputPin(GPIOC,GPIO_PIN_7) ;

你会发现,test值是个8位的数,而非类似BOOL的0或1.

所以你可以考虑将代码修改为

BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin)

{

   return ((GPIOx->IDR & (uint8_t)GPIO_Pin) ? SET : RESET);


关键字:STM8S  库文件  IO输入  引脚电平 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic487556.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8 GPIO输入输出模式
下一篇:STM8L101F3输入捕获测脉宽及占空比

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8s外部时钟晶振失效时钟安全系统CSS启动演示
使用的最小系统晶振是8m的。这里说下配置过程:时钟自动切换,开启切换中断在中断里面清除中断标志,使能CSS并开启CSS中断CSS中断发生,清除CSS中断标志,将HSI二分频,即16M/2=8M,与外部晶振相同,这样不会影响串口波特率窗口输出配置信息:用手触碰PA1、PA2引脚使外部晶振失效串口输出CSS中断
发表于 2020-03-09
STM8s外部时钟晶振失效时钟安全系统CSS启动演示
STM8S103之时钟设置
最大时钟(指的是system clock):外部晶振24MHz,内部高速RC16MHz三个时钟源:外部晶振、内部高速RC(上电默认) +内部低速RC几个时钟:master clock(即sytem clock),fcpu,外设时钟、AWU时钟调用库函数中CLK_ClockSwitchConfig,参考库函数clk_clockselection,但是分频还得进一步设置上电默认:内部高速RC,HSIDIV=/8,CPUDIV=/1,外部时钟全使能,查看相关寄存器的Reset value
发表于 2020-03-09
STM8S103之时钟设置
STM8S如何跑24M的HSE晶振
就这么几步,第一步: 检查STM8s.h头文件配置/**  * @brief  In the following line adjust the value of External High Speed oscillator (HSE)   used in your application   Tip: To avoid modifying this file each time you need to use different HSE, you        can define the HSE value in your
发表于 2020-03-08
STM8S开发入门之使用EWSTM8(IAR STM8S)新建工程点亮一个LED
1、预先安装好EWSTM8(IAR STM8)软件,全称为IAR Embedded Workbench for STMicroelectronics STM8 IDE2、下载好STM8S标准库,此处所用标准库为STM8S_StdPeriph_Lib V2.3.13、新建个文件夹(名称自定),作为项目所在文件夹,并在项目文件夹里再新建两个文件夹,此处分别命名为FWLIB和USER。(注:这两个文件夹名字可以按你们自己意思取,无限制,如可以取HWLIB、SYSLIB、MYLIB、MYAPP、MYABC、XZY等)4、将STM8S标准库(STM8S_StdPeriph_Lib V2.3.1)——Project
发表于 2020-03-08
STM8S开发入门之使用EWSTM8(IAR STM8S)新建工程点亮一个LED
STM8L052定时器1配置30S
@[TOC]STM8L TIM1相关配置Tim1基本介绍TIM1由一个由可编程预分频器驱动的16位上下自动重载计数器组成。定时器可用于多种用途,包括:•时基生成•测量输入信号的脉冲长度(输入捕获)•生成输出波形(输出比较,PWM和单脉冲模式)•各种事件的中断功能(捕获,比较,溢出,中断,触发)•捕获,比较,溢出事件的DMA请求功能•与其他定时器或外部信号同步(外部时钟,复位,触发可校准)。该定时器非常适用于各种控制应用,包括那些需要具有互补输出和死区时间插入的中心对齐PWM功能的应用。定时器时钟可以来自内部时钟,也可以来自可通过配置寄存器选择的外部源。配置以下代码 自己配置了一个30S定时器,使用系统内部高速时钟16M,1600
发表于 2020-03-06
STM8S触摸按键固件库详解
由于刚好有小项目需要用到触摸按键,stm8s可以节约一块触摸按键的片子,并且成本比较低。在某些对成本比较敏感的应用还是有价值的。现将自己网上找到的资料与自己学习的心得记下与大家分析。ST的底层库对滚动条也支持,效果还是不错的一、原理分析ST的电容式触摸按键方案通过一个电阻和感应电极的电容CX构成的阻容(RC)网络的充电/放电时间来检测人体触摸所带来的电容变化。如上图所示,当人手按下时相当于感应电极上并联了一个电容Cx,增加了感应电极上的电容,感应电极进行充放电的时间会增加,从而检测到按键的状态。先用开关将 Cs(或 Cs+Cx)上的电放尽,然后断开开关,让 R 给 Cs(或 Cs+Cx)充电,当没有手指触摸的时候, Cs 的充电
发表于 2020-03-05
STM8S触摸按键固件库详解
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved