HC32l136如何使用内部晶振
时间: 2023-12-17 13:02:14 浏览: 24
HC32L136芯片内部集成了一个8MHz的RC振荡器,可以直接用来作为系统时钟源。如果需要更高的精度,可以使用HC32L136芯片内部的晶体振荡器。
使用HC32L136内部晶振的步骤如下:
1. 配置内部晶振的时钟源
通过设置CMU_CKSWR寄存器的HCLKSEL位,选择内部晶振作为HCLK的时钟源。具体操作方式如下:
```c
/* 选择内部晶振作为HCLK的时钟源 */
CMU->CKSWR = (CMU->CKSWR & ~CMU_CKSWR_HCLKSEL) | CMU_CKSWR_HCLKSEL_IRC8M;
```
2. 配置内部晶振的频率
通过设置CMU_HRCR寄存器的HRCF位,可以选择内部晶振的频率。HC32L136内部晶振支持4MHz、8MHz、16MHz和32MHz四种不同的频率。具体操作方式如下:
```c
/* 选择8MHz的内部晶振 */
CMU->HRCR = (CMU->HRCR & ~CMU_HRCR_HRCF) | CMU_HRCR_HRCF_8M;
```
3. 等待内部晶振稳定
内部晶振启动需要一定的时间,需要等待晶振稳定后才能开始使用。可以通过查询CMU_OSCSTB寄存器的HRCSTB位来确定内部晶振是否已经稳定。具体操作方式如下:
```c
/* 等待内部晶振稳定 */
while (!(CMU->OSCSTBSR & CMU_OSCSTBSR_HRCSTB));
```
完成以上三个步骤后,就可以使用HC32L136的内部晶振作为系统时钟源了。
相关问题
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的内部晶振,然后等待晶振稳定。在晶振稳定之后,我们将系统时钟源切换到内部晶振。最后,我们可以继续进行其他系统初始化操作。
hc32l136内部晶振使用
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,如果需要更高的精度和稳定性,还是需要使用外部晶振。另外,使用内部晶振时需要对其进行频率校准,以确保系统时钟的精度。