반응형 프로그래밍/STM327 [STM32] Timer 설정하기(feat. 이론) 시작하기 전에 전자전공도 아니고 관련 지식이 없는 상태에서 공부를 하기 위해 구글링하며 이글 저글 짜집기하다 도출된 주관적인 결론으로 틀릴 확률이 높으니 참고만 하시길... +) 피드백 주시면 정말 정말 감사합니다. 먼저 나의 환경은 Ubuntu 20.04, NUCLEO-F411RE 1. 이론 Timer는 어떻게 작동하느냐? Clock, Prescaler, Count Period의 개념을 먼저 알아야한다. Clock(클럭) 만약에 1초에 84MHz의 클럭이 발생한다면 1초에 84,000,000의 신호(High/Low)가 발생한다는 뜻인데 그렇다면 84,000,000번째의 신호를 받았다면 그건 1초가 지났다는 뜻이다. 그런데 84,000,000의 신호를 모두 인터럽트 등으로 처리를 한다면 그건 불필요한 정.. 프로그래밍/STM32 2023. 10. 7. [STM32] CPU 온도 측정하기 먼저 나의 환경은 Ubuntu 20.04, NUCLEO-F411RE 사용 중이다. 1. 설명 STM32는 내부에서 CPU의 온도를 측정할 수 있다. 계산방법은 모르겠어서 코드만 GPT 것을 가져왔다. Polling, Interrupt, DMA 3가지 방법이 있는데, 온도는 1초에 한 번 체크해도 무방하다 생각하기에 Interrupt 방식을 택할 것이다. 설명은 아래와 같이 있지만 구현은 Interrupt 방식만 해볼 것이다. (Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_adc.c 주석 중) (#) ADC 드라이버는 폴링(Polling), 인터럽트(interruption), 세 가지 모드 중에서 사용할 수 있습니다, DMA에 의한 양도. *** 폴링모드 IO동작 *.. 프로그래밍/STM32 2023. 9. 30. [STM32] USART를 활용한 print찍기 먼저 환경은 Ubuntu 20.04에 NUCLEO-F411RE를 사용 1. USART 설정 먼저 NUCLEO-F411RE는 USART 1, 2, 6이 존재하는데, USART2는 ST-LINK로 통신이 가능하기 때문에 별도의 통신하드웨어가 필요 없다. 만약 ST-LINK가 없는 board 같은 경우 TX와 RX, Vcc GND를 연결시켜주어야 한다. USART에서는 Polling, interrupt, DMA가 있는데, 간단히 설명하자면 Polling은 신호를 특정 주기로 하염없이 감시/기다리는 것이고 interrupt는 이벤트로 인한 통신, DMA는 interrupt가 무수한 신호가 전달될 때 CPU의 가용시간을 과도하게 잡아먹을 수 있는데, DMA controller를 이용하여 CPU의 가용시간을 줄여주.. 프로그래밍/STM32 2023. 9. 30. [STM32] EXTI(External Interrupt) 제어 먼저 나의 환경은 Ubuntu 20.04, NUCLEO-F411RE 사용 중 Tool은 CMake를 통해 빌드하여 VSCode로 Debug 한다. 2023.09.10 - [프로그래밍/STM32] - [STM32] STM32CubeMX로 CMake설정하기 2023.09.03 - [프로그래밍/STM32] - [STM32] cmake build(feat .bin, .elf, .hex 추출) 2023.09.03 - [프로그래밍/STM32] - [STM32] VSCode 에서 STM32 디버깅하기(.vscode) 1. EXTI 설명 외부 인트럽트(EXTI)를 사용해 보자. 먼저 관련 문서 먼저 아래의 문서를 보면 EXTI에 대한 event mapping이 되어있는데, 요약하자면 EXTI0은 PA0~PH0 핀 중 .. 프로그래밍/STM32 2023. 9. 24. [STM32] STM32CubeMX로 CMake설정하기 1. 설치 아래의 링크에서 설치가 가능하다. 회원가입이 필요할 수 있다. https://www.st.com/content/st_com/en/stm32cubemx.html 2. 실행&설정 먼저 자신에게 맞는 board를 선택하고 Start Project 클릭 [RCC] - [HSE] - "Crystal/Ceramic Resonator" 선택 [SYS] - [Debug] - "Serial Wire"선택 (이후 VSCode에서 Debug 실행해 볼 예정) PA5번 핀을 "GPIO_Output"으로 선택 NUCLEO-F411RE board에서 PA5핀은 User LED인 LD(초록색 빛)에서 확인할 수 있다. 즉 별도의 LED를 연결하지 않아도 board자체에서 확인할 수 있기에 PA5번을 선택. 다음은 디버깅.. 프로그래밍/STM32 2023. 9. 10. [STM32] VSCode 에서 STM32 디버깅하기(.vscode) 1. 먼저 elf 파일을 만들어줘야 하는데 아래 링크를 참조 2023.09.03 - [프로그래밍/STM32] - [STM32] cmake build(feat .bin, .elf, .hex 추출) [STM32] cmake build(feat .bin, .elf, .hex 추출) 먼저 나의 작업환경을 tree -L 4로 출력한 Directory 구조이다. . ├── CMakeLists.txt ├── MAIN │ └── board │ └── F4 │ ├── Core │ ├── Drivers │ ├── stm32f411re │ └── ledtest2.ioc ├─ park-duck.tistory.com 2. 프로젝트 루트 디렉토리의 .vscode에서 launch.json 생성 3. Add Configuration.. 프로그래밍/STM32 2023. 9. 3. [STM32] cmake build(feat .bin, .elf, .hex 추출) 먼저 나의 작업환경을 tree -L 4로 출력한 Directory 구조이다. . ├── CMakeLists.txt ├── MAIN │ └── board │ └── F4 │ ├── Core │ ├── Drivers │ ├── stm32f411re │ └── ledtest2.ioc ├── Toolchain │ ├── arm-none-eabi │ ├── bin │ ├── lib │ ├── share │ └── toolchain_arm_9.3.1.cmake ./CMakeLists.txt cmake_minimum_required(VERSION 3.10.2) set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_VERSION 1) # project settings project(te.. 프로그래밍/STM32 2023. 9. 3. 이전 1 다음 반응형