stm32 MCU에서 0으로 나누기를 시도하면 하드 폴트(Hard fault) 발생할 수 있음.
하드 폴트는 프로그램이 비정상적인 동작을 할 때 발생하는 예외.
0으로 나누는 경우 하드 폴트가 발생하는 이유는 프로세서가 이러한 연산을 처리할 수 없기 때문.
0으로 나누기와 같은 잘못된 연산을 감지하고 이를 처리할 방법이 없을 때 하드 폴트 발생.
0으로 나누기를 방지하는 방법 : 나눈셈을 수행하기 전에 분모가 0인지 확인.
#include <stdio.h>
int divide(int numerator, int denominator) {
if (denominator == 0) {
// 분모가 0일 때 처리할 코드를 작성합니다.
// 예를 들어, 에러 메시지를 출력하거나, 에러 코드를 반환할 수 있습니다.
printf("Error: Division by zero\n");
return -1; // 에러 코드 반환
}
return numerator / denominator;
}
int main(void) {
int a = 10;
int b = 0;
int result = divide(a, b);
if (result != -1) {
printf("Result: %d\n", result);
} else {
printf("Division by zero encountered\n");
}
return 0;
}
위 코드에서 'divide' 함수는 나눗셈을 수행하기 전에 분모가 0인지 확인하여 0으로 나누기를 방지. 이렇게 하면 하드 폴트를 피할 수 있음.
'STM32 > STM32' 카테고리의 다른 글
[STM32] multiple definition error (0) | 2024.03.14 |
---|---|
[STM32F1] Timer Interrupt (0) | 2022.12.06 |