HC32L021测评

分享作者:15623237806
评测品牌:小华半导体
评测型号:TL-HC32L021-Mini
发布时间:2026-01-12 13:10:26
2
概要
这篇文章主要介绍HC32L021-Mini开发板的资源分布,并使用这块开发板生成个16KHz的PWM
开源口碑分享内容

一、介绍

这篇文章主要介绍HC32L021-Mini开发板的资源分布,并使用这块开发板生成个16KHz的PWM,因为我现在的实际项目大部分都是控制电机,频率都是16KHz的,这个是在iCEasy商城免费申请的。

二、整体资源分布

● 48MHz Cortex-M0+  32位CPU平台

● HC32L021系列具有灵活的功耗管理系统:

– 0.65μA@3V深度休眠模式:所有时钟关闭,上电复位有效,IO状态保持,IO中断有效,所有寄存器、RAM和CPU数据保存状态时的功耗

– 45μA/MHz@3V@48MHz工作模式:CPU运行,外设关闭,从FLASH运行程序

● 64K字节FLASH存储器,具有擦写保护功能,支持ISP、ICP、IAP,4级安全保护

● 6K字节RAM存储器

● 通用I/O管脚

(17IO/20pin, 10IO/14pin)

– 部分IO支持滤波

● 时钟、晶振

– 内部高速时钟RC48M:4/6/32/48MHz

– 内部低速时钟RCL:32.768/38.4kHz

– 外部低速晶振XTL:32.768kHz

– 支持外部时钟源输入

● 定时器/计数器

– 2个复合定时器CTIM,每个CTIM可配置为1个16位通用定时器GTIM或3个16位基本定时器BTIM:作为通用定时器时支持4通道捕获比较,4通道PWM输出;作为基本定时器时,每个定时器支持两路翻转输出

– 1个高级16位定时器ATIM3,支持3相带死区互补的PWM输出

– 1个独立看门狗电路,内部低速时钟提供IWDT计数

– 1个时钟校准模块CTRIM,支持超低功耗定时功能,支持最大65536s超长定时和自动唤醒,支持内部时钟实时校准功能

– 1个RTC实时日历时钟计数器,支持最高0.06ppm补偿精度

– 1个CM0+内置24位SysTick定时器

● 通讯接口

– 2路LPUART通讯接口

– 1路SPI标准通讯接口

– 1路I2C高速通讯接口

● 1路TRNG:64bit随机数发生器

● 全球唯一10字节ID号

● 集成1个12位1Msps采样的高速高精度SAR ADC

● 2路电压比较器VC,可配置64阶比较电压,可配置12档滤波

● 集成1路低电压侦测器LVD,可配置16阶比较电平,可配置12档滤波,可监控端口电压以及电源电压

● SWD调试解决方案,提供全功能调试器

● 工作条件:-40~105℃,1.8~5.5V

● 封装形式:QFN20,TSSOP20,QFN14


我使用的是TSSOP20封装的

这个芯片的资源可以在小华半导体的官网上找到,有数据手册,参考手册原理图


三、工程测试

我使用的是Keil开发,所以在写程序之前需要安装芯片支持包,同样还是在小华官网下载


安装好后打开例程

选择example,找到gpio例程,打开gpio_output例程

打开之后编译一下,例程给的led闪烁程序是PA0端口的,我们的开发板led接在PA6上面,所以需要把初始化引脚和设置高低电平引脚改一下

/**
 * @brief  Main function
 * @retval int32_t return value, if needed
 */
int32_t main(void)
{
    GpioConfig(); /* LED端口初始化 */
 
    while (1)
    {
        GPIO_PA06_SET();
        DDL_Delay1ms(500);
        GPIO_PA06_RESET();
        DDL_Delay1ms(500);
    }
}
 
/**
 * @brief  GPIO配置
 * @retval None
 */
static void GpioConfig(void)
{
    stc_gpio_init_t stcGpioInit = {0};
 
    SYSCTRL_PeriphClockEnable(PeriphClockGpio); /*开启GPIO时钟*/
 
    /* LED端口初始化 */
    GPIO_StcInit(&stcGpioInit);                   /* 结构体变量初始值初始化 */
    stcGpioInit.bOutputValue = TRUE;              /* 设置GPIO输出初始值为高 */
    stcGpioInit.u32Mode      = GPIO_MD_OUTPUT_PP; /* 端口方向配置 */
    stcGpioInit.u32PullUp    = GPIO_PULL_NONE;    /* 端口上拉配置 */
    stcGpioInit.u32Pin       = GPIO_PIN_06;       /* 端口引脚配置 */
    GPIOA_Init(&stcGpioInit);                     /* GPIO端口初始化 */
}

然后再编译,把烧录器接好,点击烧录,就能看到led开始闪烁

四、生成PWM

我们使用PA2,是复用在TIM0的通道0上面,可以查看参考手册7.3.4 端口数字复用功能

我们使用的内部低速时钟4M的频率,按如下配置就能生成16K的PWM

/**
 * @brief  端口配置初始化
 * @retval None
 */
static void GpioConfig(void)
{
    stc_gpio_init_t stcGpioInit = {0};
 
    SYSCTRL_PeriphClockEnable(PeriphClockGpio); /* 开启GPIO时钟 */
 
    /* CTIM0_CH0(PA02)端口初始化 */
    GPIO_StcInit(&stcGpioInit);                /* 结构体变量初始值初始化 */
    stcGpioInit.u32Mode   = GPIO_MD_OUTPUT_PP; /* 端口方向配置 */
    stcGpioInit.u32PullUp = GPIO_PULL_NONE;    /* 端口上拉配置 */
    stcGpioInit.u32Pin    = GPIO_PIN_02;       /* 端口引脚配置 */
    GPIOA_Init(&stcGpioInit);                  /* GPIO初始化 */
    GPIO_PA02_AF_CTIM0_CH0();                  /* CTIM0_CH0(PA02)端口复用功能 */
}
 
/**
 * @brief  初始化GTIMER
 * @retval None
 */
static void Gtim0Config(void)
{
    stc_gtim_init_t stcGtimInit = {0};
 
    SYSCTRL_FuncDisable(SYSCTRL_FUNC_CTIMER0_USE_BTIM); /* 配置CTIM0有效,BTIM0/1/2无效 */
    SYSCTRL_PeriphClockEnable(PeriphClockCtim0);        /* 使能CTIM0外设时钟 */
 
    GTIM_StcInit(&stcGtimInit);                               /* 结构体变量初始值初始化 */
    stcGtimInit.u32Mode            = GTIM_MD_PCLK;            /* 工作模式: 定时模式,计数时钟源来自PCLK */
    stcGtimInit.u32OneShotEn       = GTIM_CONTINUOUS_COUNTER; /* 连续计数模式 */
    stcGtimInit.u32Prescaler       = GTIM_COUNTER_CLK_DIV1;   /* 对计数时钟进行预除频 */
    stcGtimInit.u32ToggleEn        = GTIM_TOGGLE_DISABLE;     /* TOG输出禁止 */
    stcGtimInit.u32AutoReloadValue = 250 - 1;               /* 自动重载寄存ARR赋值,计数周期为PRS*(ARR+1)*TPCLK */
    GTIM_Init(GTIM0, &stcGtimInit);                           /* GTIM0初始化 */
 
    GTIM_CompareCaptureModeSet(GTIM0, GTIM_COMPARE_CAPTURE_CH0, GTIM_COMPARE_CAPTURE_PWM_NORMAL); /* CHx PWM输出,CNT>=CCR输出高电平 */
    GTIM_CompareCaptureRegSet(GTIM0, GTIM_COMPARE_CAPTURE_CH0, 200);                            /* 比较值 200 */
}

把逻辑分析仪接在PA2口,测试波形


全部评论
暂无评论
0/144