low_level_init.c
来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 62 行
C
62 行
/*************************************************************************
*
* Used with ICCARM and AARM.
*
* (c) Copyright IAR Systems 2007
*
* File name : low_level_init.c
* Description : S3F4A0K low level init module
*
* History :
* 1. Date : August 1, 2007
* Author : Stanimir Bonev
* Description : Create
*
* $Revision: 18083 $
**************************************************************************/
#include "arm_comm.h"
#include "board.h"
#include "gic.h"
#include "vectors.h"
/*************************************************************************
* Function Name: __low_level_init
* Parameters: none
* Return: int
*
* Description: S3F4A0K low level init
*
*************************************************************************/
int __low_level_init (void)
{
// Clock init
// set clock to Master oscillator
CM_CSR = 1;
CM_SELR_bit.CMCLK_SEL = 0;
while(CM_SR_bit.STABLE);
// Set master clock divider <= 40MHz
CM_MDIVR = (0xACDC << 16) | ((CLK_DIV-1) << 10) | ((LOW_CLK_DIV-1) << 13) | (MCLK_DIV-1);
// Init PLL
CM_PDPR = (0x7AB2UL<<16) | (PRE_DIV_PLL << 10) |(POST_DIV_PLL << 8) | MUL_PLL;
// Set PCLK divider <= 20MHz
CM_DIVBR_bit.PCLK1DIV = PCLK_DIV-1;
// Init Flash wait states
#ifndef RAM_DEBUG
IFC_MR =(0xAC << 8) | (1UL << 7) | ((CORE_CLK_FREQ > 20MHZ)?1<<2:0);
#endif // RAM_DEBUG
// set clock to PLL
CM_CSR = 1;
CM_SELR = (0xD0C9UL<<16) | 1;
while(CM_SR_bit.STABLE);
#ifdef DFC_ENA
// DFC init
DFC_ECR = 2;
DFC_MR = 0x80000000 | (0x78 << 8) | (1UL<<7);
#endif
// GIC init
GIC_Init((void *)DefaultIrqHandler,(void *)SpuriousHandler);
return(1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?