main.c

来自「自己写的一个基于kb9202开发板的bootloader」· C语言 代码 · 共 58 行

C
58
字号
#include "at91rm9200.h"#include "uart.h"#include "xmodem.h"#include "network.h"#include "cmd.h"inline void tc_init(){	tc_reg_p tc0 = (tc_reg_s *)TC0_BASE;	tc0->tcc[0].tc_ccr = 1<<TC_CLKDIS;	tc0->tcc[0].tc_rc = 0xc000;				//288k/48k=6	tc0->tcc[0].tc_cmr = (TIMER_CLOCK4) | (TC_CPCTRG);		//clock=36M/128=288k	tc0->tcc[0].tc_ier = 1<<TC_CPCS;}inline void pmc_init(){	pmc_reg_p pmc  = (pmc_reg_s *)PMC_BASE;/* pll configuration */	pmc->ckgr_pllar = 0x20473f05;	//diva=5, mula=72, pllacount=63, the plla out = 10/5*72=144MHz	while( !( pmc->pmc_sr&(1<<1) ) );	pmc->pmc_mckr = 0x106;			//prescale=2, pck=144/2=72MHz. mdiv=2, mck=72/2=36MHz	while( !( pmc->pmc_sr&(1<<3) ) );	pmc->pmc_pcer = 1<<ID_TC0;		//enable the clock for tc0//	pmc->pmc_pcer = (1<<ID_PIOA) || (1<<ID_PIOB) || (1<<ID_PIOC);	//enable the clock for pioa,b,c}inline void aic_init(){	aic_reg_p aic = (aic_reg_s *)AIC_BASE;	aic->aic_idcr = 1<<ID_TC0;//	aic->aic_smr[ID_TC0] = ;	aic->aic_svr[ID_TC0] = (unsigned)int_tc;	aic->aic_iccr = 1<<ID_TC0;	aic->aic_iecr = 1<<ID_TC0;}inline void led_init(){	int value;	pio_reg_p pioc = (pio_reg_s *)PIOC_BASE;	value = LED1 | LED2 | LED3;	pioc->pio_odr &= ~value;	pioc->pio_oer |= value;	pioc->pio_pdr &= ~value;	pioc->pio_per |= value;	pioc->pio_owdr &= ~value;	pioc->pio_ower =  value;}void reset(){	pmc_init();	led_init();	dbgu_init();	tc_init();	aic_init();	emac_init();	arp_test();	cmd_loop();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?