白小菜

  • 2024-02-18
  • 发表了主题帖: 基于STM32F103使用中断的方式读取TM03容栅位移传感器的值前两个电平一直是高电平

    本帖最后由 白小菜 于 2024-2-19 16:25 编辑 我在学习使用STM32读取位移值的时候发现前两个电平不管数据如何变化读取出来一直是1,我吧PB11 SCK改为上升沿触发就只有第一个电平是1,根据信号时序正常来说是下降沿触发的。 有点搞不懂了求各位大佬指点 在程序中我使用的是PB11 SCK下沿触发中断,然后获取PB10 SDA的电平信号   uint8_t BinaryDisplacementData[20]; //接收位移的二进制数据 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_11) { GPIO_PinState pin_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_10); if (pin_state == GPIO_PIN_SET) pin_state = 1; else pin_state = 0; i_data++; //获取0-19的20位数据 if (i_data <= 19) { BinaryDisplacementData[i_data-1]= pin_state; } else if (i_data <= 23) { //获取20-23的四位标志位 data21_24[i_21_24]=pin_state; i_21_24++; } else { for(uint8_t i=0;i<20;i++) { TM_N_data+=BinaryDisplacementData[i]<<i; printf(" %d",BinaryDisplacementData[i]); } TM_N_data = 0x00; memset((uint8_t *)BinaryDisplacementData,0,20); memset(data21_24,0,4); i_data = 0x00; i_21_24=0x00; } } } PB11 SDA的IO配置是下沿触发 /*Configure GPIO pins : PBPin PBPin PB11 */ GPIO_InitStruct.Pin = OK_Button_Pin|R_Button_Pin|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /*Configure GPIO pin : PB10 */ GPIO_InitStruct.Pin = GPIO_PIN_10; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);   输出发现前两个一直是1,这个默认的应该都是0才对      使用示波器查看信号并没有问题,上面的是SCK 下面的是SDA    

最近访客

现在还没有访客

< 1/0 >

统计信息

已有--人来访过

  • 芯积分:30
  • 好友:--
  • 主题:1
  • 回复:0

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言