콘텐츠로 건너뛰기

[STM32] STM32CubeMX, CubeIDE 주석 한글 깨짐 문제 해결 방법!!

STM32CubeMX에서 설정을 하고 GENERATE CODE로 소스코드를 만들때
기존에 작성해 놓았던 한글 주석 코드가 다 깨지는 문제가 있습니다
먼저 Window – Preferences – General – Content Types – Text를 선택하신 다음
Default encoding에 UTF-8 이라고 입력 후 Update 버튼 클릭 후 Apply and Close 버튼으로 창을 닫습니다

보통 여기까지 하면 해결이 된다고 하시는 데 저같은 경우는 해결이 안되더라고요
그럼 환경변수 설정하시면 됩니다
환경변수 들어가는 방법은 간단히 윈도우 키를 누르고 ‘시스템 환경’까지만 치면 ‘시스템 환경 변수 편집’이라고 뜰겁니다
그걸 클릭 후 뜨는 창에서 환경변수를 클릭 하시면 됩니다
환경 변수에서 새로 만들기를 클릭하시고
변수 이름에 JAVA_TOOL_OPTIONS
변수값에 -Dfile.encoding=UTF-8
를 입력하시고 재부팅하시면 됩니다
보통 위쪽의 사용자 변수에 넣으면 되지만 안되시면 밑의 시스템 변수에도 추가해 보세요~

[STM32] STM32 LL 드라이버 LL_mDelay함수 동작 안하는 문제!!

LL 드라이버 사용시 LL_mDelay 함수가 제대로 동작하지 않을 때가 있는데요
cubeMX에서 초기화 코드를 만들때 시스템 클럭이 제대로 초기화 되지 않는 문제로 보입니다

SystemClock_Config()

위의 함수안에

LL_Init1msTick(168000000);

위의 코드가 있는지 확인하고 없을시 추가 하면 됩니다
함수안의 숫자는 시스템 클럭이니 사용하는 클럭에 맞춰서 넣어 주시면 됩니다

[STM32] STM32 LL 드라이버 UART 송신(TX) 방법!!

cubeMX에서 uart를 LL 드라이버로 설정 후 

LL_USART_TransmitData8(USARTx, 'a');

위와 같이 USARTx에 사용할 uart 번호와 보낼 한바이트를 넣으면 데이터를 보낼 수 있습니다
LL_USART_TransmitData8 함수를 보면 USARTx->DR = Value;와 같이 DR 레지스터에 값을 넣어주고 있는데요
송신을 할려면 DR 레지스터에 값을 넣어주기만 하면 됩니다
여러 바이트 즉 문자열을 보내고 싶을때는 아래와 같이 TXE 비트를 체크 해서 송신 플래그가 비어 있는지 확인 하고 다음 데이터를 보내면 됩니다

void USART_Transmit(USART_TypeDef *USARTx, char * data, uint16_t length){
      uint16_t i=0;
      for(i=0;i<length;i++){
          LL_USART_TransmitData8(USARTx, data[i]);
          while(!LL_USART_IsActiveFlag_TXE(USARTx));
      }
}
 
USART_Transmit(UART5,"data",4);