반응형
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(); 로 동작을 종료시킬 수 있다.
기억을 위해 버튼을 누르면 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 |