Mcu模块用户手册
Mcu模块用户手册
目录
- 1. 简介
- 2. 文件结构
- 3. 数据结构
- 4. 驱动函数
- 4.1 函数接口
- 4.1.1 HLI_Mcu_Init
- 4.1.2 HLI_Mcu_Delay
- 4.1.3 HLI_Mcu_Reset
- 4.1.4 HLI_Mcu_ConfigMode
- 4.1.5 HLI_Mcu_GotoMode
- 4.1.6 HLI_Mcu_GetWakeUpPin
- 4.1.7 HLI_Mcu_GetResetSourceState
- 4.1.8 HLI_Mcu_ClearResetState
- 4.1.9 HLI_Mcu_GetResetSourceStateWithoutClear
- 4.1.10 HLI_Mcu_IOLatchAll
- 4.1.11 HLI_Mcu_ReduceSclkFrequency
- 4.1.12 HLI_Mcu_ReadChipUid
- 4.1.13 HLI_Mcu_MpuConfig
- 4.1.14 HLI_Mcu_EccInitial
- 4.1.15 HLI_Mcu_SetDebuggerPrivilege
- 4.1.16 HLI_Mcu_CmuInit
- 4.1.17 HLI_Mcu_CmuDeInit
- 4.1.18 HLI_Mcu_CmuSetChannelEnable
- 4.2 中断回调
- 4.1 函数接口
- 5. 使用示例
- 6. 限制与假设
- 7. 变更记录
1. 简介
本模块提供了对 MCU (Microcontroller Unit) 的抽象接口,主要负责微控制器的系统级配置和控制。主要功能包括:
- 初始化: 通过
HLI_Mcu_Init函数将MCU时钟初始化至最高主频,并进行必要的系统复位操作。 - 模式控制:
- 支持配置MCU进入不同的低功耗模式,包括 NORMAL SLEEP、STANDBY 和 STOP0 模式。
- 不同芯片支持的模式可能存在差异,具体以提供的代码和手册为准
- 通过
HLI_Mcu_ConfigMode配置休眠模式的参数(如唤醒源、唤醒引脚等)。 - 通过
HLI_Mcu_GotoMode进入指定的休眠模式。
- 支持配置MCU进入不同的低功耗模式,包括 NORMAL SLEEP、STANDBY 和 STOP0 模式。
- 系统控制:
- 复位: 提供
HLI_Mcu_Reset函数进行软件复位。 - 延时: 提供
HLI_Mcu_Delay函数实现阻塞式延时。 - 时钟降频:
HLI_Mcu_ReduceSclkFrequency用于在休眠前降低系统时钟频率以降低功耗。
- 复位: 提供
- 状态获取:
HLI_Mcu_GetWakeUpPin获取唤醒引脚的状态。HLI_Mcu_GetResetSourceState获取复位源状态。HLI_Mcu_ReadChipUid读取芯片的唯一标识符 (UID)。
- 安全与保护:
- MPU配置:
HLI_Mcu_MpuConfig用于配置存储器保护单元。 - ECC初始化:
HLI_Mcu_EccInitial用于初始化SRAM和Flash的ECC功能。 - 调试器权限:
HLI_Mcu_SetDebuggerPrivilege用于临时设置调试器权限。 - 时钟监测: 提供CMU (Clock Monitor Unit) 的初始化和控制接口。
- MPU配置:
1.1 支持的设备
当前软件适用于以下芯片:
- KF32A158xxxSF
1.2 名词及缩写
| 缩写 | 解释 |
|---|---|
| MCU | 微控制器 |
| ISR | 中断服务例程 |
2. 文件结构
| 文件名称 | 描述 |
|---|---|
| kf32axxx_hli_mcu.c | 此文件包含MCU驱动程序的通用功能 |
| kf32axxx_hli_mcu.h | 此头文件输出MCU驱动程序的宏、类型定义和函数原型 |
| kf32axxx_hli_mcu_cfg.h | 此文件包含配置MCU的宏定义, 如时钟源、时钟源频率 |
| Reload_Kernel.h | 此文件包含STOP模式唤醒后重载函数的声明 |
| Stop0_Wakeup_Vector.c | 用于STOP模式时需要使用的中断向量表及中断服务函数 |
| Reload_Kernel.a | 用于STOP模式唤醒后重载的静态库 |
| __irq_mcu.c | 此文件包含MCU各中断服务函数 |
| kf32axxx_hli_mcu_Lcfg.c | 此文件包含MCU配置相关变量 |
| kf32axxx_hli_mcu_Lcfg.h | 此文件包含MCU配置变量声明 |
3. 数据结构
3.1 数据类型
3.1.1 宏定义
MCU时钟源配置
宏定义 解释 MCU_WORK_CLK_SRC_HSI 内部时钟 (HSI -- Internal high speed oscillator) MCU_WORK_CLK_SRC_HSE 外部时钟 (HSE -- External high speed oscillator) MCU时钟源频率
宏定义 解释 MCU_CLK_SRC_FREQ_8M 8MHz MCU_CLK_SRC_FREQ_16M 16MHz MCU_CLK_SRC_FREQ_20M 20MHz MCU_CLK_SRC_FREQ_24M 24MHz MCU_CLK_SRC_FREQ_32M 32MHz MCU内部高频时钟源
宏定义 解释 MCU_HSI_SRC_INTHF 普通内部高频 MCU_HSI_SRC_HSIVAF 高精度内部高频 功能使能配置
宏定义 解释 MCU_BOR_LEVEL_1 BOR 电压点1 MCU_BOR_LEVEL_2 BOR 电压点2 MCU_BOR_LEVEL_3 BOR 电压点3 MCU_BOR_LEVEL_4 BOR 电压点4 MCU模块软件KEY
宏定义 解释 MCU_KEY 用于MCU模块的软件KEY,作为 HLI_Mcu_SetDebuggerPrivilege接口的第一个参数时钟源索引序号
宏定义 解释 HLI_MCU_CLK_SRC_EXTHF EXTHF时钟源 HLI_MCU_CLK_SRC_PLL PLL时钟源 注
用作时钟初始化错误时的回调接口的入参。
MCU系统时钟频率
宏定义 解释 MCU_SYSCLK_FREQ MCU系统时钟频率大小 PLL倍频参数
宏定义 解释 MCU_PLL_M_PARAM PLL 反馈驱动,指PLL倍频的M值 MCU_PLL_N_PARAM PLL 输入驱动,指PLL倍频的N值 MCU_PLL_NO_PARAM PLL输出分频,此处指PLL倍频的OD值 注
PLL倍频计算公式:
$\Large PLLCLK = \frac{F_{REF}}{NO} \times \frac{M}{N} $
即 $\Large PLLCLK = \frac{F_{REF}}{2^{MCU_PLL_NO_PARAM}} \times \frac{MCU_PLL_M_PARAM}{MCU_PLL_N_PARAM} $
3.1.2 枚举
MCU模式 (HLI_Mcu_ModeType)
枚举值 解释 HLI_MCU_NORMAL_SLEEP_MODE 普通休眠模式 HLI_MCU_STANDBY_MODE Standby休眠模式 HLI_MCU_STOP0_MODE Stop0休眠模式 WAKEUP唤醒引脚 (HLI_Mcu_WkupIndexType)
枚举值 解释 HLI_MCU_WKUP1 外部唤醒引脚1 HLI_MCU_WKUP2 外部唤醒引脚2 ... ... HLI_MCU_WKUP12 外部唤醒引脚12 唤醒边沿 (HLI_Mcu_WakeupEdgeType)
枚举值 解释 HLI_MCU_WAKEUP_EDGE_RISE 外部唤醒引脚上的上升沿唤醒MCU HLI_MCU_WAKEUP_EDGE_FALL 外部唤醒引脚上的下降沿唤醒MCU 调试器加密模式 (HLI_Mcu_DebuggerPrivilegeType)
枚举值 解释 HLI_MCU_DEBUGGER_ENCRYPTION_A 调试器权限为加密A HLI_MCU_DEBUGGER_ENCRYPTION_B 调试器权限为加密B HLI_MCU_DEBUGGER_ENCRYPTION_C 调试器权限为加密C HLI_MCU_DEBUGGER_NO_ENCRYPTION 调试器权限为不加密 唤醒源
枚举值 解释 HLI_MCU_RST_SRC_NRST NRST引脚复位 HLI_MCU_RST_SRC_POR POR复位 HLI_MCU_RST_SRC_SOFTWARE 软件复位 HLI_MCU_RST_SRC_BOR BOR复位 HLI_MCU_RST_SRC_WAKEUP 外部WAKEUP引脚唤醒 HLI_MCU_RST_SRC_RTC RTC唤醒 HLI_MCU_RST_SRC_IWDT IWDT复位 MCU状态
枚举值 解释 HLI_MCU_SUCCESS 无错误 HLI_MCU_NEVER_CONFIG_MODE_ERROR 未配置MCU模式 HLI_MCU_SWAP_SCLK_ERROR 降频失败 HLI_MCU_TRIM_FLASH_ERROR 校准Flash错误 HLI_MCU_PARAMETER_ERROR 参数错误 HLI_MCU_ERROR 其他错误 休眠时时钟源
枚举值 解释 HLI_MCU_SLEEP_CLK_INTHF 内部高频 HLI_MCU_SLEEP_CLK_INTLF 内部低频 MPU超级用户权限(HLI_Mpu_SuAccess_t)
枚举值 解释 HLI_MPU_ACCESS_SU_RWX 读写执行权限 HLI_MPU_ACCESS_SU_RX 读执行权限 HLI_MPU_ACCESS_SU_RW 读写权限 HLI_MPU_ACCESS_SU_SAMETONORMAL 与普通用户一致 MPU普通用户权限(HLI_Mpu_NormalAccess_t)
枚举值 解释 HLI_MPU_ACCESS_NORMAL_NONE 无权限 HLI_MPU_ACCESS_NORMAL_X 执行权限 HLI_MPU_ACCESS_NORMAL_W 写权限 HLI_MPU_ACCESS_NORMAL_WX 写执行权限 HLI_MPU_ACCESS_NORMAL_R 读权限 HLI_MPU_ACCESS_NORMAL_RX 读执行权限 HLI_MPU_ACCESS_NORMAL_RW 读写权限 HLI_MPU_ACCESS_NORMAL_RWX 读写执行权限 MPU主机类型(HLI_Mpu_Master_t)
枚举值 解释 HLI_MPU_MASTER_0 主机0,Core HLI_MPU_MASTER_2 主机2,DMA CMU 通道号 (HLI_Mcu_CmuChannelType)
枚举值 解释 HLI_MCU_CMU_CHANNEL_INTHF内部高速时钟 HLI_MCU_CMU_CHANNEL_EXTHF外部高速时钟 HLI_MCU_CMU_CHANNEL_PLL0PLL0 时钟 HLI_MCU_CMU_CHANNEL_PLL1PLL1 时钟 HLI_MCU_CMU_CHANNEL_MAX最大通道数 CMU 中断索引 (HLI_Mcu_CmuIntrIndexType)
枚举值 解释 HLI_MCU_CMU_INTR_INDEX_FHH1通道1频率过高 HLI_MCU_CMU_INTR_INDEX_FLL1通道1频率过低 HLI_MCU_CMU_INTR_INDEX_FHH2通道2频率过高 HLI_MCU_CMU_INTR_INDEX_FLL2通道2频率过低 HLI_MCU_CMU_INTR_INDEX_FHH3通道3频率过高 HLI_MCU_CMU_INTR_INDEX_FLL3通道3频率过低 HLI_MCU_CMU_INTR_INDEX_FHH4通道4频率过高 HLI_MCU_CMU_INTR_INDEX_FLL4通道4频率过低 HLI_MCU_CMU_INTR_INDEX_MAX最大中断索引 CMU 监控时钟源 (HLI_Mcu_CmuMonitorClkType)
枚举值 解释 HLI_MCU_CMU_CLOCK_SOURCE_OSC3OSC3 时钟源
3.1.3 类型定义
芯片UID类型
成员 解释 typedef uint8_t HLI_Mcu_ChipUidType[16U];UID buffer定义
3.2 配置项说明
外部唤醒引脚配置 (HLI_Mcu_WakeupPinConfig)
成员 解释 取值范围 WakeupIndex 唤醒引脚序号 参考 HLI_Mcu_WkupIndexTypeWakeupEdge 唤醒边沿 参考 HLI_Mcu_WakeupEdgeTypeWakeupFixLvEnable 休眠前是否固定电平。
true: 固定电平 (下降沿->下拉, 上升沿->上拉)
false: 不固定电平 (若外部已有上下拉可设为false)true/false WKUP唤醒配置 (HLI_Mcu_WakeupConfig)
成员 解释 取值范围 WakeupNumber 外部唤醒引脚数量 0 ~ 12 WakeupPinConfig 指向外部唤醒引脚配置的指针 指向 HLI_Mcu_WakeupPinConfig类型的数组MCU模式配置 (HLI_Mcu_ModeCfgType)
成员 解释 取值范围 Mcu_PinWkupEnableSta 外部唤醒引脚使能状态 true/false Mcu_WkupConfig 指向WKUP唤醒配置的指针 指向 HLI_Mcu_WakeupConfig类型的指针Mcu_T0WkupEnableSta T0唤醒使能状态 true/false Mcu_T0WkupTime 唤醒时间 32位无符号整数 MPU配置 (HLI_Mcu_MpuUnitConfigType)
成员 解释 取值范围 StartAddr 起始地址 32位地址 EndAddr 结束地址 32位地址 Master0SuAccess Master0 (Core) 超级用户读写权限 参考 HLI_Mpu_SuAccess_tMaster0UsrAccess Master0 (Core) 普通用户读写权限 参考 HLI_Mpu_NormalAccess_tMaster2SuAccess Master2 (DMA) 超级用户读写权限 参考 HLI_Mpu_SuAccess_tMaster2UsrAccess Master2 (DMA) 普通用户读写权限 参考 HLI_Mpu_NormalAccess_tMPU顶层配置 (HLI_Mcu_MpuConfigType)
成员 解释 取值范围 MpuRegionNum MPU配置数量 可选 0 - 15 MpuRegionConfig 指向MPU单个范围配置的指针 指向MPU单个范围配置(HLI_Mcu_MpuUnitConfigType)的指针 CMU 通道配置 (HLI_Mcu_CmuNumConfigType)
成员 解释 取值范围 ChannelCMU 通道 可选范围参考 HLI_Mcu_CmuChannelTypeHighThreshold高阈值 uint32_t类型LowThreshold低阈值 uint32_t类型ReferenceValue参考值 uint16_t类型CMU 顶层配置 (HLI_Mcu_CmuConfigType)
成员 解释 取值范围 NumCMU 通道数量 uint8_t类型OscSelectCMU 的时钟源 可选范围参考 (HLI_Mcu_CmuMonitorClkType) NumConfigPtr指向 CMU 通道配置的指针 指向 CMU 通道配置 (HLI_Mcu_CmuNumConfigType) 的指针
4. 驱动函数
4.1 函数接口
4.1.1 HLI_Mcu_Init
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_Init |
| 语法 | void HLI_Mcu_Init(void) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 初始化MCU,配置系统时钟至最高主频,复位外设。 |
| 注意事项 | 当初始化时钟失败时, 会进入 HLI_Mcu_InitClockFailedCallBack, 该函数为弱定义, 用户可重写实现自定义逻辑。 |
4.1.2 HLI_Mcu_Delay
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_Delay |
| 语法 | void HLI_Mcu_Delay(uint32_t DelayTime) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | DelayTime: 延时时间(us) |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | MCU阻塞延时。 |
| 注意事项 | 当延时时间较小时, 误差较大, 不可用于高精度延时。 |
4.1.3 HLI_Mcu_Reset
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_Reset |
| 语法 | void HLI_Mcu_Reset(void) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | MCU软件复位。 |
| 注意事项 | 无 |
4.1.4 HLI_Mcu_ConfigMode
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_ConfigMode |
| 语法 | HLI_Mcu_StatusType HLI_Mcu_ConfigMode(HLI_Mcu_ModeCfgType *ModeCfg) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | ModeCfg : 指向MCU模式配置的指针 |
| 形参(输出) | 无 |
| 返回值 | HLI_MCU_SUCCESS: 成功 |
| 描述 | 配置MCU模式、唤醒方式、唤醒引脚等。 |
| 注意事项 | 在调用 HLI_Mcu_GotoMode 进入 STANDBY 或 STOP0 模式前,必须先调用此函数进行配置。 |
4.1.5 HLI_Mcu_GotoMode
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_GotoMode |
| 语法 | HLI_Mcu_StatusType HLI_Mcu_GotoMode(HLI_Mcu_ModeType McuMode) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | McuMode : 目标MCU模式 |
| 形参(输出) | 无 |
| 返回值 | HLI_MCU_SUCCESS : 成功 |
| 返回值 | HLI_MCU_NEVER_CONFIG_MODE_ERROR : 未配置MCU模式 |
| 返回值 | HLI_MCU_SWAP_SCLK_ERROR : 切换为内部低频时钟失败 |
| 返回值 | HLI_MCU_TRIM_FLASH_ERROR : STOP0模式下TRIM FLASH失败 |
| 描述 | 进入MCU指定模式。 |
| 注意事项 | 调用该函数前, 应先调用 HLI_Mcu_ConfigMode 配置MCU模式。若进入 HLI_MCU_NORMAL_SLEEP_MODE 模式可不配置MCU模式。 |
4.1.6 HLI_Mcu_GetWakeUpPin
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_GetWakeUpPin |
| 语法 | uint32_t HLI_Mcu_GetWakeUpPin(void) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | bit0至bit11, 每一位代表一路外部唤醒引脚状态。 0: 表示不是当前外部唤醒引脚唤醒MCU 1: 表示当前外部唤醒引脚唤醒MCU |
| 描述 | 获取外部唤醒引脚状态。 |
| 注意事项 | 无 |
4.1.7 HLI_Mcu_GetResetSourceState
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_GetResetSourceState |
| 语法 | uint32_t HLI_Mcu_GetResetSourceState(void) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | bit0~bit3、bit5、bit7, 每一位代表一路复位源状态。 0: 表示不是当前复位源复位MCU 1: 表示当前复位源复位MCU |
| 描述 | 获取外部复位源状态。 bit0 -- NRST复位引脚; bit1 -- POR复位; bit2 --软件复位; bit3 -- BOR复位; bit5 -- 唤醒引脚; bit7 -- IWDT复位。 |
| 注意事项 | 默认会对状态进行清除。 |
4.1.8 HLI_Mcu_ClearResetState
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_ClearResetState |
| 语法 | void HLI_Mcu_ClearResetState(void) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 清除外部复位源状态。 |
| 注意事项 | 无 |
4.1.9 HLI_Mcu_GetResetSourceStateWithoutClear
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_GetResetSourceStateWithoutClear |
| 语法 | uint32_t HLI_Mcu_GetResetSourceStateWithoutClear(void) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | bit0~bit3、bit5、bit7, 每一位代表一路复位源状态。 0: 表示不是当前复位源复位MCU 1: 表示当前复位源复位MCU |
| 描述 | 获取外部复位源状态。 bit0 -- NRST复位引脚; bit1 -- POR复位; bit2 --软件复位; bit3 -- BOR复位; bit5 -- 唤醒引脚; bit7 -- IWDT复位。 |
| 注意事项 | 此接口仅读取引脚状态, 不对状态进行清除。 |
4.1.10 HLI_Mcu_IOLatchAll
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_IOLatchAll |
| 语法 | void HLI_Mcu_IOLatchAll(bool EnableState) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | EnableState: IO保持(锁存)使能状态 (true: 使能, false: 禁止) |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 设置IO保持(锁存)使能状态。 |
| 注意事项 | HLI_Mcu_Init函数内置取消IO保持功能接口, 若用户不关心Mcu初始化到IO初始化之间IO的状态, 用户设置MCU_IO_LATCH_STATE_IN_STANDBY为true即可。否则, 将 MCU_IO_LATCH_STATE_IN_STANDBY设置为false, 同时用户自行调用本接口在休眠前进行IO锁存, IO初始化后再取消IO锁存。 |
4.1.11 HLI_Mcu_ReduceSclkFrequency
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_ReduceSclkFrequency |
| 语法 | uint32_t HLI_Mcu_ReduceSclkFrequency(HLI_Mcu_SleepClockType TargetClock) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | TargetClock: 目标时钟 |
| 形参(输出) | 无 |
| 返回值 | 0: 成功 其他: 失败 |
| 描述 | 用于休眠前降低系统时钟频率, 可降低至内部高频时钟和内部低频时钟, 同时该接口会关闭PLL、所有外部时钟、所有外设时钟。 当前进入Stop0模式时已在内部集成降频。 |
| 注意事项 | 无 |
4.1.12 HLI_Mcu_ReadChipUid
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_ReadChipUid |
| 语法 | void HLI_Mcu_ReadChipUid(HLI_Mcu_ChipUidType Uid) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | 无 |
| 形参(输出) | Uid: 指向芯片唯一标识符存储buffer的指针 |
| 返回值 | 无 |
| 描述 | 用于获取芯片的唯一标识符。 |
| 注意事项 | HLI_Mcu_ChipUidType 为使用typedef重命名的一个长度为16 bytes的数组的数据结构。存储标识符的buffer长度不应小于16 bytes, 否则会存在越界。 |
4.1.13 HLI_Mcu_MpuConfig
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_MpuConfig |
| 语法 | void HLI_Mcu_MpuConfig(HLI_Mcu_MpuConfigType *MpuCfg) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | MpuCfg : MPU配置结构体 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | MPU初始化配置, 根据入口参数配置各区域读写执行权限。 |
| 注意事项 | 无 |
4.1.14 HLI_Mcu_EccInitial
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_EccInitial |
| 语法 | void HLI_Mcu_EccInitial(void) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | SRAM、Flash ECC初始化, 开启2bit错误中断。 |
| 注意事项 | 无 |
4.1.15 HLI_Mcu_SetDebuggerPrivilege
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_SetDebuggerPrivilege |
| 语法 | HLI_Mcu_StatusType HLI_Mcu_SetDebuggerPrivilege(uint32_t SoftKey, HLI_Mcu_DebuggerPrivilegeType Privilege); |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | SoftKey: 软件Key, 必须为0x5A5A6688 |
| 形参(输入) | Privilege: 调试器加密等级 |
| 形参(输出) | 无 |
| 返回值 | HLI_MCU_SUCCESS: 成功 |
| 返回值 | HLI_MCU_PARAMETER_ERROR: 参数错误 |
| 返回值 | HLI_MCU_ERROR: 未定义错误 |
| 描述 | 设置调试器加密权限。 |
| 注意事项 | 建议客户仅用于取消与恢复调试器加密C, 不用于设置项目的调试器加密等级。调试器加密等级建议使用IDE/PRO工具进行设置。 |
4.1.16 HLI_Mcu_CmuInit
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_CmuInit |
| 语法 | bool HLI_Mcu_CmuInit(HLI_Mcu_CmuConfigType *CmuInitPtr); |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | CmuInitPtr: CMU初始化配置 |
| 形参(输出) | 无 |
| 返回值 | true: 成功 |
| 返回值 | false: 错误 |
| 描述 | 初始化时钟检测模块。 |
| 注意事项 | 时钟监测的内部参考时钟频率为16MHz, 上下限值计算方式参考手册 CMU使用举例 章节。 |
4.1.17 HLI_Mcu_CmuDeInit
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_CmuDeInit |
| 语法 | void HLI_Mcu_CmuDeInit(void); |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 反初始化时钟检测模块。 |
| 注意事项 | 无 |
4.1.18 HLI_Mcu_CmuSetChannelEnable
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_CmuSetChannelEnable |
| 语法 | void HLI_Mcu_CmuSetChannelEnable(HLI_Mcu_CmuChannelType Channel, bool Enable); |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | Channel: CMU通道 |
| 形参(输入) | Enable: 使能状态 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 设置时钟检测模块通道使能状态。 |
| 注意事项 | 无 |
4.2 中断回调
4.2.1 HLI_Mcu_InitClockFailedCallBack
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_InitClockFailedCallBack |
| 语法 | void HLI_Mcu_InitClockFailedCallBack(uint32_t ClkSrc) |
| 形参(输入) | ClkSrc: 时钟源索引 (HLI_MCU_CLK_SRC_EXTHF 或 HLI_MCU_CLK_SRC_PLL) |
| 形参(输出) | 无 |
| 描述 | 初始化时钟失败时的回调函数。 |
| 注意事项 | 弱定义函数, 用户可重写实现自定义逻辑。当前内部默认实现为while(1)死循环。 |
4.2.2 HLI_Mcu_SramEcc2bitErrorCallBack
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_SramEcc2bitErrorCallBack |
| 语法 | void HLI_Mcu_SramEcc2bitErrorCallBack(uint32_t ErrAddr) |
| 形参(输入) | ErrAddr: 错误地址寄存器(CC_ERRADDR)的值 |
| 形参(输出) | 无 |
| 描述 | SRAM ECC出现2bit错误中断回调函数。 |
| 注意事项 | 函数内不应该有时间长处理, 需要处理完后立刻退出。 |
4.2.3 HLI_Mcu_FlashEcc2bitErrorCallBack
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_FlashEcc2bitErrorCallBack |
| 语法 | void HLI_Mcu_FlashEcc2bitErrorCallBack(HLI_Mcu_FlashIndexType FlashIndex, uint32_t ErrAddr) |
| 形参(输入) | ErrAddr: 错误地址寄存器(CC_ERRADDR)的值 |
| 形参(输入) | FlashIndex: flash序号 |
| 形参(输出) | 无 |
| 描述 | Flash ECC出现2bit错误中断回调函数。 |
| 注意事项 | 函数内不应该有时间长处理, 需要处理完后立刻退出。 |
4.2.4 HLI_Mcu_CmuIntrCallback
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_CmuIntrCallback |
| 语法 | void HLI_Mcu_CmuIntrCallback(HLI_Mcu_CmuIntrIndexType IntrIndex) |
| 形参(输入) | IntrIndex: CMU中断序号 |
| 形参(输出) | 无 |
| 描述 | CMU中断回调函数。 |
| 注意事项 | 函数内不应该有时间长处理, 需要处理完后立刻退出。 |
4.2.5 HLI_Mcu_ClockFaultProtectionCallback
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_ClockFaultProtectionCallback |
| 语法 | void HLI_Mcu_ClockFaultProtectionCallback(void) |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 描述 | 时钟故障错误回调函数。 |
| 注意事项 | 默认状态下, 复位 MCU。弱定义函数, 用户可自行修改。当前默认实现为复位芯片。 |
4.2.6 HLI_Mcu_NmiExceptionCallback
| Name | Description |
|---|---|
| 函数名称 | HLI_Mcu_NmiExceptionCallback |
| 语法 | void HLI_Mcu_NmiExceptionCallback(void) |
| 形参(输入) | 无 |
| 形参(输出) | 无 |
| 描述 | NMI异常回调函数。 |
| 注意事项 | 弱定义函数, 用户可自行修改。当前内部默认实现为while(1)死循环。 |
5. 使用示例
1. Normal Sleep 模式
此模式下,MCU进入普通休眠模式,可通过配置的外部中断唤醒。
2. Standby 模式
此模式下,MCU 进入 Standby 低功耗模式,仅能通过配置的外部唤醒引脚唤醒。唤醒后 MCU 复位,程序从头执行。
3. Stop0 模式
此模式下,MCU 进入 Stop0 低功耗模式,可通过配置的外部唤醒引脚或 T0 定时器唤醒。唤醒后 MCU 不会复位,程序从 HLI_Mcu_GotoMode 之后继续执行。
6. 限制与假设
- 休眠模式: 支持 NORMAL SLEEP、STANDBY、STOP0 模式。
- STANDBY限制: STANDBY模式仅能使用外部唤醒引脚唤醒, 不支持T0唤醒, 需要将
Mcu_T0WkupEnableSta设置为false。 - 配置要求: 进入不同模式时(除NORMAL SLEEP外), 要先配置MCU模式, 再调用进入模式接口。
- LPRAM保持: 使用STANDBY模式保持LPRAM功能时, 需要修改 .ld 文件和 startup.c 文件。
- 唤醒配置: 配置项
WakeupFixLvEnable设置为true时, 会根据唤醒边沿使能内部上下拉。若外部有上下拉时, 可以将该配置项设置为false, 以避免功耗增加。
7. 变更记录
| 版本 | 时间 | 变更记录 |
|---|---|---|
| v1.0 | 2025-11-24 | 新增初版文档 |
