HC32l136如何使用内部晶振
时间: 2023-12-17 22:02:13 浏览: 75
HC32l136是一款单片机,其内部已经集成了晶振电路。使用内部晶振的步骤如下:
1. 配置系统时钟源为内部晶振。
```c
// 选择HSI作为系统时钟源
CLK_SetSysclkSrc(CLK_SOURCE_HSI);
// 使能内部晶振
CLK_EnableHSI();
```
2. 配置系统时钟分频器,将内部晶振频率分频得到所需的系统时钟频率。
```c
// 配置系统时钟分频器,将内部晶振频率分频得到所需的系统时钟频率
CLK_SetSysclkDiv(CLK_SYSCLK_DIV1);
```
3. 配置相关外设时钟源为系统时钟,以保证外设能够正常工作。
```c
// 配置外设时钟源为系统时钟
CLK_SetPeripheralClock(CONSOLE_UART_CLK, CLK_PERIPHERAL_CLOCK_SYSCLK);
```
注意,在使用内部晶振时需要注意以下几点:
1. 内部晶振频率相对较低,一般为8MHz左右,因此需要进行时钟分频以得到所需的系统时钟频率。
2. 内部晶振精度一般较低,可能无法满足一些高精度的应用场合,此时需要使用外部晶振。
3. 内部晶振不稳定性较外部晶振差,可能会受到温度、电压等因素的影响,因此在一些对时钟精度要求较高的应用场合,需要使用外部晶振。
相关问题
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 内部晶振的示例代码:
```c
#include "hc32l136.h"
int main(void)
{
// 1. 设置内部高速RC振荡器作为主时钟源
M0P_SYSCTRL->MOSCCR_f.MOSCEN = 0; // 禁止外部晶振
M0P_SYSCTRL->HOSCCR_f.HOSCEN = 0; // 禁止外部高速RC振荡器
M0P_SYSCTRL->MCLKSRC_f.SYSCLKSRC = 0; // 选择内部高速RC振荡器作为主时钟源
// 2. 配置内部晶振的时钟分频系数
M0P_SYSCTRL->IRCCFGR_f.IRCFREQ = 0x06; // 设置时钟分频系数为 16
// 3. 设置系统时钟分频系数
M0P_SYSCTRL->SYSCLKCR_f.SYSCLKDIV = 0x00; // 系统时钟分频系数为 1
// 4. 等待内部晶振稳定
while (!M0P_SYSCTRL->IRCRDY_f.IRC32KRDY);
// 5. 配置外设时钟
// ...
// 启动主循环
while (1)
{
// ...
}
}
```
在上面的示例代码中,首先将外部晶振和外部高速RC振荡器禁止,然后将内部高速RC振荡器设置为主时钟源,同时设置内部晶振的时钟分频系数为 16,系统时钟分频系数为 1。在等待内部晶振稳定后,可以配置外设时钟,使外设时钟与系统时钟同步。最后进入主循环。
阅读全文