| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | /******************************* (C) LiteMesh *********************************** @module  crc * @file    crc.c * @version 1.0.0 * @date    XX.XX.XXXX * $brief   crc ******************************************************************************* * @history     Version  Author         Comment * XX.XX.XXXX   1.0.0    kim  First release. ******************************************************************************* */   #include "stm32f4xx.h"#include "crc.h"#include "common_config.h"/**  * @brief    * @retval   */void CRC_Init(void){  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);  CRC->CR |= CRC_CR_RESET;  }/**  * @brief    * @retval   */void CRC_DeInit(void){  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, DISABLE);}/**  * @brief Читаем crc из последних 4х байт записанной прошивки  * @retval   */uint32_t CRC_Read(void) {  uint32_t* ptr = (uint32_t*)USER_FLASH_CRC_ADDRESS;  return *ptr;}/**  * @brief Считаем crc для записанной прошивки  * @retval   */uint32_t CRC_Calcucate(void) {  uint32_t res;  /* Reset CRC */  CRC->CR = ((uint8_t)0x01);  for(uint32_t* ptr=(uint32_t*)USER_FLASH_FIRST_PAGE_ADDRESS;ptr != (uint32_t*)USER_FLASH_CRC_ADDRESS;ptr++)    CRC->DR = *ptr; // добавляем всю прошивку в CRC  res = CRC->DR;  return res;} /******************************* (C) SWITRON *********************************/
 |