hal accumulate 只是計算前不會重置DR寄存器而已
- 比如 uint8 test_data[256] = {0};
- 要么 整體校驗
- HAL_CRC_Calculate(hcrc1, test_data, 256);
- 要么 分段校驗 不過第一次使用需要用 HAL_CRC_Calculate 或者 __HAL_CRC_DR_RESET 清空DR寄存器
- // __HAL_CRC_DR_RESET 顯式清空DR
- __HAL_CRC_DR_RESET(hcrc1); //使用 HAL_CRC_Accumulate 前最好手動清空DR寄存器
- for (uint8 i=0; i<4; ++i) {
- HAL_CRC_Accumulate(hcrc1, tet_data + 64 * i, 64);
- }
- // HAL_CRC_Calculate 隱式清空DR
- for (uint8 i=0; i<4; ++i) {
- if (i == 0) {
- HAL_CRC_Calculate(hcrc1, test_data + 64 * i, 64);
- } else {
- HAL_CRC_Accumulate(hcrc1, tet_data + 64 * i, 64);
- }
- }
復制代碼
|