본문 바로가기

MCU 제어/STM32Cube Mx

(7)
[STM32] External Interrupt(외부인터럽트) 인터럽트란? https://how-to-make-a-quadcopter.tistory.com/13 인터럽트(Interrupt) 방식 폴링 방식은 CPU의 효율이 떨어지는 것과 동시에 여러 작업이 진행될 때 하나의 작업이 실행이 지연되거나 실행할 수 없는 단점이 있다고 했다. 이러한 문제점을 해결할 수 있는 방식 중 하나가 � how-to-make-a-quadcopter.tistory.com 쿼드콥터의 항공등을 개발하기 위해 외부 인터럽트를 사용할 것이다. 항공등은 주로 기체의 앞뒤방향이나 어두운 곳에서의 위치을 표시하기위해 사용한다. 드론에 장착한 스위치를 이용하여 항공등의 점멸 속도를 조절하거나 On/Off하려한다. 이 스위치는 주기적으로 계산해야하는 값들(PID계산, 라즈베리파이와 통신)들과는 좀 다..
[STM32]PWM을 이용하여 BLDC 모터 구동하기 BLCD모터는 FC에서 작동시키는게 아니라 FC에서 PWM신호를 받은 ESC가 작동시킨다. 그렇다면 어떻게 ESC에게 PWM신호를 줄 수 있을까? Timer를 이용하면 된다. Cube Mx 설정부터 알아보자. 일단 Timer는 PWM신호를 발생시킬 수 있는 타이머로 설정해야된다. TIM6, TIM7은 Basic Timer이므로 PWM을 발생시킬 수 없다. 나는 고급 타이머인 TIM1번을 선택했다. Slave mode와 Trigger Source는 Disable해두자. 사실 나도 자세히 어떤건지 몰라서 나중에 쓸일이 있으면 설명해보겠다. Clock source는 APB 버스를 통한 내부 클럭을 사용할 것이므로 Internal Clock으로 설정해준다. 외부클럭으로 설정하면 실제 외부핀에서 클럭을 받아 AP..
[STM32] Basic Timer Basic Timer를 이용해 1초에 한 번씩 UART로 문자열 출력하기 드론을 개발할 때, 일정시간마다 자세센서의 값을 읽어오거나 PID계산을 해야한다. 어떻게 시간을 잴 수 있을까? Basic Timer를 이용하면 된다. stm32의 타이머 종류에는 크게 Advanced-control timer, General purpose timer, Basic Timer가 있다. 오늘은 DAC 트리거 및 시간 기반 타이머로 사용되는 Basic Timer를 사용해보겠다. 위 데이터 시트를 보면 Basic Timer는 TIM6, TIM7으로 사용할 수 있다는걸 알 수 있다. 그리고 사용하는 클럭을 알아야한다. TIM6는 APB1 timer clock을 사용하고 Cube MX 툴에서 108MHz라는 걸 알 수 있다. ..
[STM32]UART 인터럽트 송수신 실습 폴링 방식의 단점은 개념 카테고리에서 설명했었다. 그렇다면 인터럽트로 데이터를 수신하고 받은 데이터를 PC에 출력하는 프로그램을 작성해보자. 먼저, Cube Mx에서는 usart1을 비동기로 활성화 해주고 Global interrupt를 enable해줘야한다. 우리가 알아야하는 함수는 3가지다. 1. HAL_UART_Receive_IT() - UART 수신 인터럽트를 설정하는 함수다. 2. void USART1_IRQHandler(void) - uart1번을 사용한다고 했을 때, 수신인터럽트가 발생하면 이 함수로 이동하여 IRQ_Handler를 실행하고 HAL_UART_RxCpltCallback()으로 이동한다. 3. HAL_UART_RxCpltCallback() - 결론적으로 이 함수를 호출하므로, 인..
Cube MX란? Cube MX는 ST사의 MCU를 GUI를 통해 타이머, 통신(Uart, I2C, SPI), 인터럽트, DMA, GPIO 등의 기본적인 설정을 하면 자동으로 코드를 생성해주는 툴이다. 그 외에도 MCU의 핀 배열이나 동작 클럭을 확인할 수 있다.
[STM32]ST-Link 사용법 및 IAR 디버깅 방법 ST-Link는 무엇일까? 해석 - ST-LINK/V2는 STM8 및 STM32 마이크로컨트롤러 제품군을 위한 회로 내 디버거 및 프로그래머다. SWIM 및 JTAG/SWD 인터페이스는 애플리케이션 보드에 위치한 모든 STM8 또는 STM32 마이크로컨트롤러와 통신하기 위해 사용된다. 대충 ST-Link는 STM계열의 보드에 프로그램을 업로드 하거나 디버깅할 때 사용하고, 그 인터페이스로 SWIM, JTAG, SWD를 사용할 수 있다는 것 같다. 하드웨어 디버거과 소프트웨어 디버거 주로 시리얼 포트로 터미널 프로그램에 메서지를 출력하며 디버깅하는 것을 소프트웨어 디버깅이라하고 ST-Link등 디버깅 장비와 SWIM, JTAG/SWD 등의 인터페이스로 브레이킹 포인트를 걸고 코드를 한줄 한줄 실행시키고 멈..
[STM32]UART 통신 입출력 실습 무언갈 배울 때 가장 중요한건 왜 배우는지 목적이 무엇인지 아는 것이라고 생각한다. 나는 디버깅할 때 pc로 값을 출력하도록하거나 센서의 값을 읽기 위해 uart 통신을 사용할 것이다. uart를 사용하기 위해 usart1를 비동기 모드로 설정하였다. Basic Parameter를 보면 115200 Baud rate, 8bit, None parity, 1 Stop Bit로 설정하였다. 이전 포스팅을 통해 이 값들이 무엇을 이미하는지 알 수 있을 것이다. Pin out view를 통해 tx, rx핀이 어느 핀으로 설정되있는지 알 수 있다. 자신이 가진 PCB와 사용하는 핀이 다르다면 옮길 수 있다. 나는 PCB회로를 확인한 결과 제대로 설정되있어서 옮기지 않았다. project manager에서 프로젝트 ..