simplegui/Transplant/MiniDevCore/BSP/src/usart.c
Meco Man 9ab116625b 代码格式整理
将tab键替换为空格
删除每行末尾无用的空格

# Conflicts:
#	DemoProc/src/DemoProc.c
#	GUI/inc/SGUI_Basic.h
#	GUI/inc/SGUI_Typedef.h
#	GUI/src/SGUI_Basic.c
#	GUI/src/SGUI_Curve.c
#	GUI/src/SGUI_Text.c
2022-10-26 15:20:16 +08:00

85 lines
4.1 KiB
C

#include "usart.h"
#define USART_REV_INT_CBPF_DEFINE(PORT, INIT) static USART_INT_FP PORT##_INIT_CALLBACK = (INIT)
#define USART_REV_INT_CFG_DEFINE(PORT) void PORT##_ConfigReceiveInterrupt(USART_INT_FP pfCallBack, int iPreemptionPriority, int SubPriority)\
{\
NVIC_InitTypeDef NVIC_InitStructure;\
NVIC_InitStructure.NVIC_IRQChannel = PORT##_IRQn;\
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=iPreemptionPriority;\
NVIC_InitStructure.NVIC_IRQChannelSubPriority = SubPriority;\
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;\
NVIC_Init(&NVIC_InitStructure);\
PORT##_INIT_CALLBACK = pfCallBack;\
}
#define USART_REV_INT_SRV_DEFINE(PORT) void PORT##_IRQHandler(void)\
{\
uint8_t uiReg;\
if(USART_GetITStatus(PORT, USART_IT_IDLE) == SET)\
{\
if(NULL != PORT##_INIT_CALLBACK)\
{\
PORT##_INIT_CALLBACK(USART_INT_REASON_IDLE, 0x00);\
}\
uiReg = PORT->SR;\
uiReg = PORT->DR;\
(void)uiReg;\
}\
if(USART_GetITStatus(PORT, USART_IT_RXNE) == SET)\
{\
if(NULL != PORT##_INIT_CALLBACK)\
{\
PORT##_INIT_CALLBACK(USART_INT_REASON_REV, USART_ReceiveData(PORT));\
}\
}\
}\
USART_REV_INT_CBPF_DEFINE(USART1, NULL);
USART_REV_INT_CFG_DEFINE(USART1);
USART_REV_INT_SRV_DEFINE(USART1);
USART_REV_INT_CBPF_DEFINE(USART2, NULL);
USART_REV_INT_CFG_DEFINE(USART2);
USART_REV_INT_SRV_DEFINE(USART2)
void USART_Initialize(USART_TypeDef* pstUSARTx, uint32_t Baudrate)
{
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = Baudrate;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(pstUSARTx, &USART_InitStructure);
USART_Cmd(pstUSARTx, ENABLE);
USART_ClearFlag(pstUSARTx, USART_FLAG_TXE);
}
void USART_SendByte(USART_TypeDef* pstUSARTx, uint16_t uiByte)
{
USART_ClearFlag(pstUSARTx,USART_FLAG_TC);
/* Send data. */
USART_SendData(pstUSARTx, uiByte);
/* Wait for send complete. */
while(USART_GetFlagStatus(pstUSARTx, USART_FLAG_TC) != SET);
}
void USART_ActiveInterrupt(USART_TypeDef* pstUSARTx, bool bEnable)
{
USART_Cmd(pstUSARTx, DISABLE);
if(true == bEnable)
{
USART_ITConfig(pstUSARTx, USART_IT_RXNE, ENABLE);
USART_ITConfig(pstUSARTx, USART_IT_IDLE, ENABLE);
}
else
{
USART_ITConfig(pstUSARTx, USART_IT_RXNE, DISABLE);
USART_ITConfig(pstUSARTx, USART_IT_IDLE, DISABLE);
}
USART_Cmd(pstUSARTx, ENABLE);
}