gpio写完,延时不准
This commit is contained in:
+120
@@ -0,0 +1,120 @@
|
||||
#include "Bsp.h"
|
||||
|
||||
/**
|
||||
* @brief 初始化UART口外设的时钟
|
||||
* @note void
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void UartClockEnable(const COM_MAP_T *ComX)
|
||||
{
|
||||
if (ComX->Periph == USART1)
|
||||
{
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
||||
}
|
||||
if (ComX->Periph == USART2) {
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
|
||||
}
|
||||
if (ComX->Periph == USART3) {
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
|
||||
}
|
||||
if (ComX->Periph == UART4) {
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);
|
||||
}
|
||||
if (ComX->Periph == UART5) {
|
||||
RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 初始化USART口
|
||||
* @param ComId 串口号 baud 波特率 DataBits 数据位 StopBits 停止位 Parity校验位
|
||||
* @retval void
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
void UartInit(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;
|
||||
USART_Init(Comx->Periph, &UsartInitSt);
|
||||
|
||||
//配置中断
|
||||
USART_ITConfig(Comx->Periph, USART_IT_RXNE, ENABLE);
|
||||
|
||||
//启用串口
|
||||
USART_Cmd(Comx->Periph, ENABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief USART口发送数据
|
||||
* @param ComId 串口号 Data数据
|
||||
* @retval void
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
void UartSendChar(uint32_t ComId,uint8_t Data)
|
||||
{
|
||||
USART_SendData((USART_TypeDef*)ComId, Data);
|
||||
while (USART_GetFlagStatus((USART_TypeDef*)ComId, USART_FLAG_TC) != SET);
|
||||
}
|
||||
/**
|
||||
* @brief USART口发送字符串
|
||||
* @param ComId 串口号 Data数据 Len 长度
|
||||
* @retval void
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
void UartSendStr(uint32_t ComId,uint8_t* Data, uint64_t Len)
|
||||
{
|
||||
for (uint64_t i = 0;i < Len;i++)
|
||||
{
|
||||
USART_SendData((USART_TypeDef*)ComId, Data[i]);
|
||||
while (USART_GetFlagStatus((USART_TypeDef*)ComId, USART_FLAG_TC) != SET);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief USART口发送数据
|
||||
* @param ComId 串口号
|
||||
* @retval 读取的数据
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
uint8_t UartReceiveChar(uint32_t ComId)
|
||||
{
|
||||
return USART_ReceiveData((USART_TypeDef*)ComId);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 通用USART配置
|
||||
* @note void
|
||||
* @param ComId 串口号 baud 波特率
|
||||
* @retval void
|
||||
*/
|
||||
void UartStdConfig(COM_MAP_T ComX, uint32_t baud)
|
||||
{
|
||||
UartInit(&ComX, baud, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 高级串口配置
|
||||
* @note void
|
||||
* @param ComId 串口号 baud 波特率 Data Bits 数据位 StopBits 停止位 Parity校验位
|
||||
* @retval void
|
||||
*/
|
||||
void UartAdvConfig(const COM_MAP_T *ComX, uint32_t baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity)
|
||||
{
|
||||
UartInit(ComX, baud, DataBits, StopBits, Parity);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user