?? main.c
字號:
//* File Name : main file
#include "board.h"
#include "cdc_enumerate.h"
#define MSG_SIZE 1000
extern void Usart_init ( void );
extern void AT91F_US_Put( char *buffer);
extern void Trace_Toggel_LED( unsigned int led) ;
struct _AT91S_CDC pCDC;
/*******************************************************************************
* 說明:AT91F_USB_Open函數,打開USB器件
* 參數:無
* 返回值:無
*******************************************************************************/
void AT91F_USB_Open(void) {
// Set the PLL USB Divider
AT91C_BASE_CKGR->CKGR_PLLR |= AT91C_CKGR_USBDIV_1 ; // 設置PLL時鐘
AT91C_BASE_PMC->PMC_SCER = AT91C_PMC_UDP; // 允許48MHz USB時鐘頻率
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_UDP);
AT91F_PIO_CfgOutput(AT91C_BASE_PIOA,AT91C_PIO_PA16); // 設置PIO模式,配置為輸出
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA,AT91C_PIO_PA16);// 設置上拉電阻
AT91F_CDC_Open(&pCDC, AT91C_BASE_UDP); // 通過初始化結構體打開CDC
}
/*******************************************************************************
* 說明:主函數
* 參數:無
* 返回值:無
*******************************************************************************/
int main ( void ) {
char data[MSG_SIZE];
unsigned int length;
AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24); // 允許復位,最小復位時間960 us
AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ; // 允許PIOA時鐘
AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK ) ; // PIOA配置為輸出,用于LED
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED_MASK ) ; // 熄滅LED
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 ) ; // 點亮LED1
AT91F_USB_Open(); // 初始化USB器件
while (!pCDC.IsConfigured(&pCDC)); // 等待枚舉結束
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 ) ;
Usart_init(); // UART初始化,中斷方式
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED_MASK ) ; // 點亮所有LED
while (1) { // 循環
length = pCDC.Read(&pCDC, data, MSG_SIZE);
data[length]=0;
Trace_Toggel_LED( LED1) ;
AT91F_US_Put(data);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -