Код
CRC->CR = CRC_CR_RESET; // сбросим регистр данных CRC Engine
for(i = 0; i < FRAME_SIZE - 1; i++) // цикл по всем словам данных, кроме последнего
CRC->DR = TxData[i]; // вычисляем CRC
TxData[i] = CRC->DR; // и заносим в последнее слово данных
spiStartExchange(&SPID2, 12, TxData, RxData);
Контрольная сумма вычисляется неверно (не совпадает с CRC на принимающей стороне, при одинаковых данных на обеих сторонах). Если поставить брекпоинт на любой из первых трех строчек, и прогнать по шагам, CRC вычисляется верно. Если брекпоинт поставить на 4 или 5 строке - CRC неверно. Запрещать прерывания нв время вычисления CRC пробовал - не помогло. CRC Engine используется только в одном Thread.
P.S. TxData - uint32_t
Сообщение отредактировал nanorobot - Apr 8 2018, 09:33