inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Dự án thực hành nhúng học qua xe scooter điện

Nhận tín hiệu đầu vào ga - Thực hành ADC

83. volatile로 선언한 이유가 이해 안됩니다.

27

namkyungnyoon1500

33 câu hỏi đã được viết

0

adc_raw, throttle_v를 volatile로 선언한 이유가 무엇 때문인지 이해가 안됩니다.

while문 안에서 계속 값을 대입하기 때문에 volatile 선언을 안해도 될거라고 생각이 듭니다.


adc도 인터럽트와 같은 동작을 해서 그런가요 ?


임베디드 stm32 hardware motordriver artwork

Câu trả lời 1

0

insid2embedded

안녕하세요.

말씀하신 것처럼 현재 코드 구조만 놓고 보면 adc_raw, throttle_v는 while문 안에서 계속 값을 새로 대입하기 때문에 volatile이 없어도 정상적으로 동작합니다.

강의에서는 ADC 측정값처럼 하드웨어 상태와 직접 연관되어 계속 갱신되는 변수들을 구분하기 위해 volatile로 선언했습니다. 이후 ADC 값을 인터럽트나 DMA에서 갱신하고 메인 코드에서 사용하는 구조로 변경할 경우에는 volatile이 실제로 중요한 의미를 갖게 됩니다.

volatile은 컴파일러에게 “이 값은 코드 흐름만 보고 값이 변하지 않는다고 가정하지 말고, 실제 메모리에서 다시 읽어라”라는 의미를 줍니다.

따라서 현재 예제에서는 조금 보수적으로 선언해 둔 것으로 이해하시면 됩니다. volatile이 붙어 있다고 해서 잘못된 코드는 아니고, 현재 구조에서는 없어도 동작하는 정도의 차이라고 보시면 됩니다.

0

namkyungnyoon1500

네 감사합니다.

86, data bit순서가 바뀌어야 할것 같습니다.

0

29

1

85. pwm사용에 기본구조 이해가 같이 요구되네요

0

29

1

dc모터 회전원리

0

32

2

82. 16:50초 설명에 대한 오해 및 adc mode비교 자료

0

42

2

81. 소프트웨어 작성 방법론에 조언 부탁 드립니다.

0

41

2

00. stm32cubeIDE를 회사에서도 사용하나요 ?

0

31

1

상전류 읽는 타이밍 관련 문의

0

48

2

uart, tera term 실습이 잘 안됩니다.

0

51

3

80. 인터럽스와 일반함수 차이

0

38

1

79. int main(void)선언 없이 어떻게 동작하나요 ?

0

38

1

79. int main(void)선언 없이 어떻게 동작하나요 ?

0

28

1

74. 포인터 크기는얼마인가요 ?

0

37

1

73. 왜 hex를 사용하나요 ?

0

43

2

71. 40초쯤에 소리가 안납니다.

0

31

1

70. 강의에 사용되는 보드는 어떤것인가요 ?

0

53

2

00. 인버터 회로만 보고 소비전력을 예측 가능하나요 ?

0

49

1

58강, 유니폴라, 바이폴라 방식중 바이폴라가 대세라고 보면 되나요 ?

0

49

2

57강. 모터인데 왜 전압제어를 하나요 ?

0

52

2

57강. PWM은 sine을 만들어 내는 걸로 이해 하면 되나요 ?

0

45

2

49강. 제어이론의 구체적 다이어그램 설명 요청드립니다.

0

42

2

55강. dead time을 고려하면, 원래의 original신호와는 달라지지 않나요 ?

0

37

2

스위칭 주파수 설정

0

47

2

P6KE47CA 이 부품에 대해서 궁금합니다.

0

54

2

교육용 보드 쓰로틀 질문입니다.

0

77

3