?? sysinit.c
字號:
/*
* File: sysinit.c
* Purpose: Kinetis Configuration
* Initializes processor to a default state
*
* Notes:
*
*/
#include "common.h"
#include "sysinit.h"
#include "uart.h"
/********************************************************************/
/* 實際系統時鐘頻率 */
int core_clk_khz;
int core_clk_mhz;
int periph_clk_khz;
/********************************************************************/
void sysinit (void)
{
/*
* 使能所有端口的始終. 為了配置引腳復用則必須使能這里, 所以大多數代碼需要配置這些.
*/
SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK
| SIM_SCGC5_PORTB_MASK
| SIM_SCGC5_PORTC_MASK
| SIM_SCGC5_PORTD_MASK
| SIM_SCGC5_PORTE_MASK );
/* 提升系統時鐘 */
core_clk_mhz = LPLD_PLL_Setup(CORE_CLK_MHZ);
/*
* 用pll_init函數的返回值來定義變量:core_clk_khz和periph_clk_khz(以kHz為單位)
* 這些變量將在其他功能上
*/
core_clk_khz = core_clk_mhz * 1000;
periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);
/*
*出于仿真的目的, 使能追蹤時鐘 and/or FB_CLK 來監視時鐘并確定PLL是否為我們期待的頻率
*/
trace_clk_init();
fb_clk_init();
/* 使能選中的 UART */
if (TERM_PORT == UART3_BASE_PTR)
{
/* 使能 PTC17 引腳的 UART3_TXD 功能 */
PORTC_PCR17 = PORT_PCR_MUX(0x3); // 該引腳的 功能3 是 UART
/* 使能 PTC16 引腳的 UART3_RXD 功能 */
PORTC_PCR16 = PORT_PCR_MUX(0x3); // 該引腳的 功能3 是 UART
}
if (TERM_PORT == UART5_BASE_PTR)
{
/* 使能 PTE8 引腳的 UART3_TXD 功能 */
PORTE_PCR8 = PORT_PCR_MUX(0x3); // 該引腳的 功能3 是 UART
/* 使能 PTE9 引腳的 UART3_RXD 功能 */
PORTE_PCR9 = PORT_PCR_MUX(0x3); // 該引腳的 功能3 是 UART
}
/* UART0 and UART1 由 core clock 提供時鐘源, 但是其他所有 UARTs 由
* peripheral clock 提供時鐘源. 所以要在這里決定用哪個時鐘作為 uart_init 的參數.
*/
if ((TERM_PORT == UART0_BASE_PTR) | (TERM_PORT == UART1_BASE_PTR))
uart_init (TERM_PORT, core_clk_khz, TERMINAL_BAUD);
else
uart_init (TERM_PORT, periph_clk_khz, TERMINAL_BAUD);
#if(defined(K60_CARD_UART_DISP))
// 打印系統頻率
printf("Core Clock:%dMHz!\r\n", core_clk_mhz);
printf("Bus Clock:%dkHz!", periph_clk_khz);
#endif
}
/********************************************************************/
void trace_clk_init(void)
{
/* Set the trace clock to the core clock frequency */
SIM_SOPT2 |= SIM_SOPT2_TRACECLKSEL_MASK;
/* Enable the TRACE_CLKOUT pin function on PTA6 (alt7 function) */
PORTA_PCR6 = ( PORT_PCR_MUX(0x7));
}
/********************************************************************/
void fb_clk_init(void)
{
/* Enable the clock to the FlexBus module */
SIM_SCGC7 |= SIM_SCGC7_FLEXBUS_MASK;
/* Enable the FB_CLKOUT function on PTC3 (alt5 function) */
PORTC_PCR3 = ( PORT_PCR_MUX(0x5));
}
/********************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -