MCU (15) 썸네일형 리스트형 Vector table STM32 제품군별 벡터 테이블 차이벡터 테이블은 인터럽트와 예외 핸들러의 주소를 저장하는 메모리 구조로, ARM Cortex-M 코어의 NVIC(Nested Vectored Interrupt Controller)에 의해 사용됩니다. STM32 제품군별 차이는 코어 아키텍처와 메모리 구성에 따라 발생합니다. VTOR(Vector Table Offset Register) 지원 여부STM32F0 (Cortex-M0):특징: Cortex-M0 코어는 VTOR 레지스터를 지원하지 않음. 벡터 테이블은 기본적으로 플래시 메모리(0x00000000)에 고정되거나, RAM으로 복사하여 사용해야 함제약: 동적 재배치가 불가능하며, 링커 스크립트와 메모리 매핑으로 관리STM32F1, F4, H7 (Cortex-M3, M.. ESP32-BLE-Raspberry pi STM32 보드에 없는 통신 기능을 이용하기 위해 ESP32 C3 를 SPI로 연결. 동작: 1. STM32 보드는 DHT22에서 주기적으로 온습도 정보를 읽는다.2. ESP32 보드로 온습도 값을 전송한다.3. CAN으로 주기적으로 값을 Raspberry pi 보드에 전송한다.4. LCD 에 온습도 값을 출력한다.5. ESP32 보드는 BLE에 연결된 기기(Raspberry pi)가 있으면 요청에 따라 온습도 값을 전송한다. DHT22Taskvoid StartDHT22Task(void *argument){ for(;;) { DHT_GetData(&dht22Data); xQueueSend(dht22Queue, &dht22Data, pdMS_TO_TICKS(100)); xQu.. STM32-CAN-Raspberry Pi 동작STM32에서 DHT22의 온습도 값을 CAN을 통해 Raspberry Pi로 전송. 구조STM32(FreeRTOS)Task1: DHT22의 온습도 값을 주기적으로 읽어 Task2로 값 전달.Task2: 전달 된 온습도 값을 CAN transmit 하고 OLED display 에 출력. Raspberry PiCAN ID 모니터링, 수신된 데이터를 콘솔 출력. main 함수#include "FreeRTOS.h"#include "task.h"#include "semphr.h"#include #include /* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#inclu.. 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.. 이전 1 2 다음