S32K142时钟配置
时间: 2023-07-04 22:19:01 浏览: 176
S32K142 KEIL 串口程序可以实现发送和接收
S32K142 的时钟配置需要经过以下步骤:
1. 配置系统时钟,包括主时钟源、PLL 和分频器等。
2. 配置各个模块的时钟源和分频器,包括总线时钟、外设时钟等。
3. 可选地,配置时钟输出和时钟监测模块。
下面是一个简单的代码示例,展示了如何配置 S32K142 的时钟:
```c
#include "S32K142.h"
void CLOCK_Init(void)
{
// 配置主时钟源和 PLL
SCG->FIRCCSR = SCG_FIRCCSR_FIRCEN_MASK; // 启用内部快速时钟
SCG->SOSCCSR = SCG_SOSCCSR_SOSCEN_MASK; // 启用外部晶振
while (!(SCG->SOSCCSR & SCG_SOSCCSR_SOSCVLD_MASK)); // 等待外部晶振稳定
SCG->SPLLCFG = SCG_SPLLCFG_MULT(24); // PLL 输入时钟为外部晶振,倍频系数为 24
SCG->SPLLCFG |= SCG_SPLLCFG_PREDIV(0); // PLL 输入时钟预分频器为 0
SCG->SPLLCSR = SCG_SPLLCSR_SPLLEN_MASK; // 启用 PLL
while (!(SCG->SPLLCSR & SCG_SPLLCSR_SPLLVLD_MASK)); // 等待 PLL 锁定
SCG->RCCR = SCG_RCCR_SCS(6) | SCG_RCCR_DIVCORE(0) | SCG_RCCR_DIVBUS(1) | SCG_RCCR_DIVSLOW(2); // 选择 PLL 作为主时钟源,核时钟不分频,总线时钟分频为 2,慢速时钟分频为 4
// 配置模块时钟源和分频器
SCG->FCCFG = SCG_FCCFG_DIV(2); // Flash 时钟分频为 2
SCG->SIRCCSR = SCG_SIRCCSR_SIRCEN_MASK; // 启用内部慢速时钟
while (!(SCG->SIRCCSR & SCG_SIRCCSR_SIRCVLD_MASK)); // 等待内部慢速时钟稳定
SIM->CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0) | SIM_CLKDIV1_OUTDIV2(1) | SIM_CLKDIV1_OUTDIV3(2) | SIM_CLKDIV1_OUTDIV4(3); // 分别设置各个总线时钟分频系数
// 可选地,配置时钟输出和时钟监测模块
// ...
}
int main(void)
{
// 初始化时钟
CLOCK_Init();
while (1)
{
// 可在此处进行其他操作
}
}
```
在上面的示例代码中,我们启用了内部快速时钟和外部晶振,然后使用 PLL 将外部晶振的时钟倍频为 24 倍,并将其作为主时钟源。接着,我们将总线时钟分频为 2,慢速时钟分频为 4。最后,我们配置了 Flash 时钟分频和各个总线时钟的分频系数。
阅读全文