你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
stm32循环读取8个io口状态
[复制链接]
qrskf
提问时间:2020-10-3 10:00 /
问答
是否解决:
救助:stm32的8个GPIO端口连接一个8位拨码开关,作为组网从机地址选择,怎么读取拨码开关状态,8个IO口不在一个GPIO组里面,在GPIOA GPIOB两个组里面,有参考案例代码,谢谢!
赞
0
收藏
0
评论
9
分享
发布时间:2020-10-3 10:00
举报
请先
登录
后回复
9个回答
老牛洋车
回答时间:2020-10-3 10:20:36
a0a.1 32b0c
逐个读取引脚的电平高低,然后组成您需要的数据。
赞
0
评论
回复
支持
反对
qrskf
回答时间:2020-10-4 21:02:29
a4a.1 32b0c
有没有案例代码,分享一个,谢谢了!
赞
0
评论
回复
支持
反对
qrskf
回答时间:2020-10-4 21:06:12
a4a.1 32b0c
有没有个案例代码,参考一下,谢谢了!
赞
0
评论
回复
支持
反对
STM1024
回答时间:2020-10-4 22:10:23
a0a.1 32b0c
那就把GA,GB都读出来,然后提取对应bit位啊,基本的位操作
赞
0
评论
回复
支持
反对
qrskf
回答时间:2020-10-5 16:54:35
a4a.1 32b0c
好的,谢谢大家
赞
0
评论
回复
支持
反对
小歆-2051663
回答时间:2020-10-9 12:26:30
a0a.1 32b0c
我一般会定义一个联合体+结构体的变量,例如:
union {
uint8 Byte;
struct {
uint8_t bit0 :1;
uint8_t bit1 :1;
uint8_t bit2 :1;
uint8_t bit3 :1;
uint8_t bit4 :1;
uint8_t bit5 :1;
uint8_t bit6 :1;
uint8_t bit7 :1;
} Bits;
} Address;
复制代码
读取IO并赋值变量这样写:
Address.Bits.bit0 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit1 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit2 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit3 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit4 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit5 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit6 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
Address.Bits.bit7 = HAL_GPIO_ReadPin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin);
复制代码
最后使用的时候这样写:
uint8_t tmp = Address.Byte;
复制代码
赞
0
评论
回复
支持
反对
butterflyspring
回答时间:2020-10-10 11:35:10
a0a.1 32b0c
读拨码开关一般不追求速度,用什么方法都能读出来。用库函数读就行。大家说的方法都可以实现的
赞
0
评论
回复
支持
反对
qrskf
回答时间:2020-10-11 17:46:33
a4a.1 32b0c
我是这样写的: u8 addid[8];
addid[0] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11);
addid[1] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10);
addid[2] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);
addid[3] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1);
addid[4] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
addid[5] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);
addid[6] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);
addid[7] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);
赞
0
评论
回复
支持
反对
qrskf
回答时间:2020-10-11 17:47:10
a1024a.1 32b0c
谢谢大家!!!!!!
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
读取IO并赋值变量这样写:
最后使用的时候这样写:
addid[0] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11);
addid[1] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10);
addid[2] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);
addid[3] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1);
addid[4] = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);
addid[5] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);
addid[6] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);
addid[7] = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);