94 lines
2.6 KiB
C
94 lines
2.6 KiB
C
#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);
|
|
} |