STM32 26

STM32 NUCLEO BOARD printf 사용하기

안녕하세요.오늘은 stm32에서 printf 함수를 사용해보겠습니다.사용할 보드는 NUCLEO-F103RB입니다.ST LINK가 Virtual com port를 지원하고 회로도를보면 STM32F103RB의 UART2에 연결되어있습니다.그래서 별도의 usb to uart없이도 pc와 uart통신이 가능합니다.그래서 그런지 NUCLEO-F103RB 프로젝트를 만들면 기본적으로 UART2가 활성화되어있습니다.프로젝트를 생성하고나서 HAL_UART_Transmit함수를 이용해서 TX가 가능합니다. 해당 방법을 사용하는 데는 문제는 없지만 불편하므로 printf가 이용하기 편리하므로 printf를 이용해 보겠습니다.printf를 이용해보겠습니다. 경고가 발생합니다. printf는 에 선언되어있는데 를 includ..

STM32로 ADC기능을 사용하여 그래프 표시하기

안녕하세요. 오늘은 STM32로 ADC기능을 사용하여 그래프를 표시해보겠습니다.간단히 나타내면 아래의 그림과 같습니다. STM32로 저항의 전압을 읽어서 PC 프로그램으로 uart 통신을 통해 값을 보내주고 PC 프로그램에서는 받은 데이터를 일정한 시간 간격으로 그래프를 표시해 주는 것입니다.*하드웨어구성 가변저항2개를 이용하여 전압값을 읽게 했습니다.Vin은 3.3V이고 R1는 10k이고  R2는 0~10k이므로 Vout은 0~1.65V 나옵니다.*STM32 FW구현해야하는건 ADC값 읽는거와 UART통신으로 PC에게 데이터를 보내주는것입니다. 뉴클레오보드를 사용하므로 usb to uart는 이미 uart2에 할당되어있습니다.printf 기능을 사용할것이므로 아래의 헤더파일과 함수만 추가해주면 됩니다...

STM32/활용 2024.12.30

STM32 외부인터럽트 알아보기

안녕하세요. 오늘은 STM32 외부인터럽트에대해 알아보겠습니다.먼저 데이터시트에 있는 외부인터럽트 블록도를 보겠습니다. (STM32F103RB)AMBA APBbus : 주변장치와 통신하기위해 사용하는 버스입니다. 외부인터럽트는 APB2 버스를 사용합니다.Peripheral Interface : APB 버스를 통해 들어오는 데이터를 처리하여 레지스터에 전달하거나 레지스터에서 데이터를 읽습니다.PCLK2 : 클럭입니다. APB2버스를 사용하므로 PLCK2 클럭을 사용합니다.빗금 숫자 19의 의미 : 레지스터의 크기가 19라는 의미입니다. 해당 MCU는 19개의 외부인터럽트가 있습니다.Input Line : 외부 인터럽트가 발생할수있는 라인입니다.  아래의 그림을보면 EXTI0은 PA0 or PB0 or PC..

STM32/이론 2024.11.09

STM32 RTOS 알아보기 3편(xQueueSendFromISR,xQueueReceiveFromISR)

안녕하세요. 오늘은 저번 2편에서 Queue에서 task끼리 send/receive를 했었는데 이번에는 ISR이랑 해보겠습니다.ISR에서 send/receive를 할때는 함수명이 다르고 기존의 함수명에 FromISR이 붙습니다. 다른 이유는 ISR은 짧은시간안에 실행되어야 하며 다른 태스크나 ISR에 의해 중단되지 않아야 합니다. 이로 인해 ISR에서 사용하는 함수들은 블로킹이 없고 간단하고 빠르게  동작됩니다. *xQueueSendFromISR함수 *xQueueSendFromISR함수BaseType_t xQueueSend( QueueHandle_t xQueue, const void BaseType_t *pxHigherPriorityTaskWoken );ISR함수에서 호출되어 큐에 데이터를 저장하는 함수..

STM32/STM32_RTOS 2024.10.04

STM32 RTOS 알아보기 2편(xQueueCreate,xQueueSend,xQueueReceive)

안녕하세요. 오늘은 RTOS의 Queue에 대해 알아보겠습니다.Queue는 먼저 집어넣은 데이터가 먼저 나오는 FIFO 구조의 저장형식입니다. RTOS에서는 TASK나 ISR에서 Queue에 데이터를 저장&불러오기를 할 수 있습니다. TASK랑 ISR에서 Queue에 접근할때 사용하는 함수가 다릅니다. ISR에서 접근할때는 함수명뒤에 FromISR()이 붙습니다. 다른 이유는 ISR은 짧은시간안에 실행되어야 하며 다른 태스크나 ISR에 의해 중단되지 않아야 합니다. 이로 인해 ISR에서 사용하는 함수들은 블로킹이 없고 간단하고 빠르게  동작됩니다. 예시) TASK에서 큐에 데이터를 보내는 함수 :  xQueueSend(),ISR에서 큐에 데이터를 보내는 함수 : xQueueSendFromISR(); *x..

STM32/STM32_RTOS 2024.08.18

STM32 RTOS 알아보기 1편(xTaskCreate, vTaskDelay, vTaskDelayUntil)

안녕하세요. 오늘은 STM32보드로 RTOS에서 사용하는 기본적인 함수에 대해 알아보겠습니다. 사용하는 보드는 NUCLEO-F103RB이고 어떤보드던 큰 상관은 없습니다.먼저 프로젝트를 만들고 FREERTOS를 활성화해줘야합니다. FREERTOS를 선택하면 Interface를 선택하라고 나옵니다. CMSIS V1과 CMSIS V2의 차이는 CMSIS 인터페이스에서 사용하는 함수들의 차이인데 여기서는 CMSIS 인터페이스를 사용하지않고 FreeRTOS 인터페이스를 사용합니다. 예를들어 테스크를 만들때 FreeRTOS는 xTaskCreate함수를 사용하고 CMSIS는 osThreadCreate함수를 사용합니다. 사실 osThreadCreate함수의 코드를보면 결국에는 xTaskCreate함수를 호출합니다. ..

STM32/STM32_RTOS 2024.08.11

STM32C031-DK와 DOT MATRIX 사용하기 2편(MAX7219사용)

안녕하세요. 오늘은 STM32C031-DK와 DOT MATRIX 32*8을 사용해보겠습니다. (해당글을 이해하기 위해서는 DOT MATRIX 사용하기 1편을 봐야합니다) 해당 모듈도 MAX7219를 사용하고 도트매트릭스 8*8짜리 1개당 1개씩 사용해서 총 4개가 달려있습니다 *OUT핀 나가는 파형 SPI신호의 MOSI가 MAX7219의 IN핀으로 들어와서 OUT핀으로 나갑니다. 근데 OUT으로 나가는 파형이 동일시점에서 IN과 OUT이 같지가 않습니다. IN파형이 들어오고나서, 16.5클럭이후에 OUT으로 파형이 나갑니다 실제 파형을 보겠습니다 1번이 실제로 MCU와 연결하는 핀이고, 2,3,4번은 2,3,4번째 세그먼트의 IN핀입니다. (글의 처음 부분의 그림에 빨강선이 연결해있는데 파형을 측정하려고..

STM32/STM32C031-DK 2024.02.24

STM32C031-DK와 DOT MATRIX 사용하기 1편(MAX7219사용)

안녕하세요. 오늘은 STM32C031-DK와 DOT MATRIX를 이용해보겠습니다. 사용 할 DOT MATRIX는 8*8입니다. *DOT MATRIX 관련내용 모듈 회로도는 아래와 같습니다. LED가 8*8=64개있고 이 LED를 제어하기위해서 MAX7219가 연결해있습니다. MAX7219은 SPI통신을 합니다. DIN은 MOSI이고 MISO는 사용하지않습니다. 회로도출처: Interfacing MAX7219 LED Dot Matrix Display with Arduino (simple-circuit.com) 타이밍도) MSB방식이고 CHOL은 LOW이고 CPHA은 1 Edge입니다 데이터포맷) 16Bits이므로 2바이트를 보내면 됩니다. 처음에는 주소를 보내고 그 다음에 데이터를 보냅니다 클럭속도) 1..

STM32/STM32C031-DK 2024.02.19

STM32H7-GFX보드 사용하기 1편(기본프로젝트세팅,LED,UART)

안녕하세요. 오늘은 STM32H7-GFX 보드를 사용해 보겠습니다. 해당 보드는 BARAM 님이 개발하신 거고 BARAM 님의 강좌를 참고해서 제가 기억하고 싶은 내용을 기록할 예정입니다. 최종 목표는 LCD,터치센서,마이크,스피커 사용방법을 익히고 이러한 기능을 사용해서 리듬게임을 만드는 것입니다. https://blog.naver.com/chcbaram/223323827781 https://smartstore.naver.com/higenis/products/9107440057 위의 사이트에서 해당 제품을 구매했고 전원만 넣었을 때 사진입니다. 기본 FW가 들어가 있어서 LCD 동작 여부를 확인할 수 있었습니다. 보드에 ST-LINK가 포함되어 있지 않으므로 ST-LINK는 따로 준비를 해야 합니다. ..

STM32/STM32H7-GFX 2024.02.17

STM32 DFU모드 장치관리자에서 안잡히는 증상

안녕하세요. 오늘은 STM32에서 DFU모드를 테스트할때 발생한 에러에 대해 알아보겠습니다. DFU 모드에 진입하게 해놓고 장치 관리자를 봤더니 드라이버가 잡히지 않은 것처럼 나왔습니다. 참고로 드라이버는 STM32CubeProgrammer를 설치할때 자동으로 설치해줍니다. 그 이유는 VID를 STM사로 안해놔서 그랬던거같습니다. VID를 1155로 해놓으면 잘 됩니다. VID는 아래의사이트에서 확인가능합니다 https://usb.org/sites/default/files/vendor_ids051920_0.pdf

STM32/간단한팁 2024.01.21