hc32l13启用内部晶振示例,开启串口打印,Sysctrl_ClkInit
时间: 2024-02-28 14:57:00 浏览: 154
好的,以下是您需要的代码示例:
```c
#include "hc32l13x.h"
#include "stdio.h"
#define USART_CH M4_USART1
void Sysctrl_ClkInit(void);
void Usart_IoMuxInit(void);
void Usart_Config(void);
int main(void)
{
Sysctrl_ClkInit(); // 系统时钟初始化
Usart_IoMuxInit(); // 串口引脚初始化
Usart_Config(); // 串口配置
while (1)
{
printf("Hello World!\r\n"); // 串口打印
}
}
/**
* @brief 系统时钟初始化
* @param None
* @retval None
*/
void Sysctrl_ClkInit(void)
{
stc_sysctrl_clk_cfg_t stcCfg;
/* 使能内部晶振 */
CLK_HsawcCmd(Enable);
/* 配置系统PLL */
CLK_PLLInit(&PLL_InitStruct);
/* 选择PLL作为系统时钟 */
CLK_SetSysclkSrc(CLKSysSrcPll);
/* 等待PLL稳定 */
CLK_WaitClockSettle(CLK_ClkSourcePll);
/* 配置HCLK时钟分频 */
stcCfg.u8HClkDiv = SysctrlHclkDiv1;
/* 配置PCLK时钟分频 */
stcCfg.u8PClkDiv = SysctrlPclkDiv1;
/* 配置系统时钟源HCLK */
stcCfg.u8SysclkSrc = SysctrlSysClkSrcHclk;
/* 配置系统时钟分频 */
stcCfg.u8SysclkDiv = SysctrlSysclkDiv1;
/* 系统时钟初始化 */
Sysctrl_ClkInit(&stcCfg);
}
/**
* @brief 串口引脚初始化
* @param None
* @retval None
*/
void Usart_IoMuxInit(void)
{
/* 使能GPIO外设时钟 */
CLK_FcgPeriphClockCmd(CLK_FCG_GPIO, Enable);
/* 配置PA10为USART1_RXD */
GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_10, GPIO_FUNC_5_USART);
/* 配置PA9为USART1_TXD */
GPIO_SetFunc(GPIO_PORT_A, GPIO_PIN_9, GPIO_FUNC_5_USART);
}
/**
* @brief 串口配置
* @param None
* @retval None
*/
void Usart_Config(void)
{
stc_usart_uart_init_t stcInit;
/* 使能USART1外设时钟 */
CLK_FcgPeriphClockCmd(CLK_FCG_UART1, Enable);
/* 串口初始化 */
USART_UartStructInit(&stcInit);
stcInit.u32Baudrate = 115200;
USART_UartInit(USART_CH, &stcInit);
/* 使能串口发送和接收功能 */
USART_FuncCmd(USART_CH, (USART_RX | USART_TX), Enable);
}
```
这段代码会初始化系统时钟,开启内部晶振,配置串口引脚,并且使用串口打印 "Hello World!"。如果您需要修改串口波特率等配置,可以修改 `Usart_Config()` 函数的参数。
阅读全文