요즘 계속 STM32를 사용해보고 있는데 사소한 곳에서 계속 걸려서 진행이 더디다....사실 그냥 처음 하는 사람들은 별 거부감 없이 사용하니까 진행이 빠를 수도 있는데 난 다른 프로세서를 먼저 사용하고 하는 것이라 그것과 다르게 동작할 때 무진장 해메이게 된다.
printf도 마찬가지로 꽤 헤매고 다녔다.....일단 여기저기 강좌나 이런 것에서 시키는데로 하면 출력이 가능하다. 전 포스팅에서 살짝 다루었었는데 USART로 printf하는 방법이야 간단하다.
https://electric-lab.tistory.com/442?category=918786
하지만.....직접 과제를 하는 도중에 출력이 안되는 상황이 발생.....
printf("%d ", a);
뭐 이런 식으로 출력을 하는데 출력이 나오지 않았다. 혹시나 해서 printf를 사용하지 않고 출력하니 되던데.....
혹시나 해서 그냥 문자 출력을 했는데
printf("Hello");
그래도 안된다......뭐가 문제인가....한참 헤메고 찾아보고...디버깅에도 _wirte 함수에 들어가지도 않고.....
짜증이 나는 순간....초심으로 돌아가서 보니...음....혹시.....'\n' 때문??? 비교해보니 없네....
printf("Hello\n");
아...된다.....뭐냐 이건.....찾아보니...STM32 IDE에서는 stdout 버퍼를 개행이 올때 처리한다고 한다.....아...그러니 이게 디버깅에도 함수 호출도 안되고 출력도 안되지....아놔....
그럼 정리해보면 \n을 꼭 써야 나온다는 건데....너무 불합리하다.....이런식으로는 내가 원하는데로 출력하려면 번거롭다...그래서찾아보니....C,C++에 버퍼를 설정하는 함수가 있다.
누군가 잘 정리해 두었다. 고로 버퍼를 사용하지 않으면 내가 원하듯 맘대로 출력이 가능하다는 말씀.....
코드에 setbuf(stdout,NULL); 을 추가하니.....문제없이 잘 된다.....
아 그리고....버퍼를 사용하게 되면 개행시 "\r\n"을 사용해야 개행된다. 그전에는 "\n"만으로도 개행되었지만.....
아...고생고생.....정말 뭘 하나하기 힘드네.....
'프로그램 이야기 > STM32' 카테고리의 다른 글
[STM32] Timer Polling 사용(HAL, LL) (0) | 2021.07.12 |
---|---|
[STM32] DAC 사용하기...(HAL, LL Driver) (0) | 2021.07.12 |
[STM32] USART 설정과 송수신 사용 (printf 사용 추가) (0) | 2021.06.30 |
[STM32] STM32CubeIDE 한글 주석 사용하기 (0) | 2021.06.30 |
[STM32] STM32 개발 환경 (0) | 2021.02.03 |