#include "Bsp.h" /** * @brief 初始化UART口外设的时钟 * @note void * @param ComX:串口号 * @retval void */ void UartClockEnable(const COM_MAP_T *ComX) { ComX->ClockCmd(ComX->ClockTree,ENABLE); } /** * @brief 初始化USART口 * @note void * @param Comx 串口号 baud 波特率 DataBits 数据位 StopBits 停止位 Parity校验位 * @retval void */ void ComInit(const COM_MAP_T *ComX, uint32_t baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity) { USART_InitTypeDef UsartInitSt; //初始化串口 USART_StructInit(&UsartInitSt); UsartInitSt.USART_BaudRate = baud; UsartInitSt.USART_WordLength = DataBits; UsartInitSt.USART_StopBits = StopBits; UsartInitSt.USART_Parity = Parity; UsartInitSt.USART_HardwareFlowControl = USART_HardwareFlowControl_None; UsartInitSt.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; UartClockEnable(ComX); USART_Init(ComX->Periph.UartId, &UsartInitSt); //配置中断 USART_ITConfig(ComX->Periph.UartId, USART_IT_RXNE, ENABLE); //启用串口 USART_Cmd(ComX->Periph.UartId, ENABLE); } /** * @brief USART口发送数据 * @note void * @param ComX 串口号 Data数据 * @retval void */ void ComSendChar(const COM_MAP_T *ComX,uint8_t Data) { USART_SendData(ComX->Periph.UartId, Data); while (USART_GetFlagStatus(ComX->Periph.UartId, USART_FLAG_TC) != SET); } /** * @brief USART口发送字符串 * @note void * @param ComX 串口号 Data数据 Len 长度 * @retval void */ void ComSendStr(const COM_MAP_T *ComX,uint8_t *Data, uint64_t Len) { for (uint64_t i = 0;i < Len;i++) { USART_SendData(ComX->Periph.UartId, Data[i]); while (USART_GetFlagStatus(ComX->Periph.UartId, USART_FLAG_TC) != SET); } } /** * @brief USART口发送数据 * @note void * @param ComX 串口号 * @retval 读取的数据 */ uint8_t ComReceiveChar(const COM_MAP_T *ComX) { return USART_ReceiveData(ComX->Periph.UartId); } /** * @brief 通用USART配置 * @note void * @param ComX 串口号 baud 波特率 * @retval void */ void ComStdConfig(const COM_MAP_T *ComX, uint32_t Baud) { ComInit(ComX, Baud, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No); } /** * @brief 高级串口配置 * @note void * @param ComX 串口号 baud 波特率 Data Bits 数据位 StopBits 停止位 Parity校验位 * @retval void */ void ComAdvConfig(const COM_MAP_T *ComX, uint32_t Baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity) { ComInit(ComX, Baud, DataBits, StopBits, Parity); }