본문 바로가기

STM32

(11)
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..
printf UART로 출력 c 함수 printf()를 UART로 출력하게 해서 디버깅을 할 수 있습니다. 아래의 링크를 참고하면 간단히 해결됩니다.The ST-LINKs embedded on ST Nucleo boards have a virtual com port feature, and we can easily get debugging information on a terminal using printf redirected to the UART of the STM32 connected to the ST-LINK pins used for the virtual COM port. https://community.st.com/t5/stm32-mcus/how-to-redirect-the-printf-function-to-a-uart-for..
CAN bus 환경 테스트 STM32 board와 Raspiberry Pi 3을 이용해 CAN 통신 한경을 구성했습니다.  STM32 보드는 NUCLEO-F446RE 입니다.CAN transceiver는 SN65HVD230 Board 를 연결하였습니다. Raspberry Pi 3는 RS485 CAN HAT를 사용했습니다.동일하게 CAN transceiver는 SN65HVD230 이기 때문에 환경 구성이 수월합니다. STM32 보드는 1초 단위로 메시지를 전송하고 수신된 메세지를 출력하도록 했습니다.Rpi3 보드는 can-utils을 사용하여 메시지를 전송하고 수신하였습니다. Rpi3 메세지 전송 STM32 메세지 수신 STM32에서 전송한 메세지 Rpi3에서 수신 캡처를 이상하게 해서 좀 안 맞지만 일단 기록해 둡니다.