示例代码
以下是一个使用状态机管理的简单示例:
c
复制代码
typedef enum {
UART_IDLE,
UART_READING,
UART_WRITING
} UART_State;
UART_State uart_state = UART_IDLE;
void UART_Write(const uint8_t *data, uint16_t size) {
while (uart_state != UART_IDLE);
uart_state = UART_WRITING;
// 调用HAL库写函数
HAL_UART_Transmit(&huart1, (uint8_t*)data, size, HAL_MAX_DELAY);
uart_state = UART_IDLE;
}
void UART_Read(uint8_t *data, uint16_t size) {
while (uart_state != UART_IDLE);
uart_state = UART_READING;
// 调用HAL库读函数
HAL_UART_Receive(&huart1, data, size, HAL_MAX_DELAY);
uart_state = UART_IDLE;
}
|