Почему это вызывает NOCP?

У меня проблема с серьезной ошибкой в ​​ядре процессора M4F. Проблема в том, что у меня была ошибка NOCP (попытка выполнить инструкцию сопроцессора). После удаления этой части кода:

uint16_t SV_current_heater_1_6[6];
uint8_t HBTriacCurrentFlowP = 0;

if (SV_current_heater_1_6[0] > 2200){
    HBTriacCurrentFlowP |= 1;
}
else {
    HBTriacCurrentFlowP &= 254;
}

Проблема исчезла. Что я сделал не так, чтобы я мог в следующий раз учиться у него?

Информация:

Atollic TrueStudio, HAL, STM32F4xx

1 ответ

У меня такая же проблема, ошибка NOCP в коде инициализации блока MPU. Все мое приложение не использует плавающие точки. Включение FPU с помощью регистра CPACR решает проблему, но мне интересно, почему что-то использует FPU, когда операции с плавающей запятой не используются явно. Кроме того, у меня есть проблема с его отладкой, поскольку(ARM CMSIS API) вызывает ошибку и пошаговое выполнение, хотя эта функция не вызывает никаких ошибок, и выполнение программы продолжается.

Другие вопросы по тегам