HC32 启动初始化配置

这篇博客介绍了HC32芯片库函数中ddl_config.h的配置,特别是DDL_ICG_ENABLE对芯片正常运行的重要性。在使用DLL库时,必须开启ICG功能。当DDL_ICG_ENABLE设置为DDL_OFF时,程序可能无法运行。解决方案是直接在配置文件中将其更改为DDL_ON,或者在main.c中添加配置代码。初始化配置数据会被加载到特定地址,全1的预留区域确保芯片正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HC32 启动初始化配置

配置ddl_config.h

官方提供的库函数中有ddl_config.h文件,改文件是管理库函数是否加载配置文件。部分内容如下:

/*******************************************************************************
 * Global pre-processor symbols/macros ('#define')
 ******************************************************************************/
/* Chip module on-off define */
#define DDL_ON                                      (1U)
#define DDL_OFF                                     (0U)

/**
 * @brief This is the list of modules to be used in the Device Driver Library.
 * Select the modules you need to use to DDL_ON.
 * @note DDL_ICG_ENABLE must be turned on(DDL_ON) to ensure that the chip works
 * properly.
 * @note DDL_UTILITY_ENABLE must be turned on(DDL_ON) if using Device Driver
 * Library.
 * @note DDL_PRINT_ENABLE must be turned on(DDL_ON) if using printf function.
 */
#define DDL_ICG_ENABLE                              (DDL_ON)
#define DDL_UTILITY_ENABLE                          (DDL_ON)
#define DDL_PRINT_ENABLE                            (DDL_OFF)
……省略……

在使用到相关的库函数时将对应的地方配置为DLL_ON。

初始化配置( ICG)

芯片复位解除后,硬件电路会读取 FLASH 地址0x00000400H ~0x0000045FH 把数据加载到初始化配置寄存器。地址 0x00000410H~0x0000045FH 为预约功能,请写入全 1 保证芯片正常动作。
在添加官方提供的DLL库后,相关的配置在hc32f4a0_icg.c 文件中可以看到相关的配置。

/**
 * @brief ICG parameters configuration
 */
 /* The ICG area is filled with F by default, HRC = 16MHZ,
    Please modify this value as required */
#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
const uint32_t u32ICG[] __attribute__((section(".ARM.__at_0x400"))) =
#elif defined (__GNUC__) && !defined (__CC_ARM)
const uint32_t u32ICG[] __attribute__((section(".icg_sec"))) =
#elif defined (__CC_ARM)
const uint32_t u32ICG[] __attribute__((at(0x400))) =
#elif defined (__ICCARM__)
#pragma location = 0x400
__root static const uint32_t u32ICG[] =
#else
#error "unsupported compiler!!"
#endif
{
    /* ICG 0~3 */
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    /* Reserved 0~3 */
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    /* Reserved 4~7 */
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    /* Reserved 8~11 */
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    /* Reserved 12~15 */
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    /* Reserved 16~19 */
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
    0xFFFFFFFFUL,
};

如果在库函数配置文件中 #define DDL_ICG_ENABLE (DDL_OFF)时,编译后的程序下载到板子上也不会运行。解决办法有两种:

  • 在配置文件中直接打开 #define DDL_ICG_ENABLE (DDL_ON)
  • 在main.c 的文件中添加上面的配置代码,在编译时,程序最后会将相关内容链接到400H地址。
hc32196时钟配置初始化包括以下几个步骤: 1. 配置外部晶振:通过外接12M晶振的方式进行系统时钟源的选择,并初始化外部振荡器。具体配置包括设置振荡器模式为振荡模式,设置驱动能力为低速驱动能力,并使能快速启动。最后,使能振荡器。 引用 2. 配置SRAM:根据需要配置SRAM的相关参数。这包括设置SRAM的等待周期、写周期以及ECC校验模式和操作方式。其中,等待周期和写周期的配置需要参考相关图表进行设置。 引用 3. 配置系统时钟频率:根据需要配置系统时钟的频率。这可以通过设置分频系数来实现。具体的分频系数可以参考相关图表,根据所需的最大频率范围进行选择。在配置之前,需要先解锁flash配置寄存器,然后设置延迟周期参数,最后上锁。 引用 以上是hc32196时钟配置初始化的步骤。根据需要,可以按照顺序依次执行这些步骤来完成时钟配置初始化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [hc32f460时钟配置的学习](https://blog.csdn.net/u011624093/article/details/119995925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值