본문 바로가기

STM32

(13)
STM32-CAN-Raspberry Pi STM32에서 DHT22의 온습도 값을 CAN을 통해 Raspberry Pi로 전송. STM32(FreeRTOS)Task1: DHT22의 온습도 값을 주기적으로 읽어 Task2로 값 전달.Task2: 전달 된 온습도 값을 CAN transmit 하고 OLED display 에 출력. Raspberry PiCAN ID 모니터링, 수신된 데이터를 콘솔 출력.
DHT22 온습도 센서 DHT22 온습도 센서를 동작시키는데 뜻밖의 우여곡절을 겪었습니다. 데이터시트를 대충 훑어보고 구글링의 도움으로 간단히 코드를 돌려 보았습니다.아래의 사이트가 많은 도움을 줍니다.https://controllerstech.com/temperature-measurement-using-dht22-in-stm32/ FreeRTOS로 동작해야 하므로 타이머를 추가하여 microsecond 단위로 동작하는 delay 함수를 구현해야 합니다.void delay(uint32_t delay){ __HAL_TIM_SET_COUNTER(&htim6, 0); while (__HAL_TIM_GET_COUNTER(&htim6)  그런데 이 함수가 동작하질 않았습니다.이유는 단순히 타이머를 시작하지 않았기 때문이었습니다..M..
OLED display 128x32 STM32에 SSD1306 OLED 모듈을 연결했습니다.오픈소스가 많이 있어서 어렵지 않게 동작을 확인해볼 수 있었지만,쉽게 검색되는 코드를 사용했을때는 글씨가 화면 전체에 제대로 출력되지 않았습니다.128x32 크기에 맞는 수정을 위한 코드리뷰가 필요했고,겸사겸사 초기화 코드와 데이터시트를 보며 각 설정의 내용을 살펴보았습니다. I2C로 연결했기에 https://github.com/4ilo/ssd1306-stm32HAL 를 사용했습니다. ssd1306_Init()의 코드:https://github.com/4ilo/ssd1306-stm32HAL/blob/master/lib/ssd1306.c#L23 ssd1306-stm32HAL/lib/ssd1306.c at master · 4ilo/ssd1306-stm3..
STM32 clock STM32의 Clock Configuration 에 대해 정리해봅니다.보유중인 STM32F446xC/E 기준.Clock 소스HSE (High Speed External)외부에서 입력되는 고주파 Clock으로, Crystal, Resonator, 또는 외부 Clock source나 Oscillator를 사용합니다.PLL을 거쳐 System Clock으로 입력됩니다. HSI (Hight Speed Internal)STM32에 내장된 RC 발진 회로로, 전원 인가 시 처음 동작하는 Clock입니다.일반적으로 8MHz 또는 16MHz 주파수를 가집니다. LSE (Low Speed External)RTC(Real-Time Clock)에 사용되며 정확한 시간을 맞추기 위한 용도로, 주로 32.768kHz Cryst..
FreeRTOS - STM32F4 포팅 정보 확인 FreeRTOS를 포팅할 때 어떤 부분들을 수정하였을지 참고해보고 싶어STM32CubeIDE(+CMSIS-RTOS v2)에 포함되어 있는 FreeRTOS의 포팅 정보를 확인해 보았습니다. 공식 문서에서는 소스 코드에 있는 Demo application을 통해 프로젝트를 시작해 보라고 하여,STM32F4의 데모를 살펴보겠습니다. Supported Devices - FreeRTOS™ST STM32F4xx ARM Cortex-M4F DemoUsing IAR EWARM development tools - FreeRTOS™ RTOS Configuration and Usage DetailsCortex-M4F FreeRTOS port specific configuration`FreeRTOS/Demo/CORTEX_M4..
FreeRTOS 와 Zephyr 비교 특징과 장단점 비교FreeRTOS와 Zephyr는 둘 다 실시간 운영체제(RTOS)로, IoT, 임베디드 시스템 및 다양한 저전력 장치에서 사용됩니다.두 시스템은 서로 다른 설계 철학과 기능 세트를 제공하며, 사용 사례에 따라 장단점이 있습니다.1. FreeRTOS특징경량성: 코드 크기가 작고, 자원이 제한된 시스템에서 적합.모듈성: 필요한 기능만 선택적으로 포함하여 시스템 크기를 최적화할 수 있음.포팅 가능성: 다양한 마이크로컨트롤러와 프로세서를 지원하며, 포팅이 쉽도록 설계됨.라이선스: MIT 라이선스 기반으로, 상업적 사용이 자유로움.커뮤니티 및 생태계: AWS IoT와의 통합 및 지원, 그리고 강력한 커뮤니티 제공.장점코드 크기와 메모리 사용이 작아 자원이 제한된 시스템에 최적.API가 간단하고 ..
STM32CubeIDE 에서 FreeRTOS 선택 시 차이 STM32 Project를 FreeRTOS로 선택하여 생성했을 때 프로젝트 파일 차이.. 1. 기본  2. FreeRTOS
FreeRTOS Task priority https://www.freertos.org/Documentation/02-Kernel/02-Kernel-features/01-Tasks-and-co-routines/03-Task-priorities Tasks - FreeRTOS™The concept of task statesfreertos.org Task의 priority를 확인해 보았습니다.CMSIS V2 환경입니다. 아래의 3개의 task들을 정의했습니다.osThreadId_t defaultTaskHandle;const osThreadAttr_t defaultTask_attributes = { .name = "defaultTask", .stack_size = 128 * 4, .priority = (osPriority_t) osPriorityN..
STM32CubeIDE 업그레이드 함부로 한 댓가... 업그레이드하라는 팝업 메시지 그대로 진행했더니...st-link 연결 안 되는 증상이 발생했습니다.firmware는 업데이트가 되는데 정작 debug 가 안 되는 증상입니다.이리저리 검색해도 현재는 답이 안 보여서 1.51.1로 재 설치 후 프로젝트를 불러오니 버전의 문제로 import가 안 되는 문제가 발생했습니다.현재보다 최신 버전의 ioc를 처리하지 못하는 에러 메시지였습니다.구글링 해보니 "MxCube.Version" 값을 변경하면 된다는 글이 있었지만 해결되지 않았습니다.결국 ioc 파일 내용을 하나씩 비교해서 적용하고 ide에서 변경한 설정의 적용여부를 확인하는삽질을 한 후에야 최종 동작이 확인되었습니다.함부로 업데이트를 하면 안 된다는 것을 배웠습니다...😭
현재 Mac 15.0.1 에서 ST-Link server 연결 문제 현재 저의 환경인 Mac 15.0.1에서 STM32 CubeIDE를 실행하면 아래의 메세지와 함께 ST-Link 연결이 되지 않고 있습니다. 터미널에서 직접 실행하면 정상 동작 되고 있습니다. 아래의 사이트에서는 sudo를 함께 사용한 것을 해결책으로 알려주는데 저는 sudo 없이도 정상 동작하고 있습니다. https://community.st.com/t5/stm32cubeide-mcus/stlink-server-with-macos-15/td-p/705089 STLink Server with MacOS 15  Hello, I updated to Mac15 (MacOS Sonoma Public Beta), which was probably a mistake. Now I get an error from ST..