?? atmelusbci.c
字號:
/*
** All rights reserved.
*
* 文件名稱:atmelusbci.c
* 文件標識:atmelusbci
* 摘 要:USB操作相應函數定義
*
* 當前版本:
* 作 者:
* 完成日期:
*
*
*/
#include "REGSND1.H"
#include "atmelusbci.h"
#define OSCclk 20//采用20M時鐘,后續的許多編程內容與此時鐘頻率有關
//設置PLL的時鐘,并得到USB工作所需要的48M時鐘
int AtmelUSBInit(unsigned char NDIV, unsigned int RDIV, unsigned char USBCD)
{
int i;
//USB 時鐘的頻率計算方法
// PLLclk=(OSCclk*(RDIV+1))/(int)(NDIV+1);
// USBclk=PLLclk/(int)(USBCD+1);
CKCON |= X2;//Set to select 6 clock periods per machine cycle即X2模式啟動
//set PLL CLK
PLLNDIV = 0x7f & NDIV;//set NDIV
PLLCON |= (0x3 & RDIV) << 6;//set RDIV
PLLRDIV = (0x3ff & RDIV) >> 2;
USBCLK = USBCD & 0x03;//設置USBCLK
PLLCON &= (~PLLRES);//Enable PLL
PLLCON |= PLLEN;
//USBCON Register
USBCON &= (~USBE);//禁止USB控制器
for (i=0; i<3000; i++);//延時
USBCON |= USBE;//使能USB控制器
return (0);
}
//設置端點的工作模式
void EpEnable(void)
{
UEPNUM = 0x00;//Ep0 as control Endpoint
UEPCONX = 0x80;
UEPNUM = 0x01;//Ep1 as Bulk-in Endpoint
UEPCONX = 0x86;
UEPNUM = 0x02;//Ep2 as Bulk-out Endpoint
UEPCONX = 0x82;
UEPRST = 0x07;//rest FIFO
UEPRST = 0x00;
UEPIEN = 0x07;//Endpoint Interrupt Enable
USBIEN |= EEOFINT;
USBADDR = FEN;//Function Enable
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -