static uint8_t i2c_frame_data32; static uint8_t i2c_frame_data_len = 0; static BOOL is_rx_i2c_frame_data = USER_FALSE; if !is_rx_i2c_frame_data if tx_onebyte == 0xFE 接收到帧头
uint8_t i2c_frame_data[32]; uint8_t i2c_frame_data_len = 0; bool is_rx_i2c_frame_data = false;
if (!is_rx_i2c_frame_data) { if (tx_onebyte == 0xFE) { is_rx_i2c_frame_data = true; i2c_frame_data_len = 0; i2c_frame_data[i2c_frame_data_len++] = tx_onebyte; } } else { if (i2c_frame_data_len <= 32) { i2c_frame_data[i2c_frame_data_len++] = tx_onebyte; } else { uint16_t send_len = 0; while (i2c_frame_data_len > 0) { if (i2c_frame_data_len >= 32) { i2c_send_one_frame_data(i2c_frame_data + send_len, MAX_I2C_FRAME_DATA_LEN); send_len += MAX_I2C_FRAME_DATA_LEN; i2c_frame_data_len -= MAX_I2C_FRAME_DATA_LEN; } else { i2c_send_one_frame_data(i2c_frame_data + send_len, i2c_frame_data_len); send_len += i2c_frame_data_len; i2c_frame_data_len -= i2c_frame_data_len; } } i2c_frame_data_len = 0; } if (tx_onebyte == 0xFF) { if (i2c_frame_data_len > 0) { uint16_t send_len = 0; while (i2c_frame_data_len > 0) { if (i2c_frame_data_len > MAX_I2C_FRAME_DATA_LEN) { i2c_send_one_frame_data(i2c_frame_data + send_len, MAX_I2C_FRAME_DATA_LEN); send_len += MAX_I2C_FRAME_DATA_LEN; i2c_frame_data_len -= MAX_I2C_FRAME_DATA_LEN; } else { i2c_send_one_frame_data(i2c_frame_data + send_len, i2c_frame_data_len); send_len += i2c_frame_data_len; i2c_frame_data_len -= i2c_frame_data_len; } } i2c_frame_data_len = 0; } is_rx_i2c_frame_data = false; }
原文地址: https://www.cveoy.top/t/topic/iaZ1 著作权归作者所有。请勿转载和采集!