idr寄存器、_STM32F103设置上拉输入后GPIOE-IDR寄存器疑惑 PA按键有效PE key2按键无效...
[mw_shl_code=c,true]
[mw_shl_code=c,true]//战舰V2板
//GPIOE->ODR |= 0xf<<2;//上拉2345
//按我的理解设置上拉后
//IDR寄存器的值应该是xxxx xxxx xx11 11xx,为什么不能执行i=2;即为什么值不是xxxx xxxx xx11 11xx,不执行GPIOE->IDR &4 == 4这个if语句
//程序如下
#include "sys.h"
#include "stm32f10x_map.h"
#include "stm32f10x_nvic.h"
#include "delay.h"
int main(void)
{
u8 i=0;
Stm32_Clock_Init(9);//系统时钟设置
//RCC->APB2ENR |= 9<<3; //使能PORTB和PORTE时钟,原子原句
RCC->APB2ENR |= 0x13 << 2; //改写使能PORTE PORTB PORTA时钟
GPIOB->CRL &= 0xFF0FFFFF;//原子原句
GPIOB->CRL |= 0x00300000;//原子原句
GPIOB->ODR |= 1<<5;//原子原句
//GPIOE->CRL &= 0xFF0FFFFF;
//GPIOE->CRL |= 0x00300000;
//改写成
GPIOE->CRL &= 0xFF0000FF;//改写PE5推挽,PE234上拉输入
GPIOE->CRL|=0X00388800;
//1111B==0xfh
GPIOE->ODR |= 0xf<<2;//上拉2345
//按我的理解设置上拉后
//IDR寄存器的值应该是xxxx xxxx xx11 11xx
GPIOA->CRL&=0XFFFFFFF0;//PA0 设置成输入,默认下拉,原子原句
GPIOA->CRL|=0X00000008;
delay_init(72); //延时函数初始化
/*原子按键初始化原句开始*/
//RCC->APB2ENR|=1<<2; //使能 PORTA 时钟
//RCC->APB2ENR|=1<<6; //使能 PORTE 时钟
//上边注释掉的两句,可以跟led的io初始化一起使能
//即10011B==0x13h代表PE PB PA,只需要左移两位,所以<<2
//GPIOA->CRL&=0XFFFFFFF0;//PA0 设置成输入,默认下拉
//GPIOA->CRL|=0X00000008;
//GPIOE->CRL&=0XFFF000FF;//PE2~4 设置成输入
//GPIOE->CRL|=0X00088800;
//GPIOE->ODR|=7<<2; //PE2~4 上拉
//上边注释掉的3句,可以和ledPE口初始化一起
/*按键初始化结束*/
while(1)
{
GPIOB->ODR &= !(1<<5);//LED0亮
GPIOE->ODR &= !(1<<5);//LED1亮
delay_ms(500);//闪烁
GPIOE->ODR |= 1<<5;
delay_ms(500);
GPIOB->ODR |= 1<<5;
GPIOE->ODR &= !(1<<5);
delay_ms(500);
GPIOE->ODR |= 1<<5;
delay_ms(500);
if(GPIOA->IDR & 1)//key_up可以执行
{
i=1;
}
else if((GPIOE->IDR & 0x0004)==4)//key2无论是否按键都不执行
{
i=2;
}
else
{
i=0;
}
while(i==1)//下面按键执行结果,LED闪烁速度变化,可以忽略
{if((GPIOA->IDR & 1)==0)
{
i=0;
break;
}
GPIOB->ODR &= !(1<<5);
GPIOE->ODR &= !(1<<5);
delay_ms(250);
GPIOE->ODR |= 1<<5;
delay_ms(250);
GPIOB->ODR |= 1<<5;
GPIOE->ODR &= !(1<<5);
delay_ms(250);
GPIOE->ODR |= 1<<5;
delay_ms(250);
}
while(i==2)
{if((GPIOE->IDR & 1<<2)==0)
{
i=0;
break;
}
GPIOB->ODR &= !(1<<5);
GPIOE->ODR &= !(1<<5);
delay_ms(120);
GPIOE->ODR |= 1<<5;
delay_ms(120);
GPIOB->ODR |= 1<<5;
GPIOE->ODR &= !(1<<5);
delay_ms(120);
GPIOE->ODR |= 1<<5;
delay_ms(120);
}
}
}[/mw_shl_code]
[/mw_shl_code]
idr寄存器、_STM32F103设置上拉输入后GPIOE-IDR寄存器疑惑 PA按键有效PE key2按键无效...相关推荐
- 单片机(STM32)的GPIO框图:─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能
─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 GPIO框图 保护电路: 高压保护--上拉二极管 低压保护--下拉二极管 输 ...
- STM32 IO口的8中配置方式解读(推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟)
转自:http://blog.csdn.net/u010592722/article/details/45746079 STM32 IO口的8中配置方式: (1)GPIO_Mode_AIN 模拟输入 ...
- STM32八种IO口模式区别,以及上拉输入、下拉输入、浮空输入、模拟输入的区别
最近在看数据手册的时候,发现在 Cortex-M3 里,对于 GPIO 的配置种类有 8 种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输 ...
- 【stm32】引脚高低电平、上拉输入与下拉输入
引脚设置为上拉输入与下拉输入: 在按键输入实验中,引脚为输入,按键1默认条件下为高电平,按下后为低电平----设置为上拉输入: 那么什么时候采用浮空输入呢? 答:多用于按键输入,IO状态是不确定的,完 ...
- 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)
目录 前言 GPIO是什么 GPIO的八大模式 输入模式 浮空输入 上拉输入 下拉输入 模拟输入 输出模式 开漏输出 推挽输出 复用开漏输出 复用推挽输出 GPIO的输出速率 前言 学习了这么久的单片 ...
- 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299857.html 以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候 ...
- 常用的推挽输出、开漏输出、上拉输入
转载 https://blog.csdn.net/hailin0716/article/details/24333951 一.推挽输出: 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管 ...
- (转载)有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别...
以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_M ...
- STM32初学篇-推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
有关推挽输出.开漏输出.复用开漏输出.复用推挽输出以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPI ...
最新文章
- 数组-二维数组中的查找
- python的程序结构有哪几种_python异常处理结构有哪几种形式
- 51Nod 1007 正整数分组(01背包)
- python基础——导入模块
- 电脑桌面图标异常 计算机只显示C盘,Windows7系统桌面图标异常如何解决?
- 如何做一个“千里马”
- 【一些细节问题】5种神经网络常见的求导!
- 在proteus软件80C51芯片隐藏电源接口VCC
- html炫酷文本框,炫酷的input框实现
- 微信域名防封技术、微信域名检测技术的常见问题解答
- 安卓微信分享图标不显示的问题
- Android vitamo 实现横竖屏的切换和页面内部的网络视频
- 比入赘还简单的——Python Flask Web 框架入门
- 应用分发平台之苹果超级签名流程分析及API错误
- 计算机考研代码854,哈工大计算机考研考纲854计算机基础
- 括号匹配问题(栈应用)C++
- CV_shortcomings of original GAN
- 学软件测试最好的几本书,这8本书能帮你很多
- JAVA:将CSV文件转换成JSON
- 关于北京生孩子落户口问题集锦
热门文章
- 【读书分享】吴军:《信息传》
- 不懂设计的产品不是好开发
- linux u盘 中毒,linux对中毒u盘分区和格式化
- Ubuntu 18.4 qt5.12 安装搜狗拼音输入法
- 计算机office用的是哪个版本,小编教你看office是哪个版本_查看office是哪个版本的方法...
- 云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅
- 一台计算机英语美式发音,美式英语发音课程(视频+文本) 第69期:Want和Won't的发音对比...
- 清橙OJ A1036.分解质因数
- ros建图过程中给上位机发布地图信息
- 今年双旦期间简直人品爆棚,晒晒我抽中的趣享付趣号卡