 (tag: v2.45) hal库函数更新
### 一、核心变更概述
本次更新的核心目标是 **统一接口规范、扩展硬件支持、修复历史问题**，主要变更包括：
1. **架构重构**：
   - 将寄存器定义从主头文件拆分到 `hal_lks32mc45x_reg.h`，分离声明与实现，提升可维护性；
   - 统一中断函数命名规范（如 `HAL_UART_IRQHandler_00` 映射到芯片原生中断函数 `UART0_IRQHandler`），简化中断开发；
   - 新增默认时钟宏定义（`HAL_INIT_DEFAULE_MCLK=192MHz`），标准化时钟配置。

2. **功能扩展**：
   - 新增 QEP 编码器、DMA 等模块的完整驱动；
   - 各外设模块补充 GPIO 引脚配置接口（如 `HAL_ADC_SetGpioIn`、`HAL_SPI_SetGpioCs`）；
   - 扩展 ADC/CMP/HALL 等模块的通道选择、滤波配置等功能。

3. **兼容性优化**：
   - 保留原有接口的同时，补充“不支持功能”的占位定义（如 `HAL_ADC_PORT_CH16` 预留）；
   - 修正寄存器操作宏（如新增 `HAL_REG_WRITE_BIT_MASK_POS` 支持位域操作）；
   - 优化类型定义（如 `HAL_ADC_PORT_x` 明确区分不同 ADC 模块的通道差异）。

### 二、重点模块升级细节
#### 1. 寄存器定义模块（`hal_lks32mc45x_reg.h`）
- **新增独立文件**：将原 `hal_lks32mc45x.h` 中的寄存器结构体（如 `HAL_SYS_TypeDef`、`HAL_ADC_TypeDef`）拆分到该文件，结构更清晰；
- **补充寄存器字段**：
  - `HAL_SYS_TypeDef` 新增 `DAC1` 相关寄存器（`DAC1`、`DAC1_AMC`、`DAC1_DC`），支持双 DAC 配置；
  - `HAL_IWDG_TypeDef` 完善看门狗配置字段（`CFG`、`WTH`、`RTH`），支持定时唤醒+超时复位双模式；
  - 新增 `HAL_QEP_TypeDef`（编码器寄存器）、`HAL_DMA_TypeDef`（DMA 通道配置）。

#### 2. ADC 模块（`hal_lksmcu_adc.h`/`.c`）
- **通道扩展**：明确区分 3 个 ADC 模块的通道差异（如 ADC2 支持温度传感器 `HAL_ADC_PORT_TMP0`，ADC1 支持 LDO12 采样 `HAL_ADC_PORT_LDO12`）；
- **功能补充**：
  - 新增 `HAL_ADC_SetGpioIn` 接口，直接绑定 ADC 通道到 GPIO 引脚，无需手动配置引脚复用；
  - 修复两段式采样触发逻辑（`HAL_ADC_UpdateTrig` 函数优化 MCPWM/TIMER 触发配置）；
  - 补充 ADC 量程计算（`HAL_ADC_GetRange` 支持内部/外部基准源自动识别）。

#### 3. 中断管理模块（`hal_lks32mc45x.h`/`hal_lksmcu_irq.h`）
- **统一中断接口**：
  - 定义中断函数映射宏（如 `#define HAL_UART_IRQHandler HAL_UART_IRQHandler_00`），用户无需关注芯片原生中断函数名；
  - 新增中断使能/禁用接口（`HAL_IRQ_ModuleEnable`/`HAL_IRQ_ModuleDisable`），替代原复杂的 `HAL_IRQ_EnableModule`；
- **补充中断标志处理**：`hal_lksmcu_irqfun.h` 新增 ADC/HALL 中断标志的查询、清除接口（如 `HAL_ADC_IrqSamp1Flg`、`HAL_HALL_IrqChangeClear`）。

#### 4. 通信模块（SPI/I2C/UART）
- **SPI 模块**：
  - 新增 `HAL_SPI_MODE_x` 枚举，支持主从模式、高低位先发、CPOL/CPHA 配置（如 `HAL_SPI_MODE_MASTER_MSB_01`）；
  - 补充引脚配置接口（`HAL_SPI_SetGpioCs`/`Mosi`/`Miso`/`Clk`），简化硬件接线配置；
- **I2C 模块**：
  - 拆分 SCL/SDA 引脚配置（`HAL_I2C_SetGpioScl`/`Sda`），替代原合并接口；
  - 新增 `HAL_I2C_BusReset` 接口，解决 I2C 总线卡死问题；
- **UART 模块**：
  - 支持 3 个 UART 模块（`HAL_UART_0/1/2`），补充校验位、停止位配置；
  - 明确中断支持范围（仅支持发送完成/接收完成/停止位错误/校验错误中断）。

#### 5. 定时器/PWM 模块（TIMER/MCPWM）
- **TIMER 模块**：
  - 新增周期配置接口（`HAL_TIMER_SetPeriodmS`/`SetPerioduS`），支持毫秒/微秒级定时；
  - 补充 GPIO 输出配置（`HAL_TIMER_SetGpioOut`），直接绑定定时器输出到引脚；
- **MCPWM 模块**：
  - 扩展故障检测功能（`HAL_MCPWM_FAIL_x` 支持 IO/CMP 高低电平触发）；
  - 新增通道屏蔽（`CHMSK`）、推挽模式（`PP`）配置接口。

#### 6. 其他模块优化
- **FLASH 模块**：新增 `HAL_FLASH_SecurityParameterSave`/`Read` 接口，支持带 CRC 校验的安全数据存储；
- **HALL 模块**：补充滤波配置（`HAL_HALL_SetFilteruS`）、计数启停控制（`HAL_HALL_StartCounting`）；
- **OPA 模块**：扩展增益选项（如 `HAL_OPA_GAIN_320_10`），支持更精细的放大倍数配置。

### 三、使用注意事项
#### 1. 工程迁移步骤
- **替换头文件**：
  - 移除旧版 `hal_lks32mc45x.h` 中的寄存器定义部分，引入新文件 `#include "hal_lks32mc45x_reg.h"`；
  - 主工程仅需包含 `hal_lks32mc45x.h`，自动引入所有模块头文件。
- **链接库更新**：
  - Keil 工程替换 `hal_lksmcu_lib.lib`，GCC 工程替换 `libhal_lksmcu_lib.a`（静态库包含校准参数读取等底层功能）；
  - 确保工程包含 `source/` 目录下的新增源文件（如 `hal_lks32mc45x_qep.c`、`hal_lks32mc45x_dma.c`）。

#### 2. 接口兼容说明
- **保留旧接口**：原有核心接口（如 `HAL_ADC_Enable`、`HAL_UART_SetBaud`）完全兼容，无需修改旧代码；
- **注意不支持功能**：标注“不支持”的接口（如 `HAL_ADC_PORT_REF`）仅为占位，调用会无效果，需根据芯片手册选择实际支持的功能；
- **中断函数使用**：优先使用统一命名（如 `HAL_UART_IRQHandler`），而非芯片原生函数（`UART0_IRQHandler`），提升代码可移植性。

#### 3. 关键配置要点
- **时钟配置**：默认时钟为 192MHz（`HAL_INIT_DEFAULE_MCLK`），如需修改，通过 `HAL_CLK_SetMcuFreq` 接口配置（支持 8MHz~96MHz 内部 RC 时钟）；
- **GPIO 配置**：所有外设模块的引脚配置需通过新增接口（如 `HAL_SPI_SetGpioMosi`）实现，无需手动操作 `HAL_GPIO_SetAf`；
- **中断优先级**：使用 `HAL_IRQ_ModuleEnable` 配置中断时，优先级参数范围为 0~3（0 为最高优先级）。
 (tag: v2.44, origin/main, origin/HEAD) 该提交更新了LKS32MC09x用户手册头文件，主要修改了注释格式，将所有`uint32_t`强制类型转换移到了宏定义右侧，并修正了部分位域注释的对齐方式，同时更新了文件头部的日期和版本信息，增加BSD 3 License。
 (tag: v2.43) 修改包括：将`hal_lks32mc45x_weak`文件重命名为`hal_lks32mc45x_wake`，更新包含和源文件引用，更新用户手册头文件日期至2025-10-27。
 (tag: v2.42) 代码格式化命令修改：从BreakBeforeBraces: Linux改为BreakBeforeBraces: Allman。
 (tag: v2.41) 增强停机模式功能：添加唤醒源和IRQHandler配置，确保芯片休眠后可被唤醒并处理唤醒中断，之后执行系统重置。
 (tag: v2.40) 更正：AON_DeepSleepMode函数中软件延时函数改为__NOP()
 (tag: v2.39) 添加了两个新函数AON_StandbyMode和AON_DeepSleepMode用于控制芯片进入停机模式和深度休眠模式。
 (tag: v2.38) 更正了`FBAUD`寄存器地址注释从`0xA8`为`0xAC`。
 (tag: v2.37) 修改AON_SetGpioWakePolarity函数：更正参数设置逻辑，ION_WAKE_EN设为唤醒IO，ION_WAKE_POL根据唤醒极性设置。
 (tag: v2.36) 增加hal库
 (tag: v2.35) other(CAN): CAN读值失败时，返回参数初始化为0
 (tag: v2.34) 统一代码格式，参考： "clang-format -style={BasedOnStyle: Microsoft, Language: Cpp, UseTab: Never, IndentWidth: 4, TabWidth: 4, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: true, AllowShortLoopsOnASingleLine: true, AllowShortBlocksOnASingleLine: true, IndentCaseLabels: true, SortIncludes: false, AlignConsecutiveMacros: AcrossEmptyLines, AlignConsecutiveAssignments: Consecutive}"
 (tag: v2.33) 新增了LKS32MC45x_user_manual_v1.66头文件，包含芯片各模块的寄存器定义和详细位域说明，涉及系统控制、时钟管理、GPIO、ADC、DAC、比较器、PWM、定时器、看门狗、CAN通信等多个外设模块。
 (tag: v2.32) 修改trim.s文件的编译方式，以同时兼容ac5和ac6编译器。
 (tag: v2.31) 更新CAN驱动，增加CAN FD支持，优化发送接收函数，调整结构体和枚举类型，修复错误处理和状态获取函数。
 (tag: v2.30) 本次提交主要进行了文件重命名和结构调整，将Include和Source目录下的文件统一移动到了include和source目录，并新增了liblks32mc45x_trim.a和lks32mc45x_trim.lib两个二进制文件，同时对部分源代码进行了细微修改和优化。
 (tag: v2.29) 添加了MCPWM中断源事件相关位定义，包括MCPWM_IF0、MCPWM_IF1和MCPWM_EIF的多个中断事件位。
 (tag: v2.28) 调整UART初始化以支持可选的时钟分频div2，修改波特率计算方式并移除SYS_UartClkDiv(7)调用，更新注释和寄存器设置。
 (tag: v2.27) 提交更新：修改了lks32mc45x_sys.h文件头注释格式，增加了SYS_ResetPeripheral、SYS_ResetPeripheralInternal和SYS_ResetIO三个函数的声明，并删除了LKS32MC45x用户手册PDF文件。
 (tag: v2.25) 更新lks32mc45x_sys.h文件头信息，简化描述并调整格式。
 (tag: v2.24) Update version.txt
 (tag: v2.26, tag: V2.23) 增加强制类型转换(uint32_t)以确保能正确赋值 reg1 |= ((uint32_t)AFE_XCSEL_x << 8);
 (tag: V2.22) FLASH_Program里写完flash之后增加对写入成功的判断，并返回flash写入状态
 (tag: V2.21) 更新dsp库函数
 (tag: V2.20) fix(lks32mc45x_can.h): CANFD发送增加brs参数
 (tag: V2.19) 更新can器件库
 (tag: V2.18) BUG修复，配置完成CANID后将can模块配置成正常输出模式
 (tag: v2.17) 更新DMA_IE的赋值方式
 (tag: v2.16) 修改spi波特率计算公式错误的问题
 (tag: v2.15) fix(UART): 固定SYS_CLK_DIV2的数值以免两串口波特率不同时出现冲突
 (tag: v2.14) fix(SPI): 往SPI_TXDATA寄存器中写数触发SPI传输之前需要先判断CS信号是否为高电平
 (tag: V2.13) 更正timer_cfg配置，更正exti定义
 (tag: V2.12) mcpwm.h 修改MCPWM_UPDATE_REG为MCPWM0_UPDATE_REG afe.h 解决不选择c99报错的问题
 (tag: v2.11) <fix>(<gpio.c>): <修正外部中断配置> <fix>(<trim.s>): <修正读芯片UID函数>
 (tag: V2.1) 从例程中更新库函数到最新
 (tag: v1.9) pll使能后添加延时 SoftDelay()
 (tag: v1.8) 更新TRIM_ReadUid(u32 *)函数，添加注释
 (tag: v1.7) 修改GPIO_WriteBit函数中bsrr和brr写反笔误
 (tag: v1.6) 1.修正opa4寄存器配置笔误 2.初始化时添加sys_sft_rst寄存器配置复位，添加读取校adc、dac校正值部分
 (tag: v1.5) 修正UTIMERx_CFG寄存器对应位配置，修正opa5反馈电阻配置对应SYS_AFE_REG1配置
 (tag: v1.4) 更改 MCPWM_AUEN自动更新使能寄存器BIT13~BIT15 定义错误
 (tag: V1.3) 修改HYS变量类型
 (tag: V1.2) 解决ADC通道配置函数错误的问题
 (tag: V1.1) 解决编译器警告
 (tag: V1.0) 格式化c文件，删除LIB，改为.S，修改了部分函数
 (tag: V0.8) 解决Flash和NVR数据写入异常的问题
 (tag: V0.7) 解决串口编译警告
 (tag: 0.6) 完善UART库函数
 (tag: V0.6) 增加了一些库函数接口，修复了一些问题
 (tag: V0.5) 补充TRIM_ReadUid函数声明
 (tag: V0.4) 增加芯片ID读取函数TRIM_ReadUid
 (tag: V0.3) Delete README.md
