hc32l13x启用内部晶振
时间: 2024-01-12 17:04:11 浏览: 114
hc32l13x启用内部晶振的步骤如下:
1. 设置内部高速RC振荡器(HRC)作为主时钟源。在时钟控制寄存器 RCC->CFGR 中配置 MCLKSRC 位为 0,表示使用 HRC 作为主时钟源。
2. 配置内部晶振的时钟分频系数。在时钟控制寄存器 RCC->CR 中配置 IRCF 位,表示内部晶振的时钟分频系数。根据实际需求设置合适的时钟分频系数。
3. 设置系统时钟分频系数。在时钟控制寄存器 RCC->CFGR 中配置 SYSDIV 位,表示系统时钟的分频系数。根据实际需求设置合适的系统时钟分频系数。
4. 等待内部晶振稳定。在启用内部晶振后,需要等待一段时间,让内部晶振稳定。可以通过检查时钟控制寄存器 RCC->CR 中的 IRCSTB 位来确认内部晶振已经稳定。
5. 配置外设时钟。根据实际需求配置外设时钟,使外设时钟与系统时钟同步。
需要注意的是,在使用内部晶振时,由于其精度可能存在一定的偏差,因此在实际应用中,可能需要进行一些校准和调整。
相关问题
hc32l13x启用内部晶振示例
以下是一个启用 hc32l13x 内部晶振的示例代码:
```c
#include "hc32l13x.h"
int main(void)
{
// 1. 设置内部高速RC振荡器作为主时钟源
M0P_SYSCTRL->MCLKSRC_f.SYSCLKSRC = 0;
// 2. 配置内部晶振的时钟分频系数
M0P_SYSCTRL->IRCF_f.IRCF = 0x03; // 时钟分频系数为 8
// 3. 设置系统时钟分频系数
M0P_SYSCTRL->CFGR_f.SYSDIV = 0x00; // 系统时钟分频系数为 1
// 4. 等待内部晶振稳定
while (!M0P_SYSCTRL->CR_f.IRCSTB);
// 5. 配置外设时钟
// ...
// 启动主循环
while (1)
{
// ...
}
}
```
在上面的示例代码中,首先将内部高速RC振荡器设置为主时钟源,然后将内部晶振的时钟分频系数设置为 8,系统时钟分频系数设置为 1。在等待内部晶振稳定后,可以配置外设时钟,使外设时钟与系统时钟同步。最后进入主循环。
hc32l13x启用内部晶振示例,开启串口打印
启用 HC32L13X 内部晶振并开启串口打印的示例代码如下:
```c
#include "hc32l13x.h"
#include "stdio.h"
int main(void)
{
/* 使能内部高速时钟 */
CLK_HRCInit(CLK_HRC_ON, CLK_HRCFREQ_16M);
/* 配置系统时钟为内部高速时钟 */
CLK_SetSysclkDiv(CLK_SYSCLKSOURCE_HRC, CLK_SYSCLKDIV_1);
/* 使能GPIOA时钟 */
CLK_EnableClock(CLK_CLK_GPIA);
/* 配置PA14为UART0的TX引脚 */
GPIO_SetFunc(GPIOA, GPIO_PIN_14, GPIO_FUNC_5_UART0_TXD, PIN_SUBFUNC_DISABLE);
/* 使能UART0时钟 */
CLK_EnableClock(CLK_CLK_UART0);
/* 配置UART0 */
stc_uart_init_t stcUartInit;
stcUartInit.u32Baudrate = 115200;
stcUartInit.u32SmplPt = UART_SPLP_16;
stcUartInit.u32StopBit = UART_STOP_BIT_1;
stcUartInit.u32CharSize = UART_CHAR_SIZE_8BIT;
stcUartInit.u32Parity = UART_PARITY_NONE;
stcUartInit.u32StartBit = UART_START_BIT_FALLING;
UART_Init(UART0, &stcUartInit);
while (1)
{
/* 打印一条消息 */
printf("Hello, world!\n");
/* 延时一段时间 */
for (uint32_t i = 0; i < 1000000; i++);
}
}
```
在上述代码中,我们首先启用了内部高速时钟,并将系统时钟源设置为内部高速时钟。然后我们使用 `CLK_EnableClock(CLK_CLK_GPIA)` 和 `GPIO_SetFunc(GPIOA, GPIO_PIN_14, GPIO_FUNC_5_UART0_TXD, PIN_SUBFUNC_DISABLE)` 函数配置 PA14 为 UART0 的 TX 引脚。
接着,我们启用了 UART0 时钟,并使用 `UART_Init` 函数配置 UART0,设置波特率为 115200,采样率为 16,停止位为 1,数据位为 8,无校验位,起始位为下降沿。
最后,我们循环执行,在每次循环中打印一条消息,并延时一段时间。我们使用标准库函数 `printf` 来打印消息,这需要在头文件中包含 `stdio.h`。
阅读全文