83. volatile로 선언한 이유가 이해 안됩니다.
56
작성한 질문수 36
adc_raw, throttle_v를 volatile로 선언한 이유가 무엇 때문인지 이해가 안됩니다.
while문 안에서 계속 값을 대입하기 때문에 volatile 선언을 안해도 될거라고 생각이 듭니다.
adc도 인터럽트와 같은 동작을 해서 그런가요 ?
답변 1
0
안녕하세요.
말씀하신 것처럼 현재 코드 구조만 놓고 보면 adc_raw, throttle_v는 while문 안에서 계속 값을 새로 대입하기 때문에 volatile이 없어도 정상적으로 동작합니다.
강의에서는 ADC 측정값처럼 하드웨어 상태와 직접 연관되어 계속 갱신되는 변수들을 구분하기 위해 volatile로 선언했습니다. 이후 ADC 값을 인터럽트나 DMA에서 갱신하고 메인 코드에서 사용하는 구조로 변경할 경우에는 volatile이 실제로 중요한 의미를 갖게 됩니다.
volatile은 컴파일러에게 “이 값은 코드 흐름만 보고 값이 변하지 않는다고 가정하지 말고, 실제 메모리에서 다시 읽어라”라는 의미를 줍니다.
따라서 현재 예제에서는 조금 보수적으로 선언해 둔 것으로 이해하시면 됩니다. volatile이 붙어 있다고 해서 잘못된 코드는 아니고, 현재 구조에서는 없어도 동작하는 정도의 차이라고 보시면 됩니다.
Buck Converter design
0
56
2
uart 실습
0
66
1
VM 배선
0
60
2
듀티 조절 코드 질문
0
55
2
Query Regarding PCB Design and Manufacturing for Firmware Testing
0
60
3
홀카터 질문
0
48
1
C46~C48 크기
0
53
2
Teleplot 문의
0
52
1
MCU 선정 관련 문의
0
69
1
전류 센싱 문의
0
72
2
키트 구매 여부
0
77
3
소형모터 구동
0
52
2
stm 클럭설정
0
56
1
36. 전력은 900W가 될것 같습니다.
0
49
1
34.제너다이오드는 전류 분배기라고 생각하면 될까요 ?
0
42
0
33.제너다이오드와 tvs다이오드 모양이 동일합니다.
0
48
0
쓰로틀 V 변하지 않음
0
90
3
풀업 저항 크기와 커패시터 용량 선정 방법
0
70
2
86, data bit순서가 바뀌어야 할것 같습니다.
0
59
1
85. pwm사용에 기본구조 이해가 같이 요구되네요
0
60
1
dc모터 회전원리
0
66
2
82. 16:50초 설명에 대한 오해 및 adc mode비교 자료
0
83
2
81. 소프트웨어 작성 방법론에 조언 부탁 드립니다.
0
76
2
00. stm32cubeIDE를 회사에서도 사용하나요 ?
0
69
1





