강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

방구석하드웨어님의 프로필 이미지
방구석하드웨어

작성한 질문수

바닥부터 시작하는 STM32 드론 개발의 모든 것

1-3. 디버그 UART 및 printf 함수 출력

UART Debug 부분

작성

·

223

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 문법을 제대로 처리를 하지 못하는 건가요? 

답변 3

1

ChrisP님의 프로필 이미지
ChrisP
지식공유자

안녕하세요

1. 변수 선언하실때 앞에 volatile 키워드를 붙여서 다시 해보시기 바랍니다.

2. 아마 TrueSTUDIO의 코드 최적화 레벨이 -O0 (None) 이 아닐겁니다. 프로젝트 옵션에서 Optimization 레벨을 위와같이 설정해주셔도 해결 될 겁니다.

후자의 방법을 추천드립니다.

문제가 해결되는지 한번 확인해보세요!

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

잘 된다니 다행입니다! 그럼 앞으로도 즐거운 드론 개발 되시기 바랍니다~

0

잘 해결되네요 감사합니다~

방구석하드웨어님의 프로필 이미지
방구석하드웨어

작성한 질문수

질문하기