hc32l13x使用内部晶振示例
时间: 2023-07-30 10:10:47 浏览: 95
以下是使用hc32l13x芯片内部晶振的示例代码:
```c
#include "hc32l13x.h"
int main(void)
{
// 使能内部晶振
CLK_XtalIEn();
// 设置系统时钟源为内部晶振
CLK_SetSysClkSrc(CLK_SYSCLKSOURCE_XTALI);
// 设置系统时钟分频为1
CLK_SetSysclkDiv(CLK_SYSCLK_DIV1);
// 进行其他初始化操作
while(1)
{
// 主程序循环
}
}
```
在以上代码中,我们通过调用`CLK_XtalIEn()`函数使能了内部晶振,并通过`CLK_SetSysClkSrc()`函数将系统时钟源设置为内部晶振。最后,通过调用`CLK_SetSysclkDiv()`函数将系统时钟分频设置为1,以确保系统时钟频率与内部晶振频率相同。在程序的主循环中进行其他初始化操作。
相关问题
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`。
阅读全文