썸네일 [STM32]'Project' has no explict encoding set warning STM32CubeIDE를 처음 설치하고 실행을 시키는 경우에 이런 warning이 나오는 경우가 발생할 때가 있습니다.이 경우에는 File -> Properties -> Resource -> Text file encoding을 수정하시면 됩니다.Other: UTF-8로 설정하시면 Warning이 사라집니다.
썸네일 [STM32] I2C 설정, 사용법 그리고 파형 CubeMX에서의 설정은 다음과 같다 I2C1의 설정을 보여주고 있다 특이 사항이 없다면 별다른 설정없이 속도만 맞추면 된다 HAL_I2C_Master_Transmit(&hi2c1, ADR, &data, 1, 1000); 명령을 사용하는 경우 I2C 장비에서 응답(Acknowledge)를 보내주지 않은 파형이다 이 경우에 I2C 함수에서는 HAL_ERROR를 리턴한다 SCL의 9번째 클럭에서 SDA에 High 값이 나오고 있다 HAL_I2C_Master_Transmit(&hi2c1, ADR, &data, 1, 1000); 명령을 사용하는 경우 센서가 I2C 명령에 응답(Acknowledge)를 한 경우이다 9번째 SCL에서 SDA가 Low로 되어 있다 HAL_I2C_Mem_Read(&hi2c1, _ADD..
[STM32]I2C에러 HAL_I2C_ERROR_AF(0x04), HAL_BUSY(0x02) stm32에서 i2c통신을 사용하면서 제목과 같은 에러가 나왔다 HAL_StatusTypeDef aaa_read (uint8_t *data, uint16_t data_len) { HAL_StatusTypeDef status = HAL_OK; status = HAL_I2C_Mem_Read(&hi2c2, 0x21, 1, I2C_MEMADD_SIZE_8BIT, data, data_len, 1000); if (status != HAL_OK) { /* Reading process Error */ printf(" %ld : Fail !!!\n",hi2c2.ErrorCode );
썸네일 [STM32F4XX]HAL_I2C 사용하기 센서와 연결을 하기 위해 IC2를 사용하여야 한다 기본적으로 CubeMX에서 I2C에 대한 설정을 한다 I2C2를 사용하고 속도는 100KHz인 표준 모드를 사용한다 나는 non-blocking 방식인 인터럽트를 사용할 것임으로 위 그림처럼 인터럽트를 enable해 주어야 한다 인터럽트 방식의 명령어로는 송신: HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) 수신: HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size) 사용의 예로는 if(H..
[TouchGFX]조건에 따라 이미지(그림) 변경 센서에서 추출되는 데이터에 따라 표현되는 이미지를 변경해야 한다. 아래 함수에 대한 추가적인 설명은 첨부된 사이트를 참조하기 바랍니다. void CustomContainer_PM5::updateValuePM5(uint16_t currentPM50) { Unicode::snprintf( textPM50RxBuffer, TEXTPM50RX_SIZE, "%03d", currentPM50); textPM50Rx.invalidate(); switch (currentPM50 / 166)
[touchGFX]Custom Container 에 문자 출력하기 Custom Container를 사용하여 화면의 일부를 구성하였다 센서 데이터를 받아 Custom Container에 출력하는 부분에 대한 개발을 하고 있다 Model과 Presenter에 대한 내용은 건너뛰고 1. mainScreenView.hpp에 사용할 함수를 선언한다 class mainScreenView : public mainScreenViewBase { public: ---- 기본 생성 함수임으로 생략 ---- //함수 선언을 추가한다 virtual void updatePM50InLCD(uint16_t currentPM50); } 2. mainScreenView.cpp ---- 생략 ---- void mainScreenView::updatePM50InLCD(uint16_t currentPM50..