STM32 25

STM32 버튼을 이용한 7세그먼트 초기화

나의 프로젝트의 기본적인 로직이 다 완성된 것 같다.미니 프로젝트라 조금 조잡해보일 수 있지만, 하고 싶어서 하는 것이니 양해바란다.먼저 저번 포스팅에서 RTOS에서 진동 감지 센서와 LED, 7세그먼트를 적용하였다.이번엔 버튼을 이용하여 7세그먼트를 초기화하겠다. 먼저 버튼은 Input으로 설정해주자 이렇게 설정해주고 회로는 아시리라 생각하지만 https://m.blog.naver.com/sisosw/221668811609 버튼으로 LED 제어하기I. 생각하기 ■ 목표 스위치(버튼)으로 LED를 On/Off 하게 한다. ■ 푸시 버튼 스위치 (Push Butto...blog.naver.com위 블로그에서 자세히 설명해주니 참고해도 된다. 코드는 다음과 같이 수정해주면 된다.void StartDefaul..

STM32 2024.12.25

STM32로 진동 감지 센서 + 7세그먼트 제어 - 2

먼저 RTOS를 이용하여 저번 포스팅에서의 1번 문제를 해결해보자 일단 FreeRTOS를 설정해주자해당 부분은 다음 블로그에 전에 작성해두었으니 참고 바란다.참고로 우리는 2개의 Task만 사용할것이다.https://kksp12y.tistory.com/83 STM32 익히기 2)이번엔 RTOS에 대해 알아보고 간단한 실습을 해보겠다. 먼저 RTOS란 무엇인가?Real Time Operating System라고 하며 실시간 운영체제 라고 말한다.제한된 시간내에 원하는 작업을 모두 처리하는 것을 보kksp12y.tistory.com 코드는 아래와 같이 만들었다, StartDefaultTask에 osDelay(5)를 준 이유는 딜레이를 주지않으면 Task2가 CPU를 점유할 수 없다.따라서 점유할 시간을 주었..

STM32 2024.12.24

STM32로 진동 감지 센서 + 7세그먼트 제어 - 1

이번엔 진동을 감지하면 7세그먼트의 값을 올려보겠다. 첫번째 진동센서가 진동을 감지하면 값 1을 올리고, 2번째 진동센서가 진동을 감지하면 값 10을 올리는 작업을 해보겠다.먼저 7세그먼트에 대한 자세한 정보나 핀 설정하는 방법은 다음 블로그를 참고하자https://kksp12y.tistory.com/54 버튼 누르면 1씩 올라가는 7세그먼트저번 포스팅이 너무 길어져 2개로 나누었다. 일단 다음과 같이 세팅을 해주자     위와 같이 설정을 하고 코드를 입력하여 진행한다. /* USER CODE BEGIN Header *//** ******************************************kksp12y.tistory.com 칩에 대한 설정이 끝나면 코드를 짜주면 된다.나는 FND라이브러리를..

STM32 2024.12.23

STM32로 DFR0027를 다루어 보기

해당 포스터는 STM32로 나중에 진행할 프로젝트에서 충격을 감지하는 부분으로 활용할 것이다.따라서 진동센서에 대해 포스팅을 남겨보겠다. https://wiki.dfrobot.com/DFRobot_Digital_Vibration_Sensor_V2_SKU_DFR0027 DFRobot_Digital_Vibration_Sensor_V2_SKU_DFR0027-DFRobotDFRobot_Digital_Vibration_Sensor_V2_SKU_DFR0027-DFRobot Introduction What's the simplest way to check vibration with Arduino? Use a vibration sensor from DFRobot. You can directly plug it on ou..

STM32 2024.12.22

STM32 익히기 2)

이번엔 RTOS에 대해 알아보고 간단한 실습을 해보겠다. 먼저 RTOS란 무엇인가?Real Time Operating System라고 하며 실시간 운영체제 라고 말한다.제한된 시간내에 원하는 작업을 모두 처리하는 것을 보장하는 운영체제이다. 여기서 FreeRTOS를 실습할건데 왜 앞에 Free가 붙었나?라고 말한다면 누구나 사용가능하고, 상업적으로 사용해도 비용 청구가 없는 무료이기 때문에 Free가 붙었다. 여기서 선점형과 비선점형이 나오는데 이는 운영체제에 대해 알면 알것이다.선점형 하나의 프로세스가 다른 프로세스 대신에 프로세서를 차지할 수 있다.비선점형 하나의 프로세스가 끝나지 않으면 다른 프로세스는 프로세서를 차지할 수 없다. 제공되는 API는 다음과 같다.종류설명xTaskCreate()Task..

STM32 2024.12.05

STM32 익히기 1)

STM32에 대해 계속 공부하고 있지만, 익숙해지는 것이 제일 우선이라고 생각한다.이전에 기초를 공부했지만 이번엔 또 다른 책인 STM32Fx Cortex ARM 프로그래밍 기초편에 대해 빠르게 공부하면서 익숙해져가겠다. 몇주에 걸쳐 포스팅이 끝날지 모르지만 그날 이해한 부분까지 계속 포스팅을 올려보려한다.  일단 스위치 on off로 LED 제어를 하고, 다음은 스위치가 100ms이상 눌렸을 때 켜지고, 켜진 상태에서도 스위치가 100ms이사 눌렸을 때만 꺼지도록 해보겠다. (채터링 방지) UML Tool ( 관련 모양에 대한 설명은 https://1000yun.tistory.com/16 참조 바람 ) 다음은 간단하게 회로도를 그려봤다. 이렇게 LED를 제어해볼 예정이다. ( PB3 ) /* USER..

STM32 2024.12.02

RTC사용해보기

Data와 Time을 한번 UART로 보내볼건데, 먼저 시간을 우리가 설정해줄것이다. 먼저 RTC란 현재의 시간을 유지시키는 컴퓨터 시계이다.그래서 현재의 시간은 우리가 정해주고 (그러기 싫으면 NTP) 시간의 흐름을 출력해보자 먼저 외부클럭을 다음과 같이 설정해주자  날짜 시간을 설정해준다.RTC의 동작 주기는 기본적으로 LSE(32.768 kHz) 또는 LSI(약 32 kHz) 클럭을 사용RTC를 정확히 1Hz로 동작시키기 위해, 분주기를 설정하여 클럭을 나눈다.RTC 클럭을 1Hz로 만들기 위한 Prescaler 계산  그리고 다음과 같은 코드를 짜준다.RTC_HandleTypeDef hrtc;UART_HandleTypeDef huart2;/* USER CODE BEGIN PV *//* USER C..

STM32 2024.11.26

I2C로 LCD 제어해보기

STM32407VE 에서 I2C를 먼저 설정해주자 설정은 이렇게만 해주고 코드를 작성하자. 코드는 다음과 같다.라이브러리는 https://github.com/alixahedi/i2c-lcd-stm32 GitHub - alixahedi/i2c-lcd-stm32: i2c lcd STM32 libraryi2c lcd STM32 library. Contribute to alixahedi/i2c-lcd-stm32 development by creating an account on GitHub.github.com이곳에서 제공해준 라이브러리를 사용한다. I2C_HandleTypeDef hi2c1;I2C_LCD_HandleTypeDef lcd1;/* USER CODE END 0 *//** * @brief The a..

STM32 2024.11.25

STM32F407VE - 기초 7) Timer

Timer를 한번 다루어 보겠다.폴링과 인터럽트로 해보겠다. 폴링은 인터럽트만 체크하지 않으면 됨을 이전 포스팅에서 계속 다루었다. 이렇게 하고, LED하나를 달아 점등하게 했다. 그리고 이것을 오실로스코프를 찍어본 결과이다.코드는 다음과 같다. HAL_TIM_Base_Start(&htim6); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(__HAL_TIM_GET_FLAG(&htim6, TIM_FLAG_UPDATE)) { __HAL_TIM_CLEAR_IT(&htim6, TIM_IT_UPDATE); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5); } /* ..

STM32 2024.11.25

MCU Internal 온도 측정하기

먼저 데이터 시트에서 온도를 어떻게 계산할 수 있는지 확인하자  Temperature (in C) = {(V25 - VSENSE) / Avg_Slope} + 25 이고VSENSE = ADC 채널의 값 * 3000 / 4096V25는 0.76 = mV로 바꾸면 760이다.Avg_Slope은 mV이니까 그대로 2.5따라서 {( VSENSE- 760 ) / 2.5 } + 25 이 된다.나중에 수식에 넣어주면 된다 다음을 따라서 ADC를 설정해주자  다음으로 코드를 짜주자 (폴링방식으로 진행함) uint32_t adc_data;float Temp;void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){ adc_data = HAL_ADC_GetValue(&hadc1); ..

STM32 2024.11.24