[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按键无效...相关推荐

  1. 单片机(STM32)的GPIO框图:─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能

    ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能 GPIO框图 保护电路: 高压保护--上拉二极管 低压保护--下拉二极管 输 ...

  2. STM32 IO口的8中配置方式解读(推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟)

    转自:http://blog.csdn.net/u010592722/article/details/45746079 STM32  IO口的8中配置方式: (1)GPIO_Mode_AIN 模拟输入 ...

  3. STM32八种IO口模式区别,以及上拉输入、下拉输入、浮空输入、模拟输入的区别

    最近在看数据手册的时候,发现在 Cortex-M3 里,对于 GPIO 的配置种类有 8 种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输 ...

  4. 【stm32】引脚高低电平、上拉输入与下拉输入

    引脚设置为上拉输入与下拉输入: 在按键输入实验中,引脚为输入,按键1默认条件下为高电平,按下后为低电平----设置为上拉输入: 那么什么时候采用浮空输入呢? 答:多用于按键输入,IO状态是不确定的,完 ...

  5. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)

    目录 前言 GPIO是什么 GPIO的八大模式 输入模式 浮空输入 上拉输入 下拉输入 模拟输入 输出模式 开漏输出 推挽输出 复用开漏输出 复用推挽输出 GPIO的输出速率 前言 学习了这么久的单片 ...

  6. 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别

    转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299857.html 以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候 ...

  7. 常用的推挽输出、开漏输出、上拉输入

    转载 https://blog.csdn.net/hailin0716/article/details/24333951 一.推挽输出: 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管 ...

  8. (转载)有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别...

    以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_M ...

  9. STM32初学篇-推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别

    有关推挽输出.开漏输出.复用开漏输出.复用推挽输出以及上拉输入.下拉输入.浮空输入.模拟输入的区别 最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多: (1)GPI ...

最新文章

  1. 数组-二维数组中的查找
  2. python的程序结构有哪几种_python异常处理结构有哪几种形式
  3. 51Nod 1007 正整数分组(01背包)
  4. python基础——导入模块
  5. 电脑桌面图标异常 计算机只显示C盘,Windows7系统桌面图标异常如何解决?
  6. 如何做一个“千里马”
  7. 【一些细节问题】5种神经网络常见的求导!
  8. 在proteus软件80C51芯片隐藏电源接口VCC
  9. html炫酷文本框,炫酷的input框实现
  10. 微信域名防封技术、微信域名检测技术的常见问题解答
  11. 安卓微信分享图标不显示的问题
  12. Android vitamo 实现横竖屏的切换和页面内部的网络视频
  13. 比入赘还简单的——Python Flask Web 框架入门
  14. 应用分发平台之苹果超级签名流程分析及API错误
  15. 计算机考研代码854,哈工大计算机考研考纲854计算机基础
  16. 括号匹配问题(栈应用)C++
  17. CV_shortcomings of original GAN
  18. 学软件测试最好的几本书,这8本书能帮你很多
  19. JAVA:将CSV文件转换成JSON
  20. 关于北京生孩子落户口问题集锦

热门文章

  1. 【读书分享】吴军:《信息传》
  2. 不懂设计的产品不是好开发
  3. linux u盘 中毒,linux对中毒u盘分区和格式化
  4. Ubuntu 18.4 qt5.12 安装搜狗拼音输入法
  5. 计算机office用的是哪个版本,小编教你看office是哪个版本_查看office是哪个版本的方法...
  6. 云享·人物丨造梦、探梦、筑梦,三位开发者在华为云上的寻梦之旅
  7. 一台计算机英语美式发音,美式英语发音课程(视频+文本) 第69期:Want和Won't的发音对比...
  8. 清橙OJ A1036.分解质因数
  9. ros建图过程中给上位机发布地图信息
  10. 今年双旦期间简直人品爆棚,晒晒我抽中的趣享付趣号卡