반응형 프로그래밍208 [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. [Ubuntu] 화면 검은색 깜빡임 해결 먼저 나의 환경 증상 1. 스크린샷 캡처(특히)부터 일반적으로 노트북을 사용할 때 한번씩 깜빡임. 주기적인 것은 아니고 뭔가 웹브라우저에서 휠을 사용한다거나, 프로그램을 전환한다거나 그래픽을 사용할때 깜빡임 2. 여기서 OS의 문제라고 생각되었던건, 이전 Windows에서는 이런 증상이 없었고 OS가 Load된 순간부터 깜빡임 3. 타이핑만 하는데 깜빡일 때 있음 4. 주기가 진짜 랜덤임 이유 1. 모름. GRUB_CMDLINE_LINUX_DEFAULT 설정부터 Ubuntu가 옛날 그래픽을 지원 썰, 커널 업데이트, 시큐리티 부팅부터 그래픽카드 드라이버 설치까지 다해보았지만 안되었고, 마지막으로 Stack Overflow에서 아무거나 복붙해서 하다보니 깜빡이지 않음 2. 그래픽카드 사용량을 확인해보니 4.. 프로그래밍/Linux 2023. 9. 12. [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. [Renode] 가상머신 실행(Hello world 출력) 이전에 Renode를 설치했었다. 2023.08.15 - [Learning/Renode] - [Renode] 설치 [Renode] 설치 1. 지원 아키텍처 ARMv7 and ARMv8 Cortex-A and Cortex-M x86 RISC-V SPARC POWER Xtensa 2. 설치 아래 링크에서 renode-*.linux-portable.tar.gz를 다운로드 https://github.com/renode/renode/releases/latest renode_portable 폴더를 만든 후 park-duck.tistory.com Renode의 사용 목적이 대부분 가상 시물레이션일텐데, 내가 가지고있는 STM32 NUCLEO-F411RE을 기준으로 가상머신을 돌려보자. * 하드웨어에 대한 지식이 많이.. 프로그래밍/Renode 2023. 8. 22. [Python] 파일명 일괄 변경 .txt 파일을 따로 이름을 정하지 않고 저장하였을 때 "새로운 텍스트 파일 [number].txt" 식으로 저장이 되는데 파일명 format을 한번에 변경하고자 할 때 사용 ex) 새로운 텍스트 파일 2.txt -> 2_test.txt import glob import re import os for name in glob.glob("새로운*[0-9]{1,2}*.txt"): number=re.search("[0-9]{1,2}", name) os.rename(name, "{}_test.txt".format(number.group()) 변경하고자 하는 파일 name의 형식에 따라 정규식 표현 pattern이 변경될 수 있으므로 정규식 표현을 공부해야할 수도 있음. 프로그래밍/Python 2023. 8. 20. [Renode] 설치 1. 지원 아키텍처 ARMv7 and ARMv8 Cortex-A and Cortex-M x86 RISC-V SPARC POWER Xtensa 2. 설치 아래 링크에서 renode-*.linux-portable.tar.gz를 다운로드 https://github.com/renode/renode/releases/latest renode_portable 폴더를 만든 후 그곳에 압축해제 mkdir renode_portable tar xf renode-*.linux-portable.tar.gz -C renode_portable --strip-components=1 - 환경변수 추가 cd renode_portable export PATH="`pwd`:$PATH" 또는 .bashrc 가장 아래에 환경변수 추가 sudo.. 프로그래밍/Renode 2023. 8. 15. [Ubuntu] STM32 VSCode debugger GDB version Error 해결 OS: Ubuntu 20.04 VSCode로 STM32를 돌리려는데 아래와 같은 에러가 발생 GDB could not start as expected. Bad installation or version mismatch. See if you can start gdb from a shell prompt and check its version (Must be >= 9) 시도해 본 것은 gdb 업그레이드 툴체인 버전(7~10) 변경 openocd로 변경 -> openocd에서도 똑같은 에러 발생 st link upgrade 등 조금이라도 의심되는 건 다 해봤으나 안됨 해결방법은 VSCode에서 extends의 Cortex-Debug 버전을 낮추는 것 https://ja.stackoverflow.com/quest.. 프로그래밍/Linux 2023. 8. 14. [Ubuntu] STLink Upgrade 사용하여 STM32 board firmware update하기 sudo java -jar STLinkUpgrade.jar OS : Ubuntu 20.04 1. STLink Upgrade 다운로드 https://www.st.com/en/development-tools/st-link-server.html 2. 압축해제 3. 터미널을 열어 AllPlatforms 폴더로 이동(Linux) 4. Java 설치 # sudo apt install openjdk-[version]-jdk sudo apt install openjdk-11-jdk 4. STLinkdUpgrade 실행 아래 명령어를 수행하면 프로그램이 실행됨 sudo java -jar STLinkUpgrade.jar 5. Device를 선택 후 Open in update mode, Upgrade를 차례대로 클릭 프로그래밍/Linux 2023. 8. 14. 이전 1 2 3 4 5 6 7 ··· 18 다음 반응형