函数及功能介绍:
/**
* @brief 结构体公共部分初始化
* @param[in]
* @retval
* 公共部分初始化为 0 或固定值的参数初始化,其余参数另行初始化
*/
void USARTx_PublicInit(USARTx_BufferType *USARTx_Buffer)
/**
* @brief 清除 结构体的接收/发送缓存及接收/发送标志
* @param[in] USART_Buffer 接收发送数据结构体
* @param[in] mode: 初始化模式 |0x01 初始化接收缓存区
* |0x02 初始化发送缓存区
* |0x04 初始化接收长度
* |0x08 初始化发送长度
* @retval
*/
void USARTx_BufferType_ResMark(USARTx_BufferType *USARTx_Buffer,u8 mode)
/**
* @brief 中断发送串口字符
* @param[i] USARTx: USART1..3
* @param[i] USARTx_Buffer 串口结构体
* @retval
* 函数使用说明:
* 1、该函数调用在使用串口发送的函数中,把要发送的数据赋值给 USARTx_Buffer->sendbuff[] 数组,
* 把发送长度赋值给 USARTx_Buffer->send_size
* 2、串口发送的方式采用发送完成产生中断,此函数中发送一次数据,产生一个串口发送完成中断,后续数据在串口中断函数中完成
* 3、采用485传输时使 485CLK = 1(发送模式)
* 4、UART4 采用DMA发送/或者普通发送 无法使用中断
*/
bool USARTx_Protocol_Send(USART_TypeDef *USARTx,USARTx_BufferType *USARTx_Buffer)
/**
* @brief 串口数据处理函数
* @param USARTx_Buffer 串口结构体
* response :TRUE 需要应答,FALSE 不需要应答 即回应数据
* @retval
* 函数使用说明:
* 1、先在 USARTx_StructInit() 函数中根据硬件及需求初始化对应的处理函数 USARTx_Buffer->Data_Processing = &(UOCS_Data_Processing);
* 2、按照需求对 UOCS_Data_Processing() 函数进行修改
* 3、在定时器中按照需求调用本函数 最长刷新时间 可根据波特率进行计算
* T = 1s * 10bit / bps = 1000 * 10 /9600 (ms) = 1.0417 ms.
* 4、采用DMA方式时 从DMA接收数组中循环检验数据。
*/
void USARTx_Data_Processing(USART_TypeDef *USARTx,USARTx_BufferType *USARTx_Buffer,bool response)
/**
* @brief 串口中断接收处理函数
* @param USARTx x =1.2.3
* USARTx_Buffer
* @retval
* 函数说明:应用在串口中断服务函数中,用于数据接收及数据处理
*/
void USARTx_IRQ_Receive(USART_TypeDef *USARTx,USARTx_BufferType *USARTx_Buffer)
/**
* @brief 串口中断发送处理函数
* @param USARTx x =1.2.3
* USARTx_Buffer
* @retval
* 函数说明:应用在串口中断服务函数中,用于数据发送,
* 1、采用485传输时,在传输完成后设置485CLK = 0
* 2、发送数据采用发送完成中断,
*/
void USARTx_IRQ_Send(USART_TypeDef *USARTx,USARTx_BufferType *USARTx_Buffer)
/**
* @brief 串口 printf 打印函数
* @param USARTx: USART1..3
* Send_Buff 要发送的字符串地址指针
* @retval
* 函数说明:
* 1、采用DMA方式发送 需要细分各个串口对应的DMA通道
* 2、采用普通方式发送
*/
void USARTx_Printf(USART_TypeDef *USARTx,USARTx_BufferType *USARTx_Buffer,char *fmt,...)
/**
* @brief 串口 printf 打印函数 参数固定
* @param USARTx: USART1..3
* Send_Buff 要发送的字符串地址指针
* @retval
* 函数说明:
* 1、采用DMA方式发送 需要细分各个串口对应的DMA通道
* 2、采用普通方式发送
*/
void USARTx_SendBuff(USART_TypeDef *USARTx,USARTx_BufferType *USARTx_Buffer)