hc32l136内部晶振使用
时间: 2024-01-12 12:03:48 浏览: 161
HC32L136是华大基础的一款32位ARM Cortex-M3内核的微控制器,它内置了多种时钟源,包括内部高速 RC 振荡器、内部低速 RC 振荡器、内部晶振等。下面是HC32L136使用内部晶振的示例代码:
```
#include "hc32l136.h"
int main(void)
{
SystemInit(); // 系统时钟初始化
M0P_SYSCTRL->CMU_CTL0_f.HCLKSEL = 0; // 选择内部晶振为HCLK时钟源
M0P_SYSCTRL->RCH_CR_f.TRIM = 0x08; // 调整内部晶振的频率
while (1)
{
// 这里可以放置需要执行的代码
}
}
```
在上述代码中,首先调用了`SystemInit()`函数,对系统时钟进行初始化。然后选择内部晶振为HCLK时钟源,通过设置`M0P_SYSCTRL->CMU_CTL0_f.HCLKSEL`的值实现。最后,使用`M0P_SYSCTRL->RCH_CR_f.TRIM`对内部晶振的频率进行调整,具体的频率值需要根据实际情况进行设置。调整后,程序进入一个死循环,可以在其中放置需要执行的代码。
需要注意的是,HC32L136的内部晶振默认频率为16MHz,如果需要更高的精度和稳定性,还是需要使用外部晶振。另外,使用内部晶振时需要对其进行频率校准,以确保系统时钟的精度。
相关问题
hc32l136内部晶振使用示例
好的,下面是一个HC32L136使用内部晶振的示例程序,供参考:
```c
#include "hc32l136.h"
int main(void)
{
// 使能内部高速RC振荡器
M0P_SYSCTRL->RCH_CR_f.TRIM = 0x08; // 调整内部晶振的频率
M0P_SYSCTRL->RCH_CR_f.STP = 0; // 开启RC高速振荡器
// 等待RC高速振荡器稳定
while (!M0P_SYSCTRL->RCH_CR_f.STABLE);
// 将RC高速振荡器输出到PLL
M0P_SYSCTRL->PLL_CTL_f.PLLSRC = 1; // PLL输入时钟源选择RCH
M0P_SYSCTRL->PLL_CTL_f.PLLOFF = 0; // 开启PLL
M0P_SYSCTRL->PLL_CTL_f.PLLOSC = 0; // 不使能PLL振荡电路
// 等待PLL稳定
while (!M0P_SYSCTRL->PLL_CTL_f.PLLSTB);
// 将PLL输出到系统时钟
M0P_SYSCTRL->CMU_CTL0_f.HCLKSEL = 0; // HCLK时钟源选择PLL
while (1)
{
// 循环执行
}
}
```
在上述代码中,首先使用`M0P_SYSCTRL->RCH_CR_f.STP`开启了内部高速RC振荡器,并等待其稳定,然后将其输出到PLL。具体的操作是,将`M0P_SYSCTRL->PLL_CTL_f.PLLSRC`设置为1,选择PLL输入时钟源为RCH,开启PLL并等待其稳定,最后将`M0P_SYSCTRL->CMU_CTL0_f.HCLKSEL`设置为0,将PLL输出设置为系统时钟源。
需要注意的是,在使用HC32L136的内部晶振时,需要进行频率调整,以确保系统时钟的精度。在上述代码中,使用了`M0P_SYSCTRL->RCH_CR_f.TRIM`对内部晶振的频率进行了调整,具体的频率值需要根据实际情况进行设置。另外,HC32L136的内部晶振默认频率为16MHz,如果需要更高的精度和稳定性,还是需要使用外部晶振。
hc32l136使用内部晶振代码
使用HC32L136内部晶振的代码如下所示:
```c
#include "hc32l136.h"
int main(void)
{
/* 使能内部晶振 */
CLK_XtalIEn(ENABLE);
/* 等待内部晶振稳定 */
while(CLK_GetClkSourceSta() != CLK_ClkStaXTH);
/* 将HSI时钟源切换到内部晶振 */
CLK_SetSysclkSrc(CLK_SYSCLKSOURCE_XTH);
/* 然后可以继续进行其他初始化操作 */
// ...
while(1)
{
// 程序主循环
}
}
```
在代码中,我们首先使能了HC32L136的内部晶振,然后等待晶振稳定。在晶振稳定之后,我们将系统时钟源切换到内部晶振。最后,我们可以继续进行其他系统初始化操作。
阅读全文