/**
  ******************************************************************************
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * Copyright (C) 2021 Shanghai Eastsoft Microelectronics Co., Ltd. ALL rights reserved.
  *******************************************************************************
  */

<--------------------------------------------------------------------------------
Version history:
--------------------------------------------------------------------------------->
2022-08-04	V1.0.0	AE TEAM

<--------------------------------------------------------------------------------
Demo introduction:
--------------------------------------------------------------------------------->
本示例功能：使用CMU单元的时钟安全管理功能，当HOSC发生故障时停振时，系统时钟切换到HRC，当HOSC重新起振时，系统始终再次切换到HOSC。

<--------------------------------------------------------------------------------
测试环境:
--------------------------------------------------------------------------------->
测试用板；
ES-PDS-ES32F010xDB1

辅助工具：


辅助软件：
ESBridge上位机软件

<--------------------------------------------------------------------------------
测试步骤：
--------------------------------------------------------------------------------->
1) 编译工程，编译通过后将程序下载到目标芯片；
2) 按下复位按键和在IDE中点击“运行”进行仿真；
3) 可以看到MCU发送的打印信息，从打印信息中可以看到当前系统时钟为HOSC，以及当前HRC频率等级为1；
4) 保持短接开发板的12M外部晶振的管脚，从打印信息中可以看到系统时钟切换到内部HRC，且HRC频率等级为2；
5) 移除短接条件可以看到系统时钟再次切回到HOSC；

<--------------------------------------------------------------------------------
注意：
--------------------------------------------------------------------------------->
1) current_clk为系统时钟源，1代表HRC，3代表HOSC；
2) clk_change_reason为导致系统时钟切换原因，最低字节的LSB为1或2分别表示由cmu中断的停振和起振引起，最低字节的MSB为1或2表示由NMI中断引起的；
3) main.c中，已注释函数md_cmu_enable_hosc_nmi_interrupt，即不推荐使用NMI中断，因为起振并不会引起NMI中断；
4) HRC频率等级为1代表HRC频率为16M，HRC频率等级为2代表HRC频率为32M；

<--------------------------------------------------------------------------------
System clock:
--------------------------------------------------------------------------------->
External HOSC 12MHz

<--------------------------------------------------------------------------------
Pin connection: 
--------------------------------------------------------------------------------->
USART TX  ---- PA11[GPIO_FUNC_7]
