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)24void 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)75void SystemUpdate(void) 76 { 77 78 } 79 80 81 /*********************************** END OF FILE ******************************/ 82