Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

44 рядки
1.2 KiB

  1. #ifndef _USART_H
  2. #define _USART_H
  3. #include "stm32f4xx.h"
  4. /*
  5. *1:定义STM32F103Cxxx三个串口
  6. *0:定义STM32F103xxxx五个串口
  7. *无定义默认使用三个串口
  8. */
  9. #define USE_STM32F103_Cxxx 0
  10. #define TURE 1
  11. #define FALSE 0
  12. /* DMA */
  13. #define USART_DR_BASE (USART1_BASE+0x04)
  14. #define USART_TX_DMA_CLK RCC_AHB1Periph_DMA2
  15. #define USART_TX_DMA_CHANNEL DMA_Channel_4
  16. #define USART_TX_DMA_STREAM DMA2_Stream7
  17. #define USART_RX_DMA_CLK RCC_AHB1Periph_DMA2
  18. #define USART_RX_DMA_CHANNEL DMA_Channel_4
  19. #define USART_RX_DMA_STREAM DMA2_Stream5
  20. /* 串口外设 */
  21. typedef struct USART {
  22. char *name;
  23. int (*usart_init)(struct USART *pDev, uint32_t BaudRate, uint16_t DataBit, float StopBit, uint16_t Parity);
  24. void (*usart_deinit)(struct USART *pDev);
  25. void (*usart_send)(struct USART *pDev, uint8_t *data, uint16_t dataLenght);
  26. int (*usart_print)(struct USART *pDev, uint32_t timeout_ms, char *format, ...);
  27. int (*usart_receive)(struct USART *pDev, uint8_t *data, uint16_t data_len, uint16_t *rec_br, uint32_t timeout_ms);
  28. uint32_t(*usart_wait_message_count)(struct USART *pDev);
  29. void *usart_priv_data;
  30. } usart_obj_t;
  31. /* 获取串口外设句柄 */
  32. usart_obj_t *get_usart_obj(char *name);
  33. #endif