初级会员 
  
	- 积分
 - 122
 
        - 金钱
 - 122 
 
       - 注册时间
 - 2022-4-24
 
      - 在线时间
 - 42 小时
 
 
 
 | 
 
1金钱 
代码如下,主要是接收函数返回了timeout,发送正常,请问这是什么原因?用f429的板子 
#include "main.h" 
#include "PCF8574T.h" 
 I2C_HandleTypeDef hi2c2; 
 
UART_HandleTypeDef huart1; 
UART_HandleTypeDef huart2; 
 
void SystemClock_Config(void); 
static void MX_GPIO_Init(void); 
static void MX_I2C2_Init(void); 
static void MX_USART1_UART_Init(void); 
static void MX_USART2_UART_Init(void); 
 
int main(void) 
{ 
   
            HAL_StatusTypeDef ret; 
            uint8_t buf[12]; 
 
            uint8_t  tx_buff[8] = {0x01,0x03,0x00,0x00,0x00,0x01,0x84,0x0A}; 
 
//                float out_buff[9]; 
            uint8_t rx_buff[100]; 
 
//                int lenth,i;//前一个为输出长度 后一个为循环启示位 
//                float data_H16,data_L16,data_10,data,Res;//分别为16进制和10进制数据 
//                int lenth1=0;//输出数组的首位 
        //        lenth=rx_buff[2];//判断几个输出数据 
    HAL_Init(); 
 
  
   SystemClock_Config(); 
  MX_GPIO_Init(); 
  MX_I2C2_Init(); 
  MX_USART1_UART_Init(); 
  MX_USART2_UART_Init(); 
  while (1) 
  { 
    /* USER CODE END WHILE */ 
 
    /* USER CODE BEGIN 3 */ 
      buf[0]=0xFB;  // PCG8574T P6 = 1 发送模式   1111 1011 其他引脚保持空闲默认状态 
 
               ret=HAL_I2C_Master_Transmit(&hi2c2, PCF8574_ADDR, buf, 1, 100); 
//               if(ret != HAL_OK) 
//                   HAL_UART_Transmit(&huart1, "I2C send Error!", 16, 100); 
               HAL_UART_Transmit(&huart2, tx_buff, 7, 100); 
//               if(HAL_UART_Transmit(&huart2, tx_buff, 7, 100)== HAL_OK) 
//                   HAL_UART_Transmit(&huart1, tx_buff, 7, 100); 
// 
//               HAL_Delay(200); 
 
 
               buf[0]=0xBB;  // PCG8574T P6 = 0 接收模式   1011 1011 其他引脚保持空闲默认状态 
               ret=HAL_I2C_Master_Transmit(&hi2c2, PCF8574_ADDR, buf, 1, 100); 
//               if(ret != HAL_OK) 
//                   HAL_UART_Transmit(&huart1, "I2C send Error!", 16, 100); 
 
               if(HAL_UART_Receive(&huart2, rx_buff, 30,100) == HAL_OK) 
                   HAL_UART_Transmit(&huart1, rx_buff, 30, 100); 
              HAL_Delay(500); 
     } 
   
 
 |   
 
 
 
 
 
 |