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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版