개발/기술문의

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

STM32/Mbed

BufferedSerial 과 Ticker

jexe 2020. 9. 19. 13:59
반응형

Mbed 를 이용하여 UART 통신을 할 때 BufferedSerial 을 사용하면 쉽게 여러 데이터를 전송할 수 있다.

사용방법은 기존의 Serial과 동일하다. 

 

BufferedSerial

 

for 문에 serial.putc(); 로 날렸었다면 BufferedSerial은 아래처럼 serial.write(buffer, num); 로 쉽게 보낼 수 있다.

(Cube HAL library에서는 그렇게 쉬운 것이 Mbed에서는 오히려 어려운 경우의 예이다...)

Array 전송

그리고 이전에 HAL에서 Systick Callback 함수를 사용하여 원하는 시간에 동작을 하였다면, Mbed에서는 Ticker라는 것으로 쉽게 동작할 수 있다. 

tick.attach(func(), time); 으로 원하는 시간에 함수가 동작한다. 반대로 tick.detach(); 로 동작을 종료시킬 수 있다.

Ticker

 

기억을 위해 버튼을 누르면 100ms마다 UART 전송을 반복적으로 실행하는 코드로 기록해본다.

[ Code ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "mbed.h"
#include "BufferedSerial.h"
 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
BufferedSerial device(USBTX, USBRX); 
 
Timer  timer1;
Ticker tick1;
 
InterruptIn user_button(USER_BUTTON);
////////////////////////////////////////////////////////////////////////////////
uint8_t TransmitBuffer[8];
 
 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void DataTransmit()
    TransmitBuffer[0= uint16data1 >> 8;
    TransmitBuffer[1= uint16data1 & 0xff;
    TransmitBuffer[2= uint8data2;
    TransmitBuffer[3= uint8data3;
    TransmitBuffer[4= uint8data4;
    TransmitBuffer[5= uint8data5;
    TransmitBuffer[6= uint8data6;
    TransmitBuffer[7= uint8data7;
 
    device.write(TransmitBuffer, 8);
}
 
 
void Button_released()
{
  timer1.start();      
  tick1.attach(DataTransmit, 0.1);
}
 
 
////////////////////////////////////////////////////////////////////////////////
int main()
{  
  /* Serial ***************************/
  device.baud(115200);
  
  /* Button ***************************/
  user_button.fall(&Button_released);
   
  while(1) {
    
  }
}
 
cs

 

반응형

'STM32 > Mbed' 카테고리의 다른 글

Eigen Library 와 Simple Kalman Filter  (0) 2021.04.14
EtherCAT통신하기  (1) 2021.02.28
Mbed Studio X HAL Library  (0) 2020.11.03
STM32 ARM에서 ROS와 연동하기(2, subscriber)  (0) 2020.09.13
STM32 ARM에서 ROS와 연동하기(1, publisher)  (0) 2020.09.13