71 lines
2.8 KiB
C
71 lines
2.8 KiB
C
#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) ;
|
||
}
|
||
|
||
|
||
|
||
|
||
|