hc32l13x将内部晶振作为时钟源示例,M0P_SYSCTRL
时间: 2023-07-31 09:09:56 浏览: 277
下面是一个使用HC32L13x系列内部晶振作为时钟源的示例代码:
```c
#include "hc32l13x.h"
int main(void)
{
/* 使能内部晶振 */
M0P_SYSCTRL->XTHCR_f.XTHOFF = 0u;
/* 等待内部晶振稳定 */
while(M0P_SYSCTRL->RSTFR_f.XTALSTB != 1u);
/* 将HSI时钟源切换到内部晶振 */
M0P_SYSCTRL->SYSCTRL1_f.SYSCLKSEL = 0u;
/* 然后可以继续进行其他初始化操作 */
// ...
while(1)
{
// 程序主循环
}
}
```
在代码中,我们首先使能了HC32L13x系列的内部晶振,然后等待晶振稳定。在晶振稳定之后,我们将系统时钟源切换到内部晶振。最后,我们可以继续进行其他系统初始化操作。需要注意的是,不同型号的HC32L13x系列微控制器可能会有不同的寄存器和接口定义,因此具体的代码实现可能会略有不同。
相关问题
hc32l13x将内部晶振作为时钟源示例,M0P_SYSCTRL->RCL_CR_f.STARTUP
HC32L13x的内部晶振启动后需要一定时间才能稳定。为了确保内部晶振稳定后再将其作为系统时钟源,需要使用 `M0P_SYSCTRL->RCL_CR_f.STARTUP` 寄存器设置内部晶振启动时间。下面是一个使用HC32L13x系列内部晶振作为时钟源并设置启动时间的示例代码:
```c
#include "hc32l13x.h"
int main(void)
{
/* 使能内部晶振 */
M0P_SYSCTRL->RCL_CR_f.STARTUP = 0x3u; // 设置内部晶振启动时间为3ms
M0P_SYSCTRL->RCL_CR_f.TRIM = 0x0u; // 内部晶振校准值设置为0
M0P_SYSCTRL->RCL_CR_f.EN = 1u; // 使能内部晶振
while(M0P_SYSCTRL->RCL_CR_f.STABLE != 1u); // 等待内部晶振稳定
/* 将内部晶振作为系统时钟源 */
M0P_SYSCTRL->SYSCTRL1_f.SYSCLKSEL = 0u; // 将HSI时钟源切换到内部晶振
/* 然后可以继续进行其他初始化操作 */
// ...
while(1)
{
// 程序主循环
}
}
```
在上面的代码中,我们首先使用 `M0P_SYSCTRL->RCL_CR_f.STARTUP` 寄存器设置内部晶振启动时间为3ms,然后将内部晶振校准值设置为0,并使能内部晶振。在内部晶振稳定之后,我们将系统时钟源切换到内部晶振。最后,我们可以继续进行其他系统初始化操作。需要注意的是,不同型号的HC32L13x系列微控制器可能会有不同的寄存器和接口定义,因此具体的代码实现可能会略有不同。
hc32l13x将内部晶振作为时钟源示例,M0P_SYSCTRL->RCL_CR_f结构体成员只有SATRUP、TRIM、STABLE、RSV、RESERVED13
对于HC32L13x来说,M0P_SYSCTRL->RCL_CR_f结构体成员只有SATRUP、TRIM、STABLE、RSV、RESERVED13,这是因为HC32L13x的内部晶振是一个RC振荡器,而不是晶体振荡器。因此,在HC32L13x中,内部RC振荡器的启动和稳定性由这些寄存器来控制。SATRUP位用于启动RC振荡器,TRIM位用于校准RC振荡器的频率,STABLE位用于检测RC振荡器的稳定性。RSV和RESERVED13位为保留位,不可用。需要注意的是,由于RC振荡器的频率受环境温度、电压等因素的影响,因此RC振荡器的精度和稳定性可能不如晶体振荡器。
阅读全文