MCAL-MCU
1.概述
https://blog.csdn.net/qq_43629659/article/details/133050046
MCU模块提供了访问内核相关功能的API,如时钟配置、初始化RAM、设置低功耗模式、提供复位接口等等。
1.1 时钟
上图左边位输入时钟源,右侧为输出时钟,需要选择合适的时钟源并通过倍频,分频来得到需要的时钟源。
S32K14X时钟源:
1.2 运行模式
各运行模式下的时钟源及配置
1.3 时钟计算
如果选用CORE_CLK为80M,使用系统FIRC达不到,需要使用sosc通过SPLL倍频。
SPLL
SPLL_CLK = SOSC(8MHz)* 40(PLL倍频)/ 2(PLL分频)= 160MHz.
CORE_CLK \ SYS_BUS = SPLL_CLK / 2(DIVCORE分频)= 80MHz.
BUS_CLK = SPLL_CLK / 2(DIVCORE分频)/ 2 (DIVBUS分频)= 40MHz.
FLASH_CLK = SPLL_CLK / 2(DIVCORE分频)/ 4(DIVFLASH分频)= 20MHz.
通过上面的公式可以看到我们通过PLL倍频后,时钟频率达到了160MHz。后续再通过分频达到我们想要的频率。从上面公式可以得到配置参数:
1.4 复位源
系统的复位信息可以通过读取SSRS寄存器来获取。
1.5 复位
(AIRCR)Application Interrupt and Reset Control Register
Mcu_CortexM4.c FUNC(void, MCU_CODE) Mcu_CM4_SystemReset(void) { ASM_KEYWORD(" dsb"); /* All memory accesses have to be completed before reset */ /** @violates @ref Mcu_CortexM4_c_REF_4 Required Rule 11.1, Conversion from integer to pointer */ /** @violates @ref Mcu_CortexM4_c_REF_5 The cast is used to access memory mapped registers.*/ REG_WRITE32( CM4_AIRCR_BASEADDR, (uint32)(CM4_AIRCR_VECTKEY(0x5FAU) | (REG_READ32(CM4_AIRCR_BASEADDR) & CM4_AIRCR_PRIGROUP_MASK) | CM4_AIRCR_SYSRESETREQ_MASK )); ASM_KEYWORD(" dsb"); /* All memory accesses have to be completed */ }
2. API
3. 配置
本文作者:caseyzz
本文链接:https://www.cnblogs.com/caseyzq/p/18008506
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战