IDR寄存器读不到数据

2019-08-17 08:53发布

本帖最后由 2672751679 于 2017-6-8 23:08 编辑

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

u16 baud_rate_code=0;  //全局变量
GPIOB ->IDR &=0X00000000;       
  baud_rate_code = GPIOB ->IDR&0x0000F000;       
  baud_rate_code += 1;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-08-17 14:26
其他IO正常?是不是IO模式没设置对?
2672751679
2楼-- · 2019-08-17 18:01
正点原子 发表于 2017-6-8 23:39
其他IO正常?是不是IO模式没设置对?

原子哥你好,我是这样配置的:
GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能GPIOB的时钟
               
        //RX_LED
        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.3
        GPIO_ResetBits(GPIOB,GPIO_Pin_3);
       
        //TX_LED
        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);
       
        //ER_LED
        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);

        //CRC16校验码高低字节顺序用       
        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);
               
        //ID站号用       
        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);       

请指教,谢谢
正点原子
3楼-- · 2019-08-17 22:49
 精彩回答 2  元偷偷看……
2672751679
4楼-- · 2019-08-18 02:08
正点原子 发表于 2017-6-10 01:57
看上去OK
你精简代码,再找下问题

好的,谢谢

一周热门 更多>