U20-差异文件

/*
File Name    : yc_it.h
Author       : Yichip
Version      : V1.0
Date         : 2018/03/27
Description  : Interrupt function encapsulation.
*/

#ifndef __YC_IT_H__
#define __YC_IT_H__
#include "..\core\yc3121.h"

#define EXECUTE_SUPPLIES_TIMES     3000     //1S钟执行一次

extern unsigned int SuppliesTimes;
/**
 * @brief systick interrupt function
 */
extern void SYSTICK_IRQHandler(void);

/**
 * @brief EXTI0 interrupt function
 *
 */
void EXTI0_IRQHandler(void);

/**
 * @brief EXTI1 interrupt function
 *
 */
void EXTI1_IRQHandler(void);

/**
 * @brief EXTI2 interrupt function
 *
 */
void EXTI2_IRQHandler(void);




/**
 * @brief iic interrupt function
 */
extern void IIC_IRQHandler(void);


/**
 * @brief qspi interrupt function
 */
extern void QSPI_IRQHandler(void);


/**
 * @brief spi0 interrupt function
 */
extern void SPI0_IRQHandler(void);


/**
 * @brief spi1 interrupt function
 */
extern void SPI1_IRQHandler(void);


/**
 * @brief uart0 interrupt function
 */
extern void UART0_IRQHandler(void);


/**
 * @brief uart1 interrupt function
 */
extern void UART1_IRQHandler(void);


/**
 * @brief DMA memory copy interrupt function
 */
extern void MEMCP_IRQHandler(void);


/**
 * @brief rsa interrupt function
 */
extern void RSA_IRQHandler(void);


/**
 * @brief sci0 interrupt function
 */
extern void SCI0_IRQHandler(void);


/**
 * @brief sci1 interrupt function
 */
extern void SCI1_IRQHandler(void);


/**
 * @brief kscan interrupt function
 */
extern void KSCAN_IRQHandler(void);


/**
 * @brief timer0 interrupt function
 */
extern void TIMER0_IRQHandler(void);



/**
 * @brief timer1 interrupt function
 */
extern void TIMER1_IRQHandler(void);


/**
 * @brief timer2 interrupt function
 */
extern void TIMER2_IRQHandler(void);


/**
 * @brief timer3 interrupt function
 */
extern void TIMER3_IRQHandler(void);


/**
 * @brief timer4 interrupt function
 */
extern void TIMER4_IRQHandler(void);



/**
 * @brief timer5 interrupt function
 */
extern void TIMER5_IRQHandler(void);



/**
 * @brief sm1 interrupt function
 */
extern void SM1_IRQHandler(void);


/**
 * @brief sm4 interrupt function
 */
extern void SM4_IRQHandler(void);


/**
 * @brief sec interrupt function
 */
extern void SEC_IRQHandler(void);

/**
 * @brief msr interrupt function
 */
extern  void MSR_IRQHandler(void);
#endif   /* __YC_IT_H__ */





























/************************ (C) COPYRIGHT YICHIP *************************
 * File Name            : usb_main.c
 * Author               : YICHIP
 * Version              : V1.0.0
 * Date                 : 21-May-2019
 * Description          : USB-OTG Core layer.
 *****************************************************************************/


/* Includes ------------------------------------------------------------------*/
#include <string.h>
#include <stdio.h>
#include "usb_dcd_int.h"
#include "usbd_printer_core.h"
#include "usbd_usr.h"
#include "usbd_desc.h"
#include "misc.h"
#include "usbd_printer_vcp.h"
#include "yc_timer.h"
#include "usb_defines.h"
#include "usb_main.h"

USB_OTG_CORE_HANDLE  USB_OTG_dev;

void usb_reg_init()
{
    USB_OTG_WRITE_REG8(CORE_USB_CONFIG, 0x00);
    my_delay_ms(1);
    USB_OTG_WRITE_REG8(CORE_USB_TRIG, 0xc0);
    USB_OTG_WRITE_REG8(CORE_USB_CONFIG, 0x3c);
    USB_OTG_WRITE_REG8(CORE_USB_STATUS, 0xFF);
    USB_OTG_WRITE_REG8(CORE_USB_FIFO_EMPTY, 0xFF);
    USB_OTG_WRITE_REG8(CORE_USB_ADDR, 0x00);
    USB_OTG_WRITE_REG8(CORE_USB_INT_MASK(0), 0x70);
    USB_OTG_WRITE_REG8(CORE_USB_INT_MASK(1), 0xf0);
    USB_OTG_WRITE_REG8(CORE_USB_INT_MASK(2), 0xff);
}


void usb_main(void)
{
    enable_clock(CLKCLS_BT);
    BT_CLKPLL_EN = 0xff;
    enable_clock(CLKCLS_USB);
    SYSCTRL_HCLK_CON |= 1 << 11;
    usb_reg_init();

    enable_intr(INTR_USB);
    memset(&USB_OTG_dev, 0, sizeof(USB_OTG_dev));

    USBD_Init(&USB_OTG_dev,
#ifdef USE_USB_OTG_HS
              USB_OTG_HS_CORE_ID,
#else
              USB_OTG_FS_CORE_ID,
#endif
              &USR_desc,
              &USBD_PRINTER_cb,
              &USRD_cb);
}



//在USB中断服务函数中调用
void USB_Interrupt_Service(void)
{
    USBD_OTG_ISR_Handler(&USB_OTG_dev); //USB状态读取和设置
}

//USB数据发送 
void USB_Printer_Send(uint8_t *datas,uint16_t len)
{
	uint16_t i = 0;
	uint8_t  temp_buf[PRINTER_DATA_MAX_PACKET_SIZE];
	uint8_t  temp_len = 0;		
	
	//小于64  不拆包  大于64  拆包发送,用于测试  
	if (len <= PRINTER_DATA_MAX_PACKET_SIZE) 
	{
		DCD_EP_Tx(&USB_OTG_dev, PRINTER_IN_EP, datas, len);
		
		delay_ms(10);
		//while(0 == g_send_finish_flag);
		//g_send_finish_flag = 0;
	}
	else if(len > PRINTER_DATA_MAX_PACKET_SIZE)
	{
		//整64字节发完  发下面的 
		for(i = 0; i < (len/PRINTER_DATA_MAX_PACKET_SIZE); i++)
		{
			memcpy(temp_buf, &datas[i * PRINTER_DATA_MAX_PACKET_SIZE], PRINTER_DATA_MAX_PACKET_SIZE);
			DCD_EP_Tx(&USB_OTG_dev, PRINTER_IN_EP, temp_buf, PRINTER_DATA_MAX_PACKET_SIZE);
			
			delay_ms(10);
			//while(0 == g_send_finish_flag);
			//g_send_finish_flag = 0;
		}
		//发剩下的字节 (最后一包)
		if((len % PRINTER_DATA_MAX_PACKET_SIZE) != 0)
		{	
			temp_len = len % PRINTER_DATA_MAX_PACKET_SIZE;
			memcpy(temp_buf, &datas[len - temp_len], temp_len);
			DCD_EP_Tx(&USB_OTG_dev, PRINTER_IN_EP, temp_buf, temp_len);
			
			delay_ms(10);
			//while(0 == g_send_finish_flag);
			//g_send_finish_flag = 0;
		}
	}
}

/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值