hc32l13x SYSTEM_INIT
时间: 2023-07-21 16:20:35 浏览: 133
hc32l13x的SYSTEM_INIT函数主要用于芯片初始化,在这个函数中会对芯片的各种模块进行初始化,例如时钟、GPIO、UART、ADC、DAC等。以下是一个示例:
```c
#include "hc32l13x.h"
void SYSTEM_INIT(void)
{
// 使能内部晶振
CLK_XtalIEn();
// 设置系统时钟源为内部晶振
CLK_SetSysClkSrc(CLK_SYSCLKSOURCE_XTALI);
// 设置系统时钟分频为1
CLK_SetSysclkDiv(CLK_SYSCLK_DIV1);
// 初始化GPIO模块
GPIO_Init(GPIO_PORT_1, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_SLOW);
// 初始化UART模块
M0P_UART->SCON_f.SM = 0; // 8位数据位
M0P_UART->SCON_f.REN = 1; // 允许接收
M0P_UART->SCON_f.PM = 0; // 无校验位
M0P_UART->SCON_f.FE = 0; // 无帧错误
M0P_UART->SCON_f.RI = 0; // 接收数据标志位清零
M0P_UART->SCON_f.TI = 0; // 发送数据标志位清零
M0P_UART->BGR = 0x0037; // 波特率为9600
// 初始化ADC模块
ADC_Init(ADC_UNIT_1, ADC_CH0, ADC_RESOLUTION_12B, ADC_TRGEN_EVENT_NONE, ADC_SA_NORMAL_MODE, NULL);
// 初始化DAC模块
DAC_Init(DAC_CH_1, 0, DAC_ALIGN_RIGHT);
}
```
在以上代码中,我们首先使能了内部晶振,并将系统时钟源设置为内部晶振。然后,我们初始化了GPIO模块,将P1.0引脚设置为输出模式,并设置初始电平为低电平。接下来,我们初始化了UART模块,将波特率设置为9600,数据位数为8位,无校验位和帧错误。然后,我们初始化了ADC模块,将ADC单元设置为ADC_UNIT_1,通道选择为ADC_CH0,分辨率设置为12位,触发源设置为无,采样模式设置为普通模式,最后一个参数为中断回调函数指针,这里我们设置为NULL。最后,我们初始化了DAC模块,将DAC通道设置为DAC_CH_1,对齐方式为右对齐,初始输出值为0。
需要注意的是,hc32l13x的SYSTEM_INIT函数是由启动文件startup_hc32l13x.s中的Reset_Handler函数调用的,因此在使用SYSTEM_INIT函数之前,需要先在启动文件中配置Reset_Handler函数。
阅读全文