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 *********************************/
|