#ifndef _USART_H #define _USART_H #include "stm32f4xx.h" /* *1:定义STM32F103Cxxx三个串口 *0:定义STM32F103xxxx五个串口 *无定义默认使用三个串口 */ #define USE_STM32F103_Cxxx 0 #define TURE 1 #define FALSE 0 /* DMA */ #define USART_DR_BASE (USART1_BASE+0x04) #define USART_TX_DMA_CLK RCC_AHB1Periph_DMA2 #define USART_TX_DMA_CHANNEL DMA_Channel_4 #define USART_TX_DMA_STREAM DMA2_Stream7 #define USART_RX_DMA_CLK RCC_AHB1Periph_DMA2 #define USART_RX_DMA_CHANNEL DMA_Channel_4 #define USART_RX_DMA_STREAM DMA2_Stream5 /* 串口外设 */ typedef struct USART { char *name; int (*usart_init)(struct USART *pDev, uint32_t BaudRate, uint16_t DataBit, float StopBit, uint16_t Parity); void (*usart_deinit)(struct USART *pDev); void (*usart_send)(struct USART *pDev, uint8_t *data, uint16_t dataLenght); int (*usart_print)(struct USART *pDev, uint32_t timeout_ms, char *format, ...); int (*usart_receive)(struct USART *pDev, uint8_t *data, uint16_t data_len, uint16_t *rec_br, uint32_t timeout_ms); uint32_t(*usart_wait_message_count)(struct USART *pDev); void *usart_priv_data; } usart_obj_t; /* 获取串口外设句柄 */ usart_obj_t *get_usart_obj(char *name); #endif