数据发送和接收
UART发送函数
c
复制代码
void UART_Send(const char *message)
{
HAL_UART_Transmit(&huart1, (uint8_t*)message, strlen(message), HAL_MAX_DELAY);
}
I2C读取函数
c
复制代码
HAL_StatusTypeDef I2C_Read(uint8_t device_addr, uint8_t reg_addr, uint8_t *data)
{
// 发送寄存器地址
HAL_I2C_Master_Transmit(&hi2c1, device_addr << 1, ®_addr, 1, HAL_MAX_DELAY);
// 读取数据
return HAL_I2C_Master_Receive(&hi2c1, device_addr << 1, data, 1, HAL_MAX_DELAY);
}
e. 主循环示例
c
复制代码
int main(void)
{
HAL_Init(); // 初始化HAL库
SystemClock_Config(); // 配置系统时钟
MX_USART1_UART_Init(); // 初始化UART
MX_I2C1_Init(); // 初始化I2C
uint8_t sensor_data;
char buffer[50];
while (1)
{
// 从I2C设备读取数据
if (I2C_Read(0x1A, 0x00, &sensor_data) == HAL_OK)
{
// 发送读取的数据到UART
sprintf(buffer, "Sensor Data: %d\n", sensor_data);
UART_Send(buffer);
}
else
{
UART_Send("I2C Read Error\n");
}
HAL_Delay(1000); // 延时1秒
}
}
|