개발/기술문의

LabVIEW/STM32 등 개발문의 -> jexe0716@gmail.com 으로 연락부탁드립니다.

반응형

분류 전체보기 24

Systick / HAL_SYSTICK_Callback() 사용

STM32를 사용할 때 가장 만족하는 기능 중 하나가 Systick 이다. Systick는 ARM Cortex-M에 지원하는 24bit Timer이다. 이녀석이 편리한 것은 CubeMX에서 내가 원하는 HCLK를 설정하면 알아서 Systick은 1ms 을 보장하는 세팅이 되어 있다. 그래서 일반 Timer와 달리, 이녀석을 통해 스케줄링을 설계한다. 아래의 글은 STM32F429ZI 에서 systick 사용하기 위한 예제이다. Systick동작을 사용하기 위해서는 다음과 같은 코드 작성이 필요하다. Core폴더-Src폴더-stm32f4xx_it.c 에 있는 void SysTick_Handler (void) 를 찾는다. 주석 /* USER CODE BEGIN SysTick_IRQn 1 */ 아래에 HAL_..

STM32/HAL library 2020.10.01

BufferedSerial 과 Ticker

Mbed 를 이용하여 UART 통신을 할 때 BufferedSerial 을 사용하면 쉽게 여러 데이터를 전송할 수 있다. 사용방법은 기존의 Serial과 동일하다. for 문에 serial.putc(); 로 날렸었다면 BufferedSerial은 아래처럼 serial.write(buffer, num); 로 쉽게 보낼 수 있다. (Cube HAL library에서는 그렇게 쉬운 것이 Mbed에서는 오히려 어려운 경우의 예이다...) 그리고 이전에 HAL에서 Systick Callback 함수를 사용하여 원하는 시간에 동작을 하였다면, Mbed에서는 Ticker라는 것으로 쉽게 동작할 수 있다. tick.attach(func(), time); 으로 원하는 시간에 함수가 동작한다. 반대로 tick.detach..

STM32/Mbed 2020.09.19

STM32 ARM에서 ROS와 연동하기(2, subscriber)

STM32 ARM에서 ROS와 연동하기(1, publisher) 에 이어서, Master PC로부터 메시지를 받아 동작하는 코드를 구현해본다. Master PC에서 servo motor의 position 값을 메세지로 날려주면, microcontroller에서 메세지를 읽고 servo motor의 위치를 조절한다. 먼저, 지난 번과 동일하게 ros_lib_kinetic를 사용하며 추가로 servo 라이브러리를 받았다. 그리고 메세지의 데이터 타입은 float형을 사용한다. publisher와 달리 subscriber는 callback 함수를 만들어서 사용한다는 차이가 있다. 메세지를 받아서 그에 맞게 적절한 행동을 취할 수 있게 된다. 전체 코드는 아래와 같다. [ Code ] 12345678910111..

STM32/Mbed 2020.09.13

STM32 ARM에서 ROS와 연동하기(1, publisher)

ROS는 rosserial 를 통해서 외부 microcontroller와 통신이 가능하다. rosserial은 시리얼 통신으로 받은 데이터를 메세지 타입으로 변환하여 Node 간 메시지를 전송할 수 있게 한다. 따라서 microcontroller와 메시지를 주고 받기 위해서는 Master PC에 rosserial가 준비되어야 한다. Mbed를 사용하면 ROS와 연동할 수 있는 라이브러리를 사용할 수 있다. 물론 ROS 버전에 맞춰 사용해야 하며, 이 라이브러리를 사용하게 되면 ROS에서 사용한 코드와 동일하게 publisher와 subscriber, message를 만들어서 사용할 수 있다. ARM 계열 사용자는 Mbed를 통해서 쉽게 ROS와 연결 할 수 있어서 편리하다. Mbed Compiler 환경..

STM32/Mbed 2020.09.13
반응형