/** * \brief ターゲット依存部 初期化処理 * \details * sta_ker() の中から呼び出されてターゲットのハードウェアの初期化を行う。この関数の中では * PLLの初期化やペリフェラル・ピンの初期化などを行う。 */ void target_initialize(void) { /* * チップ依存部の初期化。この呼び出しは削除してはいけない。 */ chip_initialize(); /* Flash Accelerator を初期化。100MHz動作に対応 */ LPC_SC->FLASHCFG = 0x403a; /* * プロセッサクロックの初期化 */ // PLLの設定 (2 * 50 * 4MHz)/1/4 = 100MHz initPLL0( eIrc, // pllClockSource_type clkSrc, 0, // unsigned int isMainOsc20MHzMore, 1, // unsigned int N, 50, // unsigned int M, 4 // unsigned int cpuClkDiv ); /* * SIOポートの初期化 * * 以下のコードは、SIO_PORTIDの値に応じて自動的にピン・コンフィギュレーションを行うが、 * これはLPC1768の一部機能に過ぎないことに注意。LPC1768は、UART1や2の割り当て先を複数 * 種類持っている。以下のコードはそれらのうちの一つに対応しているにすぎない。必要に応じて * アプリケーション・プログラマが書き換えて使うこと。 */ #if (SIO_PORTID==1) /* Port0.2,3 ピンをUART0に割り当てる。*/ LPC_PINCON->PINSEL0 |= PINSEL_UART0_TX | PINSEL_UART0_RX; #elif (SIO_PORTID==2) /* Port2.0,1 ピンをUART1に割り当てる。*/ LPC_PINCON->PINSEL4 |= PINSEL_UART1_TX | PINSEL_UART1_RX; #elif (SIO_PORTID==3) /* Port0.10,11 ピンをUART2に割り当てる。*/ LPC_PINCON->PINSEL0 |= PINSEL_UART2_TX | PINSEL_UART2_RX; /* UART2 の電源をオンにする */ LPC_SC->PCONP |= PCUART2; #elif (SIO_PORTID==4) /* Port0.0,1 ピンをUART3に割り当てる。*/ LPC_PINCON->PINSEL0 |= PINSEL_UART3_TX | PINSEL_UART3_RX; /* UART3 の電源をオンにする */ LPC_SC->PCONP |= PCUART3; #else #error "SIO_PORTID NOT Supported" #endif /* * バナー出力用のシリアル初期化 */ target_uart_init(SIO_PORTID); }
/** * \ingroup SIOAPI * \brief シリアル・オープン * \param siopid SIOを識別する番号。1から TNUM_PORTまでの整数 * \param exinf 拡張情報。コールバックを呼ぶときに引数として渡す * \details * シリアル・ペリフェラルを初期化する。ペリフェラルはプロトコル、スピードなどの * 設定を終え、割り込み禁止状態で待機する。この関数に続いて sio_ena_cbrが * 呼び出される。 * * 引数extinfで渡される情報を処理する必要はない。この引数はそのまま * sio_irdy_sndおよび sio_irdy_rcvコールバックに渡される。 * * プロトコルは8bit, 1stopbit, parityなしに決めうちしていい。 */ SIOPCB *sio_opn_por(ID siopid, intptr_t exinf) { SIOPCB* siopcb; if (siopid > TNUM_PORT) { return NULL; } siopcb = GET_SIOPCB(siopid); siopcb->exinf = exinf; target_uart_init(siopid); return siopcb; }
void target_early_init(void) { #if WITH_DEBUG_UART target_uart_init(); #endif }