1 /**
2   ******************************************************************************
3   * @file    system_target.c
4   * @author  Application Team
5   * @version V1.1.0
6   * @date    2019-10-28
7   * @brief   system source file.
8   ******************************************************************************
9   * @attention
10   *
11   ******************************************************************************
12   */
13 #include "target.h"
14 
15 #define NVR_REGINFOCOUNT1        (0x80400)
16 #define NVR_REGINFOBAKOFFSET     (0x100)
17 
18 /**
19   * @brief  Setup the microcontroller system
20   * @note   This function should be used only after reset.
21   * @param  None
22   * @retval None
23   */
SystemInit(void)24 void SystemInit(void)
25 {
26   uint32_t i,nCount,nValue,nAddress,nChecksum;
27 
28   nCount = *(__IO uint32_t *)NVR_REGINFOCOUNT1;
29   nChecksum = nCount;
30   nChecksum = ~nChecksum;
31   if(nChecksum != *(__IO uint32_t *)(NVR_REGINFOCOUNT1+4))
32   {
33     nCount = *(__IO uint32_t *)(NVR_REGINFOCOUNT1+NVR_REGINFOBAKOFFSET);
34     nChecksum = nCount;
35     nChecksum = ~nChecksum;
36     if(nChecksum != *(__IO uint32_t *)(NVR_REGINFOCOUNT1+NVR_REGINFOBAKOFFSET+4))
37     {
38       while(1);
39     }
40   }
41 
42   for(i=0; i<nCount; i++)
43   {
44     nAddress = *(__IO uint32_t *)(NVR_REGINFOCOUNT1+8+i*12);
45     nValue = *(__IO uint32_t *)(NVR_REGINFOCOUNT1+12+i*12);
46     nChecksum = nAddress + nValue;
47     nChecksum = ~nChecksum;
48     if(nChecksum != *(__IO uint32_t *)(NVR_REGINFOCOUNT1+16+i*12))
49     {
50       nAddress = *(__IO uint32_t *)(NVR_REGINFOCOUNT1+NVR_REGINFOBAKOFFSET+8+i*12);
51       nValue = *(__IO uint32_t *)(NVR_REGINFOCOUNT1+NVR_REGINFOBAKOFFSET+12+i*12);
52       nChecksum = nAddress + nValue;
53       nChecksum = ~nChecksum;
54       if(nChecksum != *(__IO uint32_t *)(NVR_REGINFOCOUNT1+NVR_REGINFOBAKOFFSET+16+i*12))
55       {
56         while(1);
57       }
58     }
59     if((nAddress>=0x40014800) && (nAddress<=0x40015000))
60     {
61       RTC_WriteRegisters(nAddress, &nValue, 1);
62     }
63     else
64     {
65       *(__IO uint32_t *)(nAddress) = nValue;
66     }
67   }
68 }
69 
70 /**
71   * @brief  Initializes registers.
72   * @param  None
73   * @retval None
74   */
SystemUpdate(void)75 void SystemUpdate(void)
76 {
77 
78 }
79 
80 
81 /*********************************** END OF FILE ******************************/
82