본문 바로가기

STM32/STM32

Hard Fault(하드 폴트) - 0으로 나누기

728x90

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으로 나누기를 방지. 이렇게 하면 하드 폴트를 피할 수 있음.

728x90

'STM32 > STM32' 카테고리의 다른 글

[STM32] multiple definition error  (0) 2024.03.14
[STM32F1] Timer Interrupt  (0) 2022.12.06