# 项目名称：Fee_Demo

---
## 功能描述

本示例用于演示 MCAL Fee 模块的配置和使用:

- **Fee**: 
  - 本示例验证Fee 模块的功能，包括读取、写入、擦除等。
  - 本示例中配置PFLASH 0x40000 至 0x1017FF为Fee模块使用。
  - 本示例中配置中配置三个Block，分别为Fee_PowerOnDataBlock、Fee_AppDataBlock、Fee_DTCDataBlock。Fee_PowerOnDataBlock中记录上电次数，该块在每次上电时读取和写入，每次上电，上电次数均增加1次。Fee_DTCDataBlock在每次上电时写入固定数据0x01~0x08。Fee_AppDataBlock以30秒为周期写入数据。
  - 在初始化及使用Fee模块之前需先初始化Fls模块，Fls_MainFunction和Fee_MainFunction需要在任务中周期性调用。

复位后，初始化Fls和Fee，然后示例运行以下内容：
- 读取Fee_PowerOnDataBlock和Fee_DTCDataBlock数据，初始化相关变量。

- 将Fee_PowerUpCntSave and Fee_Block0WriteCnt各加1，然后将Fee_PowerOnDataBlock再次写入到Fee中。

- 每次上电后都将Fee_DTCDataBlock数据写入Fee中。

- 每隔30秒将Fee_AppDataBlock数据写入Fee中，写入后读取Block数据并检查与写入数据是否一致。

- 当Fee_BlockInvalidEn为真时，擦除Fee_AppDataBlock数据。在Fee_AppDataBlock被擦除后，若MCU在该Block被再次写入前复位，则Fee_Block1WriteCnt的值将被重置为0。

- 可通过如下变量观察上电次数及Block 写入次数：

  |变量名称|注释|
  | ---- | ------- |
  |Fee_PowerUpCntSave|上电次数|
  |Fee_Block0WriteCnt|Fee_PowerOnDataBlock 写入次数|
  |Fee_Block1WriteCnt|Fee_AppDataBlock 写入次数|

- **注意**

  YTM32B1MD1微控制器无DFlash，因此Fee功能只能通过PFLASH来实现。在使用PFLASH构建Fee时，建议代码与Fee不在同一个PFLASH块中。

---


## 操作步骤

+ ***步骤1***：使用 YCT 工具打开示例的配置工程文件（`Fee_Demo.yct`），根据您的需求配置工具链（默认使用 VS Code + GCC）。
+ ***步骤2***：生成代码，如果需要，您可以更改配置（以适应您自己的硬件设计），如果这样做，请确保所有修改都正确无误，并且在生成代码之前没有错误存在。
+ ***步骤3***：根据您的配置，使用相应的工具（VS Code/IAR/Keil IDE）打开生成的工程。
+ ***步骤4***：编译生成的工程，打开 EVB 电源并通过可用的调试器（如 J-Link 调试探针）将编译好的可执行文件下载到 EVB。
+ ***步骤5***：调试、运行示例代码。
  
---


## 硬件需求
+ **EVB**: YTM32B1MD1-EVB-Q100-Rev.A/B
+ **调试器**: J-Link HW v9 或更高版本，安装了 YUNTU `YTM32B1MD1` 补丁（支持包）。

***注意***: 请确认EVB底部的版本号，如果是***YTM32B1MD1-EVB-Q100-Rev.A***，`Icu_Demo`请使用以`_RevA`结尾的样例工程。

---

## 软件需求

+ **配置和代码生成工具**
  + **MCAL**: Yuntu Config Tool(YCT) v2.7.0 或更高版本
+ **编译器工具链**
  + **GCC**: GNU GCC v10.3 或更高版本
  + **Keil/MDK**: ARM Keil/MDK v5.36 或更高版本(编译器推荐使用`armclang v6.18.2`)
  + **IAR**: IAR v9.50 或更高版本
  + **VS Code**: Microsoft Visual Studio Code IDE v1.76 或更高版本（需要 C/C++ 支持，GNU 工具链，CMake v3.25，ninja，Cortex-Debug 扩展安装）
+ **Debugger driver**
    + **J-Link**: SEGGER J-Link v7.82 或更高版本，需要安装 YUNTU `YTM32B1MD1` 补丁（支持包）。
    + **Ozone Debugger tool**: SEGGER Ozone v3.28 或更高版本。

    ***注意***: 需要安装 **YTM32B1MD1** 补丁，补丁可通过 **YCT** 工具或联系 ***云途 销售/FAE 团队***获取.

---