/* * yUART_stm32.h * * Created on: 2018年11月21日 * Author: 仰若水 * 串口通信库 * 任务安全的串口通信库。STM32接口 */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __YUART_STM32_H #define __YUART_STM32_H #include "cmsis_os.h" #include "stm32f0xx_hal.h" #include "yUART.h" #include "hal_uart_ext.h" typedef struct __YUART_STM32 { YUART uart; UART_HandleTypeDef *huart; osSemaphoreId semaphore; } YUART_STM32; #define WAIT_FOREVER osWaitForever // 等待信号量 inline static void semaphoreWait(YUART *uart, uint32_t millisec) { osSemaphoreWait(((YUART_STM32 *)uart)->semaphore, millisec); } // 请先调用该初始化函数 void YUART_STM32_DMA_Init(YUART_STM32 *uart); void YUART_STM32_IT_Init(YUART_STM32 *uart); // DMA模式 // 请在串口的RX完成、半完成回调以及Idle回调中调用本函数 void YUART_STM32_RX_DMA_Received(UART_HandleTypeDef *huart, YUART_STM32 *uart); // 中断模式 // 请在串口的Idle回调中调用本函数 void YUART_STM32_RX_IT_Idle_Received(UART_HandleTypeDef *huart, YUART_STM32 *uart); // 请在串口的完成回调中调用本函数 void YUART_STM32_RX_IT_Cplt_Received(UART_HandleTypeDef *huart, YUART_STM32 *uart); #endif /* __YUART_STM32_H */