hpm_crc32.c 443 B

1234567891011121314151617181920212223242526
  1. /*
  2. * Copyright (c) 2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #include "hpm_crc32.h"
  8. uint32_t crc32(const uint8_t *buf, uint32_t len)
  9. {
  10. uint8_t i;
  11. uint32_t crc = 0xFFFFFFFF;
  12. while (len--) {
  13. crc ^= *buf++;
  14. for (i = 0; i < 8; ++i) {
  15. if (crc & 1)
  16. crc = (crc >> 1) ^ 0xEDB88320;
  17. else
  18. crc = (crc >> 1);
  19. }
  20. }
  21. return ~crc;
  22. }