野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13525|回复: 11

GPIOx->IDR寄存器怎么使用

[复制链接]
发表于 2016-8-7 20:09:52 | 显示全部楼层 |阅读模式
在用寄存器写按键那个程序的时候,定义变量a; a=GPIOA->IDR;调试的时候,a的值没有变化;读不出来;if(GPIOA->IDR == 0xfe)也判断不了;
GPIOA->IDR & GPIO_Pin_0 只读一位就可以;是不是IDR只能一位位的读;
回复

使用道具 举报

发表于 2016-8-7 20:29:16 来自手机 | 显示全部楼层
idr是16位的寄存器,读一次读回来的是16bit的值,具体怎么用看你自己
回复 支持 反对

使用道具 举报

发表于 2016-8-7 20:35:22 来自手机 | 显示全部楼层
gpioa-odr 等于0xfe,你哪里来的自信,这样判断
回复 支持 反对

使用道具 举报

发表于 2016-8-7 20:37:32 来自手机 | 显示全部楼层
0xfe是高前面7位都是1,最后一位是0,请问这些1和0从哪里来?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 20:41:15 | 显示全部楼层
fire 发表于 2016-8-7 20:29
idr是16位的寄存器,读一次读回来的是16bit的值,具体怎么用看你自己

读出来放在变量a,调试的时候a的值是不变的,我也用了32位,16位的试了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 20:43:31 | 显示全部楼层
fire 发表于 2016-8-7 20:37
0xfe是高前面7位都是1,最后一位是0,请问这些1和0从哪里来?

ODR先设置为0xff,然后按键是PA0的,那么IDR读出来不应该是0xfe吗
回复 支持 反对

使用道具 举报

发表于 2016-8-7 20:44:09 来自手机 | 显示全部楼层
gpioa-idr==0x01,这样判断,搞定,前提是按键按下是高电平。
回复 支持 反对

使用道具 举报

发表于 2016-8-7 20:44:58 来自手机 | 显示全部楼层
zhangweiquan 发表于 2016-8-7 20:41
读出来放在变量a,调试的时候a的值是不变的,我也用了32位,16位的试了

你实在搞不懂就看新录制的视频吧,我有详细的分析。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 20:56:31 | 显示全部楼层
fire 发表于 2016-8-7 20:44
gpioa-idr==0x01,这样判断,搞定,前提是按键按下是高电平。

IDR的 初始值是0x00吗,MINI板的按下是低电平的,GPIOA->IDR  == 0x00 这个值也不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-7 21:00:40 | 显示全部楼层
fire 发表于 2016-8-7 20:44
你实在搞不懂就看新录制的视频吧,我有详细的分析。

好的,我正在下载你录制的视频
回复 支持 反对

使用道具 举报

发表于 2016-8-10 07:33:22 来自手机 | 显示全部楼层
迷之自信  还有字符限制了啊
回复 支持 反对

使用道具 举报

发表于 2016-8-11 12:52:55 | 显示全部楼层
看看手册GPIOA->IDR是什么东西先,然后你就会用了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 15:26 , Processed in 0.031266 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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