• 카테고리

    질문 & 답변
  • 세부 분야

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

답변 3

·

답변을 작성해보세요.

1

안녕하세요

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

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

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

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

0

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

0

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