            免责声明:
Demo Code仅供参考,目的是为了缩短开发者熟悉产品外设的时间.
若直接或间接使用Demo Code代码,由使用者承担因此产生的风险和责任.
==================================================
    MS32F031_EV说明_20220110:
建议:中断服务函数写在工程源码ms32f0xx_it.c文件中(取消注释后编写代码,参考已有的添加未列出的);
     RTC相关例程,较发布前有更新.
1.1)增加以下例程:
    例程名称                            功能
    SPI FLASH例程           PA5,PA6, PA7,PA4;读W25Q128JV DeviceID并向测试地址写64字节数据,回读对比;测试OK,LED1闪烁周期默认1S;测试Fail,LED1闪烁周期默认250ms. 
    CRC32                   计算10字节CRC32结果,与预期结果比较;测试OK,LED1闪烁周期默认1S;测试Fail,LED1闪烁周期默认250ms.
    RTC_Calendar            使能RTC时钟并初始化;每500ms获取RTC时间并通过printf输出,LED1闪烁周期默认1S.
    UART_Receive_DMA        DMA channel3 Uart Rx,接收数据存入'buff数组'中;数量到指定长度(默认10Byte)后,UART查询方式发送;若DMA传输未发生错误;LED1闪烁周期默认1S, 若DMA传输发生错误,关闭DMA通道,LED1闪烁周期默认250ms.
    FLASH_Program           擦除指定Flash测试页(FLASH_RW_TEST_PAGE_ADD),写入指定长度(TEST_FLASH_BUFF_LEN)数据并回读对比;测试OK,LED1闪烁周期默认1S,测试Fail,LED1闪烁周期默认250ms.
    CMP2_OPAMP1Gain2_ADC    CMP2正端OPAMP1输出,负端内部2.0V;PA12输出; OPAMP1 2Gain,正端PB5;每隔100ms, ADC 采集转换一次OPAMP1;LED1闪烁,周期默认1S,ADC有异常时 LED1闪烁周期默认200ms.
    CMP1_INT                CMP1正端INP2(PA1),负端内部AVDD 4/8,PA11输出;允许中断;中断后,依据CMP寄存器out位值,点亮或者熄灭LED2并输出信息;LED1闪烁,周期默认1S.
    RTC_Alarm               使能RTC时钟并初始化;设置alarm 秒中断;Alarm中断后,获取RTC时间并通过printf输出,LED1闪烁周期默认1S.
    TIM3_Basic              Timer3定时更新中断(默认100ms);中断服务函数置Flag,主程序查询Flag翻转LED.
    TIM16_Basic             Timer16定时更新中断(默认200ms);中断服务函数置Flag,主程序查询Flag翻转LED.
    ADC_Basic_2CH           每隔100ms,采集转换ADC IN1(R8分压值,测试时调节R8),IN4(PA4)一次;LED1闪烁,周期默认1S.
    TIM3_CH1_PWM            PA6输出占空比5%-99%往返变化(每10ms调整1%),周期1KHz的PWM波; LED1周期默认1S.
    TIM17_CH1N_PWM          PB7输出占空比5%-99%往返变化(每10ms调整1%),周期1KHz的PWM波;LED2有呼吸效果; LED1周期默认1S.
    PVD_Level6              使能PVD检测,检测VDD低于Level6时中断;中断服务函数置Flag,主程序查询Flag.LED1闪烁周期默认1S,VDD低于Level6时LED1闪烁周期默认250ms.
    RTC_Alarm_SS            使能RTC时钟并初始化;设置alarm 子秒中断(例程~31.25ms);Alarm中断后,获取RTC时间并通过printf输出,LED1闪烁周期默认1S.
    WWDG_Reset              WWDG设置20ms,窗口10ms;main 5S内查询WWDG计数小于窗口刷新.WWDG复位后点亮LED2 5S.LED1闪烁周期默认1S.
    PWR_STOP_RTC_Alarm_SS   使能RTC时钟并初始化,设置alarm时间,子秒中断,例程~31.25ms;alarm中断累积5S后进入STOP模式,并通过alarm中断唤醒.LED1默认默认500ms翻转,获取RTC时间并通过printf输出.
    IWDG_Reset              IWDG设置1s;main 4S内刷新.IWDG复位后点亮LED2 5S.IWDG刷新期间LED1闪烁周期默认1S.
    PWR_STOP_WFE_EXIT_PB4   LED 1S周期闪烁5次后,进入STOP模式(WFE)LED2亮;EXIT事件KEY2(PB4)按下后唤醒LED2灭,程序继续运行.
    PWR_SLEEP_EXIT_PB4      LED 1S周期闪烁5次后,进入SLEEP模式,LED2亮;EXIT中断KEY2(PB4)按下后唤醒,LED2灭,程序继续运行.
    PWR_SLEEP_WFE_EXIT_PB4  LED 1S周期闪烁5次后,进入SLEEP(WFE)模式,LED2亮;EXIT事件KEY2(PB4)按下后唤醒,LED2灭,程序继续运行.
    PWR_StandBy_WKUP1       LED 1S周期闪烁5次后,进入Standby模式,复位或者PA0上升沿系统退出Standby模式(等同于复位).     
    PWR_StandBy_IWDG        IWDG设置1s;刷新IWDT 5S后进入Standby模式,1S IWDT reset.IWDG刷新期间LED1闪烁周期默认1S.        
  例程的使用测参阅例程中的“readme.txt”.
1.2)增加例程使用的引脚信息如下:
      例程                        EV信号               |              其它信号                                                        
                        LED1   TX     RX    KEY2   IN1     引脚     信号      | 引脚     信号     | 引脚      信号    | 引脚       信号      
                        PB6    PA2    PA3   PB4    PA1     --        --         --      --         --      --         --        --       
  SPI_Flash             V      V      V     --     --      PA5      SPI1_SCK   PA6    SPI1_MISO    PA7    SPI1_MOSI   PA4       SPI CS 
  CRC32                 V      V      V     --     --      --        --         --      --          --     --         --        --   
  RTC_Calendar          V      V      V     --     --      --        --         --      --          --     --         --        --      
  UART_Receive_DMA      V      V      V     --     --      --        --         --      --          --     --         --        --           
  FLASH_Program         V      V      V     --     --      --        --         --      --          --     --         --        --   
  CMP2_OPAMP1Gain2_ADC  V      V      V     --     --      PB5      OPAMP1_INP PB7     OPAMP1_OUT   PA12   CMP2 OUT   --        --   
  CMP1_INT              V      V      V     --     --      PA1      CMP1_INP2  PA11    CPM1_OUT     PB7    LED2       --        --
  RTC_Alarm             V      V      V     --     --      --        --         --      --          --     --         --        -- 
  TIM3_Basic            V      V      V     --     --      --        --         --      --          --     --         --        -- 
  TIM16_Basic           V      V      V     --     --      --        --         --      --          --     --         --        -- 
  ADC_Basic_2CH         V      V      V     --     V       PA4       IN4        --      --          --     --         --        -- 
  TIM3_Basic            V      V      V     --     --      PA6       TIM3_CH1   --      --          --     --         --        -- 
  TIM16_Basic           V      V      V     --     --      PB7       TIM17_CH1N --      --          --     --         --        -- 
  PVD_Level6            V      V      V     --     --      --        --         --      --          --     --         --        -- 
  RTC_Alarm_SS          V      V      V     --     --      PB7       LED2       --      --          --     --         --        --
  WWDG_Reset            V      V      V     --     --      PB7       LED2       --      --          --     --         --        -- 
  PWR_STOP_RTC_Alarm_SS V      V      V     --     --      PB7       LED2       --      --          --     --         --        -- 
  IWDG_Reset            V      V      V     --     --      PB7       LED2       --      --          --     --         --        --
  PWR_STOP_WFE_EXIT_PB4 V      V      V     --     --      PB7       LED2       --      --          --     --         --        -- 
  PWR_SLEEP_EXIT_PB4    V      V      V     --     --      PB7       LED2       --      --          --     --         --        --
  PWR_SLEEP_WFE_EXIT_PB4V      V      V     --     --      PB7       LED2       --      --          --     --         --        --
  PWR_StandBy_WKUP1     V      V      V     --     --      --        --         --      --          --     --         --        --   
  PWR_StandBy_IWDG      V      V      V     --     --      --        --         --      --          --     --         --        --   
2)其它修订说明:
2.1)修正:TIM1_CH1_PWMwN,mian.c,line82为:MS32_TIM_OC_SetCompareCH1(TIM1, (MS32_TIM_GetAutoReload(TIM1)+1) * Timer1_PWM_Duty / 100 );
2.2)完善Timer例程初始化;
2.3)所有例程readme.txt硬件调整为EV Board V1.1,并调整硬件设置说明;
2.4)修改UART_printf_loop_RX_IT例程,增加ORE提示;
2.5)完善PWR_STOP_EXIT_PB4例程.
  PWR_STOP_EXIT_PB4    V      V      V     V       --      PB7       LED2       --      --          --     --         --        -- 
==================================================
    MS32F031_EV说明_2021201:
提供以下例程:
    例程名称                            功能(包含硬件引脚)
    I2C_EEPROM              PA9 ,PA10;向AT24C02写8字节数据,回读对比;测试OK,LED1闪烁周期默认1S;测试Fail,LED1闪烁周期默认250ms;
    GPIO_Toggle             SysTick软定时;LED1闪烁默认周期为1S(高+低,宏定义LED_BLINK_HALF_PER修改默认值); 
    UART_printf_loop_RX_IT  中断接收字符,将符合帧格式的数据放入'buff数组'中;接收到完成的一帧数据后,查询方式发送;  不符合帧格式(无$,收到0xA或者到达'buff数组'长度),丢弃;
    GPIO_Key                按下按键KEY2(PB4) 翻转LED1,下次有效需要抬起按键;  
    EXTI_ToggleLED          PB4 外部中断 line4,下降沿触发;触发后翻转LED1; 
    TIM1_2_Basic            Timer1 or Timer2 定时更新中断(默认时间分别为250ms,100ms);中断服务函数置Flag,主程序查询Flag翻转LED;
    TIM1_CH1_PWMwN          PA8(低电平包含死区时间),PB13 输出占空比5%-99%往返变化(每10ms调整1%),周期1KHz的PWM波;波形互补,死区时间1us;  
    PWR_STOP_EXIT_PB4       LED 1S周期闪烁5次后,进入STOP模式;KEY2(PB4)按下后唤醒,程序继续运行;LED 200ms周期闪烁25次后,进入STOP模式;无唤醒源,需要重新上电或者外部复位;
    ADC_Basic               每隔100ms, ADC IN1 采集转换一次;LED1闪烁周期默认1S;
    OPAMP_2Gain_ADC         PB5,PB7;PAMP1 2Gain;每隔100ms, ADC 采集转换一次OPAMP1;ADC_DMA 每隔100ms, ADC按照IN1(PA1 R8),IN4(PA4)序列采集转换,DMA传输转换结果; LED1闪烁周期默认1S;
    HSE_LSE_MOC             PA8输出LSE/2; HSE经过PLL输出24M作为系统时钟; LED1闪烁周期默认1S.
例程的使用测参阅例程中的“readme.txt”
例程使用的引脚信息如下:
      例程                        EV信号                         |              其它信号                                                        
                    LED1      TX       RX       KEY2      IN1      引脚      信号        引脚        信号      
                    PB6      PA2       PA3      PB4       PA1      --        --         --        --       
ADC_Basic            V        V        V        --        V        --        --         --        --        
ADC_DMA              V        V        V        --        V        PA4       IN4        --        --        
GPIO_Key             V        V        V        V        --        --        --         --        --       
GPIO_Toggle          V        V        V        --       --        --        --         --        --       
EXTI_ToggleLED       V        V        V        V        --        --        --         --        --       
I2C_EEPROM           V        V        V        --       --        PA9       I2C1_SCL   PA10      I2C1_SDA 
PWR_STOP_EXIT_PB4    V        V        V        V        --        --        --         --        --       
TIM1_2_Basic         V        V        V        --       --        --        --         --        --       
TIM1_CH1_PWMwN       V        V        V        --       --        PA8       TIM1_CH1   PA13      TIM1_CH1N 
UART_printf_loop_RX_IT  V     V        V        --       --        --        --         --        --        
OPAMP_2Gain_ADC      V        V        V        --       --        PB5       OPAMP1_INP PB7       OPAMP1_OUT
HSE_LSE_MOC          V        V        V        --       --        PA8       MCO        --        --     
==================================================
