stm32_ota/ABM开发板(DTU透传APP源码)/YcOS版本/APPV4.0/HARDWARE/USB/usb.c
2024-12-17 20:03:43 +08:00

71 lines
2.8 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "usb.h"
#include <string.h>
#include <stdbool.h>
#include "sysport.h"
#include "usart.h"
#include "io.h"
/********************************************************************************
* @file usb.c
* @author 晏诚科技 Mr.Wang
* @version V1.0.0
* @date 11-Dec-2018
* @brief 提供主板串口转USB接口外设驱动
******************************************************************************
* @使用方法:
* 先调用UsbInit()对USB_COM初始化应用层通过USBSendData()函数调用USB发送
* 数据通过读取sUsbQueue帧缓冲区的数据来处理USB接收到的数据
*******************************************************************************/
/*****************************************
*驱动内部使用常变量
****************************************/
/*****************************************
*驱动可供外部使用的常变量
****************************************/
FrameQueue_s sUsbQueue ; //USB 接收数据帧数据环形缓冲区上层只需要在初始化USB后处理该缓冲区数据即可
/**************************************************************************************************
* 名 称: void UsbInit(uint32_t baudrate)
* 功能说明: 1、初始化Usb接收帧缓冲区sUsbQueue
* 5、注册Usb串口接收帧回调函数
***************************************************************************************************/
void UsbInit(uint32_t baudrate)
{
InitQueueMem(&sUsbQueue) ; //初始化串口1接收帧缓冲区sUsbQueue
UARTx_Init(USB_COM, baudrate, USART_Mode_Rx | USART_Mode_Tx, INT_RANK_1) ;//初始化串口1映射的串口USB_COM设置为收发模式中断优先级为INT_RANK_1
Uart_RegHookCallback(USB_COM, UsbRecFrameCallback) ; //注册串口1接收帧中断回调函数
}
/**************************************************************************************************
* 名 称: void Rs232RecFrameCallback(char *recvBuf, uint16_t recvLen)
* 功能说明: 当USB串口接收到数据帧时会回调此函数此函数将数据帧插入到“帧环形缓冲区”sUsbQueue中
* 应用层无需关注如何接收只需要在初始化Usb后处理sUsbQueue帧数据即可。
**************************************************************************************************/
void UsbRecFrameCallback(char *recvBuf, uint16_t recvLen)
{
if( RW_OK != InsertQueueMemData(&sUsbQueue, recvBuf, recvLen) )
{
ErrorLogPrintf("sUsbQueue溢出") ;
}
}
/****************************************************************************
* 名 称void UsbSendData(char* sendData, uint16_t dataLen)
* 功 能通过USB_COM端口输出dataLen长度的数据 sendData
* 入口参数:
* @param *sendData 输出的数据指针
* @param dataLen 输出数据的长度
****************************************************************************/
void UsbSendData(char* sendData, uint16_t dataLen)
{
UARTx_SendData(USB_COM, sendData, dataLen) ;
}