/*
** ###################################################################
** Processor: S32K148
** Abstract:
** Provides a system configuration function and a global variable that
** contains the system frequency. It configures the device and initializes
** the oscillator (PLL) that is part of the microcontroller device.
**
** Copyright (c) 2015 Freescale Semiconductor, Inc.
** Copyright 2016-2017 NXP
** All rights reserved.
**
** THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
** INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
** HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
** STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
** IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
** THE POSSIBILITY OF SUCH DAMAGE.
**
** ###################################################################
*/
/*!
* @file S32K148
* @brief Device specific configuration file for S32K148 (implementation file)
*
* Provides a system configuration function and a global variable that contains
* the system frequency.
*/
/**
* @page misra_violations MISRA-C:2012 violations
*
* @section [global]
* Violates MISRA 2012 Advisory Rule 8.9, An object should be defined at block
* scope if its identifier only appears in a single function.
* An object with static storage duration declared at block scope cannot be
* accessed directly from outside the block.
*
* @section [global]
* Violates MISRA 2012 Advisory Rule 11.4, A conversion should not be performed
* between a pointer to object and an integer type.
* The cast is required to initialize a pointer with an unsigned int define,
* representing an address.
*
* @section [global]
* Violates MISRA 2012 Required Rule 11.6, A cast shall not be performed
* between pointer to void and an arithmetic type.
* The cast is required to initialize a pointer with an unsigned int define,
* representing an address.
*
* @section [global]
* Violates MISRA 2012 Advisory Rule 8.7, External could be made static.
* Function is defined for usage by application code.
*
*/
#include "device_registers.h"
#include "system_S32K148.h"
#include "stdbool.h"
/* ----------------------------------------------------------------------------
-- Core clock
---------------------------------------------------------------------------- */
uint32_t SystemCoreClock = DEFAULT_SYSTEM_CLOCK;
/*FUNCTION**********************************************************************
*
* Function Name : SystemInit
* Description : Typically this function configures the oscillator that is part
* of the microcontroller device. For systems with variable clock speed it also
* updates the variable SystemCoreClock. SystemInit is called from startup_device file.
*
* Implements : SystemInit_Activity
*END**************************************************************************/
void SystemInit(void)
{
/**************************************************************************/
/* FPU ENABLE*/
/**************************************************************************/
#ifdef ENABLE_FPU
/* Enable CP10 and CP11 coprocessors */
S32_SCB->CPACR |= (S32_SCB_CPACR_CP10_MASK | S32_SCB_CPACR_CP11_MASK);
#ifdef ERRATA_E6940
/* Disable lazy context save of floating point state by clearing LSPEN bit
* Workaround for errata e6940 */
S32_SCB->FPCCR &= ~(S32_SCB_FPCCR_LSPEN_MASK);
#endif
#endif /* ENABLE_FPU */
/**************************************************************************/
/* WDOG DISABLE*/
/**************************************************************************/
#if (DISABLE_WDOG)
/* Write of the WDOG unlock key to CNT register, must be done in order to allow any modifications*/
WDOG->CNT = (uint32_t ) FEATURE_WDOG_UNLOCK_VALUE;
/* The dummy read is used in order to make sure that the WDOG registers will be configured only
* after the write of the unlock value was completed. */
(void)WDOG->CNT;
/* Initial write of WDOG configuration register:
* enables support for 32-bit refresh/unlock command write words,
* clock select from LPO, update enable, watchdog disabled */
WDOG->CS = (uint32_t ) ( (1UL << WDOG_CS_CMD32EN_SHIFT) |
(FEATURE_WDOG_CLK_FROM_LPO << WDOG_CS_CLK_SHIFT) |
(0U << WDOG_CS_EN_SHIFT) |
(1U << WDOG_CS_UPDATE_SHIFT) );
/* Configure timeout */
WDOG->TOVAL = (uint32_t )0xFFFF;
#endif /* (DISABLE_WDOG) */
/**************************************************************************/
/* Power mode protection */
/**************************************************************************/
#ifdef SYSTEM_SMC_PMPROT_VALUE
/* Power mode protection initialization */
SMC->PMPROT = SYSTEM_SMC_PMPROT_VALUE;
#endif
}
/*FUNCTION**********************************************************************
*
* Function Name : SystemCoreClockUpdate
* Description : This function must be called whenever the core clock is changed
* during program execution. It evaluates the clock register settings and calculates
* the current core clock.
*
* Implements : SystemCoreClockUpdate_Activity
*END**************************************************************************/
void SystemCoreClockUpdate(void)
{
uint32_t SCGOUTClock = 0U; /* Variable to store output clock frequency of the SCG module */
uint32_t regValue; /* Temporary variable */
uint32_t divider, prediv, multi;
bool validSystemClockSource = true;
static const uint32_t fircFreq[] = {
FEATURE_SCG_FIRC_FREQ0,
FEATURE_SCG_FIRC_FREQ1,
FEATURE_SCG_FIRC_FREQ2,
FEATURE_SCG_FIRC_FREQ3,
};
divider = ((SCG->CSR & SCG_CSR_DIVCORE_MASK) >> SCG_CSR_DIVCORE_SHIFT) + 1U;
switch ((SCG->CSR & SCG_CSR_SCS_MASK) >> SCG_CSR_SCS_SHIFT) {
case 0x1:
/* System OSC */
SCGOUTClock = CPU_XTAL_CLK_HZ;
break;
case 0x2:
/* Slow IRC */
regValue = (SCG->SIRCCFG & SCG_SIRCCFG_RANGE_MASK) >> SCG_SIRCCFG_RANGE_SHIFT;
SCGOUTClock = (regValue != 0U) ?
FEATURE_SCG_SIRC_HIGH_RANGE_FREQ : FEATURE_SCG_SIRC_LOW_RANGE_FREQ;
break;
case 0x3:
/* Fast IRC */
regValue = (SCG->FIRCCFG & SCG_FIRCCFG_RANGE_MASK) >> SCG_FIRCCFG_RANGE_SHIFT;
SCGOUTClock= fircFreq[regValue];
break;
case 0x6:
/* System PLL */
SCGOUTClock = CPU_XTAL_CLK_HZ;
prediv = ((SCG->SPLLCFG & SCG_SPLLCFG_PREDIV_MASK) >> SCG_SPLLCFG_PREDIV_SHIFT) + 1U;
multi = ((SCG->SPLLCFG & SCG_SPLLCFG_MULT_MASK) >> SCG_SPLLCFG_MULT_SHIFT) + 16U;
SCGOUTClock = SCGOUTClock * multi / (prediv * 2U);
break;
default:
validSystemClockSource = false;
break;
}
if (validSystemClockSource == true) {
SystemCoreClock = (SCGOUTClock / divider);
}
}
/*FUNCTION**********************************************************************
*
* Function Name : SystemSoftwareReset
* Description : This function is used to software reset the microcontroller.
*
* Implements : SystemSoftwareReset_Activity
*END**************************************************************************/
void SystemSoftware
没有合适的资源?快使用搜索试试~ 我知道了~
s32k148_nxp 用keil创建样板
共41个文件
h:11个
d:6个
o:4个
1星 需积分: 50 44 下载量 118 浏览量
2018-10-23
09:37:05
上传
评论 1
收藏 757KB RAR 举报
温馨提示
nxp的s32k148基于keil5上的工程创建样板,148是刚出新片子,网上基本没有keil的样板工程,我吃了回螃蟹,刚开始一直创建不了,后来跟nxp原厂沟通后,提供的demo后稍微修改。
资源推荐
资源详情
资源评论
收起资源包目录
S32K148_Demo_02.rar (41个子文件)
S32K148_Demo_01
S32K148_Demo.uvguix.pengjinrong 137KB
RTE
RTE_Components.h 332B
Device
S32K148UJxxxLQx
S32K148_256_flash_AC6.sct 5KB
s32_core_cm4.h 8KB
device_registers.h 5KB
startup_S32K148.s 43KB
system_S32K148.h 4KB
S32K148.h 902KB
system_S32K148.c 8KB
S32K148_features.h 88KB
startup.c 8KB
Objects
startup.d 1002B
S32K148_Demo_Debug.dep 4KB
S32K148_Demo.lnp 397B
startup.crf 550KB
main.crf 550KB
system_s32k148.d 1KB
system_s32k148.crf 550KB
startup.o 602KB
s32k148_256_ram_ac6.d 85B
S32K148_Demo.htm 62KB
S32K148_Demo.axf 27KB
main.d 871B
startup_s32k148.o 12KB
s32k148_256_flash_ac6.d 89B
startup_s32k148.d 75B
main.o 600KB
S32K148_Demo.build_log.htm 1KB
system_s32k148.o 605KB
S32K148_Demo.uvoptx 6KB
CMSIS
cmsis_version.h 2KB
core_cm4.h 121KB
cmsis_armcc.h 28KB
cmsis_armclang.h 55KB
cmsis_compiler.h 9KB
Source
main.c 1014B
Listings
startup_s32k148.lst 142KB
S32K148_Demo.map 63KB
s32k148_256_flash_ac6.lst 0B
s32k148_256_ram_ac6.lst 0B
S32K148_Demo.uvprojx 19KB
共 41 条
- 1
资源评论
- sailwon2018-11-08这个资料不咋地,只是编译没错,几乎没有内容,价值不高
szrong3000
- 粉丝: 1
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 软件体系结构实验项目.zip
- mmexport1715432990216.jpg
- 毕业答辩模板答辩开题学术毕业论文汇报模板
- Golang(Gin框架)+websocket 实现的多人聊天室+代码+详细文档
- 毕业答辩模板璀璨星空朦胧质感毕业论文答辩
- 毕业答辩模板纯动画论文答辩通用模板可编辑-繁花静瑜
- Apache Zeppelin 是一个让交互式数据分析变得可行的基于网页的开源框架.zip
- 介绍了工程断裂问题与材料断裂韧度 、线弹性断裂力学 、断裂韧度的实验和分析等 适于力学专业学生和非力学专业研究生、相关研究人员等
- 华为od机试题,真题,包含答案.zip
- 华为OD-java工程师机试练习.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功