你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103_IDR寄存器读不到端口的输入状态

[复制链接]
gtygg 提问时间:2017-6-10 12:38 /
悬赏10ST金币未解决
本帖最后由 gtygg 于 2017-6-10 12:42 编辑

STM32F103_IDR寄存器读不到端口的输入状态

baud_rate_code 无论定义成u8 或者 u16, 都获取不到PB12 13 14 15的值(PB12 13 14 15输入的有效电平是高电平,端口配置的是下拉输入)
硬件仿真,baud_rate_code的值始终为0
baud_rate_code = GPIOB ->IDR;    //这样去读也不行
这种写法对吗,我查网上的资料,有像这么写的
是不是baud_rate_code的类型定义错了
请大家指教,谢谢

        u16 baud_rate_code=0;  //全局变量

        GPIO_InitTypeDef GPIO_InitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
               

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_3);
        

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_4);
        

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        GPIO_ResetBits(GPIOB,GPIO_Pin_0);        

   
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;  //PB5
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
        GPIO_Init(GPIOB, &GPIO_InitStructure);

         //USART1-TX        
         GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;  //PB6
         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
         GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
         GPIO_Init(GPIOB,&GPIO_InitStructure);

         //USART-RX        
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;  //PB7
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOB,&GPIO_InitStructure);

         
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;  
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
               
      
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11;  
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;  
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        
   
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;  
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;
        GPIO_Init(GPIOB,&GPIO_InitStructure);        


        GPIOB ->IDR &=0X00000000;        
        baud_rate_code = GPIOB ->IDR&0x0000F000;      
//     baud_rate_code = GPIOB ->IDR;       
          baud_rate_code += 1;

赞 收藏 评论4 发布时间:2017-6-10 12:38

举报

4个回答
zhao.zhao 回答时间:2017-6-10 13:01:37
把“GPIOB ->IDR &=0X00000000; ” 这一句注释掉再试试
gtygg 回答时间:2017-6-10 23:40:29
zhao.zhao 发表于 2017-6-10 13:01
把“GPIOB ->IDR &=0X00000000; ” 这一句注释掉再试试

我试了,还是一样,请多指教,谢谢
shuolang126 回答时间:2017-6-12 08:36:11
你配置PB的GPIO1、GPIO8-15都是输入,下拉输入,外部控制输入端需要有较强的上拉作用才能起作用,比如接上拉电阻或外部输入信号是推挽输出,请检查你的电路设计是否正确!
zhao.zhao 回答时间:2017-6-12 14:43:03
你把PB12 PB13 PB14 PB15 相关的连接图发上来看看,同意楼上的观点
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版