找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机采集按键高电平问题

查看数: 4901 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-6-30 11:13

正文摘要:

这个按键设计的单片机是STM8,按键的一端接到单片机强推挽输出高电平快速输出上,另一端接到浮空输入上,浮空输入后下拉电阻。通过浮空输入读取电平状态来判断按键。硬件我用万用表测试电平可以正常输出IO无问题。只 ...

回复

ID:213619 发表于 2018-7-1 05:46
lxd411468700 发表于 2018-6-30 18:00
要看下你写的IO配置,是不是配置为上拉输入或者下拉输入

是的,都是用的宏定义。浮空输入采集,平时是低电平的。强推挽拉高采集高电平。说白了是按键的逆使用

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

ID:362379 发表于 2018-6-30 18:00
要看下你写的IO配置,是不是配置为上拉输入或者下拉输入
ID:362338 发表于 2018-6-30 16:22
学习一下
ID:213619 发表于 2018-6-30 15:27
愿意出来了。通过打印变量的值查看返回的是0x10。将整IO的值进行返回的。#define KEYPORT1  GPIO_ReadInputPin(GPIOB, GPIO_PIN_4)位置正好。但是BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin);  这个库的返回值是bit。请大家帮帮忙。为什么是整组的值

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

ID:213619 发表于 2018-6-30 15:07
zyzhyue 发表于 2018-6-30 14:09
请检查你的KEYPORT1的定义。
是bit吗?
如果不是,甚至,如果它是口寄存器的话,显然不可能对的,因为那 ...

确实如你所说,改成if(KEYPORT1)也是可以的。但是if(KEYPORT1==1)为什么不好使那
ID:213619 发表于 2018-6-30 14:53
zyzhyue 发表于 2018-6-30 14:09
请检查你的KEYPORT1的定义。
是bit吗?
如果不是,甚至,如果它是口寄存器的话,显然不可能对的,因为那 ...

你好,使用的宏 #define KEYPORT1  GPIO_ReadInputPin(GPIOB, GPIO_PIN_4)
ID:258676 发表于 2018-6-30 14:45
你的口线是进行的位定义吗?
ID:258676 发表于 2018-6-30 14:44
这个是按键程序吗?
ID:335709 发表于 2018-6-30 14:09
请检查你的KEYPORT1的定义。
是bit吗?
如果不是,甚至,如果它是口寄存器的话,显然不可能对的,因为那包含了多个位。
哪怕是bit,也未必对,取决于该C编译器的处理规则。
假设是系统定义的 bit 口,比如PA.0吧,常见的写法也应该是:
if( KEYPORT1 )
而不写
if( KEYPROT1 ==1 )
哪怕单纯从效率考虑呢

评分

参与人数 1黑币 +90 收起 理由
admin + 90 回帖助人的奖励!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表