-
카테고리
-
세부 분야
임베디드 · IoT
-
해결 여부
미해결
UART Debug 부분
19.12.24 17:19 작성 조회수 119
0
일단 CubeIDE 가 아닌 Atolic TrueStudio 환경에서 프로그램을 하고 있는데,
stm32f4xx_it.c 에서 선언한 전역 변수
uart6_rx_flag = 0;
uart6_rx_data = 0;
을 main.c 에 extern 선언 해주는 것 까지 잘 따라했는데
무슨 일인지 USART Receive를 하면서 flag가 바뀌면
main의 while문에서
바뀐 flag를 처리를 못합니다.
그래서 플래그를 안쓰고 IRQ Handler에서 받은 데이터를 Direct하게 송신하게 했더니 또 잘되긴 합니다.
애초에 truestudio에서 extern 문법을 제대로 처리를 하지 못하는 건가요?
답변을 작성해보세요.
1
ChrisP
지식공유자2019.12.24
안녕하세요
1. 변수 선언하실때 앞에 volatile 키워드를 붙여서 다시 해보시기 바랍니다.
2. 아마 TrueSTUDIO의 코드 최적화 레벨이 -O0 (None) 이 아닐겁니다. 프로젝트 옵션에서 Optimization 레벨을 위와같이 설정해주셔도 해결 될 겁니다.
후자의 방법을 추천드립니다.
문제가 해결되는지 한번 확인해보세요!
0
0
답변 3