These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!

Committer:
frank26080115
Date:
Sun Mar 20 05:38:56 2011 +0000
Revision:
0:bf7b9fba3924

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:bf7b9fba3924 1 /*****************************************************************************
frank26080115 0:bf7b9fba3924 2 * crc32.c: Ethernet CRC module file for NXP LPC230x Family Microprocessors
frank26080115 0:bf7b9fba3924 3 *
frank26080115 0:bf7b9fba3924 4 * Copyright(C) 2006, NXP Semiconductor
frank26080115 0:bf7b9fba3924 5 * All rights reserved.
frank26080115 0:bf7b9fba3924 6 *
frank26080115 0:bf7b9fba3924 7 * History
frank26080115 0:bf7b9fba3924 8 * 2006.09.01 ver 1.00 Prelimnary version, first Release
frank26080115 0:bf7b9fba3924 9 *
frank26080115 0:bf7b9fba3924 10 ******************************************************************************/
frank26080115 0:bf7b9fba3924 11 #include "lpc17xx_emac.h" /* LPC23xx/24xx definitions */
frank26080115 0:bf7b9fba3924 12 #include "crc32.h"
frank26080115 0:bf7b9fba3924 13
frank26080115 0:bf7b9fba3924 14 /******************************************************************************
frank26080115 0:bf7b9fba3924 15 ** Function name: CRC_init
frank26080115 0:bf7b9fba3924 16 **
frank26080115 0:bf7b9fba3924 17 ** Descriptions: Begin CRC calculation.
frank26080115 0:bf7b9fba3924 18 **
frank26080115 0:bf7b9fba3924 19 ** parameters: pointer to the CRC area.
frank26080115 0:bf7b9fba3924 20 ** Returned value: None
frank26080115 0:bf7b9fba3924 21 **
frank26080115 0:bf7b9fba3924 22 ******************************************************************************/
frank26080115 0:bf7b9fba3924 23 void crc32_init(uint32_t *pCRC)
frank26080115 0:bf7b9fba3924 24 {
frank26080115 0:bf7b9fba3924 25 *pCRC = 0xffffffff;
frank26080115 0:bf7b9fba3924 26 }
frank26080115 0:bf7b9fba3924 27
frank26080115 0:bf7b9fba3924 28 /******************************************************************************
frank26080115 0:bf7b9fba3924 29 ** Function name: CRC32_add
frank26080115 0:bf7b9fba3924 30 **
frank26080115 0:bf7b9fba3924 31 ** Descriptions: Calculate CRC value one at a time
frank26080115 0:bf7b9fba3924 32 **
frank26080115 0:bf7b9fba3924 33 ** parameters: pointer to the CRC area, and passing value to get the CRC
frank26080115 0:bf7b9fba3924 34 ** Returned value: None
frank26080115 0:bf7b9fba3924 35 **
frank26080115 0:bf7b9fba3924 36 ******************************************************************************/
frank26080115 0:bf7b9fba3924 37 void crc32_add(uint32_t *pCRC, uint8_t val8)
frank26080115 0:bf7b9fba3924 38 {
frank26080115 0:bf7b9fba3924 39 uint32_t i, poly;
frank26080115 0:bf7b9fba3924 40 uint32_t entry;
frank26080115 0:bf7b9fba3924 41 uint32_t crc_in;
frank26080115 0:bf7b9fba3924 42 uint32_t crc_out;
frank26080115 0:bf7b9fba3924 43
frank26080115 0:bf7b9fba3924 44 crc_in = *pCRC;
frank26080115 0:bf7b9fba3924 45 poly = 0xEDB88320L;
frank26080115 0:bf7b9fba3924 46 entry = (crc_in ^ ((uint32_t) val8)) & 0xFF;
frank26080115 0:bf7b9fba3924 47 for (i = 0; i < 8; i++)
frank26080115 0:bf7b9fba3924 48 {
frank26080115 0:bf7b9fba3924 49 if (entry & 1)
frank26080115 0:bf7b9fba3924 50 entry = (entry >> 1) ^ poly;
frank26080115 0:bf7b9fba3924 51 else
frank26080115 0:bf7b9fba3924 52 entry >>= 1;
frank26080115 0:bf7b9fba3924 53 }
frank26080115 0:bf7b9fba3924 54 crc_out = ((crc_in>>8) & 0x00FFFFFF) ^ entry;
frank26080115 0:bf7b9fba3924 55 *pCRC = crc_out;
frank26080115 0:bf7b9fba3924 56 return;
frank26080115 0:bf7b9fba3924 57 }
frank26080115 0:bf7b9fba3924 58
frank26080115 0:bf7b9fba3924 59 /******************************************************************************
frank26080115 0:bf7b9fba3924 60 ** Function name: CRC32_end
frank26080115 0:bf7b9fba3924 61 **
frank26080115 0:bf7b9fba3924 62 ** Descriptions: Finish CRC calculation
frank26080115 0:bf7b9fba3924 63 **
frank26080115 0:bf7b9fba3924 64 ** parameters: pointer to the CRC area.
frank26080115 0:bf7b9fba3924 65 ** Returned value: None
frank26080115 0:bf7b9fba3924 66 **
frank26080115 0:bf7b9fba3924 67 ******************************************************************************/
frank26080115 0:bf7b9fba3924 68 void crc32_end(uint32_t *pCRC)
frank26080115 0:bf7b9fba3924 69 {
frank26080115 0:bf7b9fba3924 70 *pCRC ^= 0xffffffff;
frank26080115 0:bf7b9fba3924 71 }
frank26080115 0:bf7b9fba3924 72
frank26080115 0:bf7b9fba3924 73 /******************************************************************************
frank26080115 0:bf7b9fba3924 74 ** Function name: CRC32_bfr
frank26080115 0:bf7b9fba3924 75 **
frank26080115 0:bf7b9fba3924 76 ** Descriptions: Get the CRC value based on size of the string.
frank26080115 0:bf7b9fba3924 77 **
frank26080115 0:bf7b9fba3924 78 ** parameters: Pointer to the string, size of the string.
frank26080115 0:bf7b9fba3924 79 ** Returned value: CRC value
frank26080115 0:bf7b9fba3924 80 **
frank26080115 0:bf7b9fba3924 81 ******************************************************************************/
frank26080115 0:bf7b9fba3924 82 uint32_t crc32_bfr(void *pBfr, uint32_t size)
frank26080115 0:bf7b9fba3924 83 {
frank26080115 0:bf7b9fba3924 84 uint32_t crc32;
frank26080115 0:bf7b9fba3924 85 uint8_t *pu8;
frank26080115 0:bf7b9fba3924 86
frank26080115 0:bf7b9fba3924 87 crc32_init(&crc32);
frank26080115 0:bf7b9fba3924 88 pu8 = (uint8_t *) pBfr;
frank26080115 0:bf7b9fba3924 89 while (size-- != 0)
frank26080115 0:bf7b9fba3924 90 {
frank26080115 0:bf7b9fba3924 91 crc32_add(&crc32, *pu8);
frank26080115 0:bf7b9fba3924 92 pu8++ ;
frank26080115 0:bf7b9fba3924 93 }
frank26080115 0:bf7b9fba3924 94 crc32_end(&crc32);
frank26080115 0:bf7b9fba3924 95 return ( crc32 );
frank26080115 0:bf7b9fba3924 96 }
frank26080115 0:bf7b9fba3924 97
frank26080115 0:bf7b9fba3924 98 /*********************************************************************************
frank26080115 0:bf7b9fba3924 99 ** End Of File
frank26080115 0:bf7b9fba3924 100 *********************************************************************************/