Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of Robotics_LAB_UART by
main.cpp
- Committer:
- hoting
- Date:
- 2017-03-25
- Revision:
- 0:d41917b28387
- Child:
- 1:db577024d9ab
File content as of revision 0:d41917b28387:
#include "mbed.h"
Ticker timer1;
Serial bt(D10, D2); // TXpin, RXpin
//RX
int readcount = 0;
int RX_flag1 = 0;
int RX_flag2 = 0;
char getData[6] = {0,0,0,0,0,0};
short data_received[3] = {0,0,0};
short data_received_old[3] = {0,0,0};
//函式宣告
void init_TIMER();
void timer1_ITR();
void init_UART();
void RX_ITR();
int main()
{
init_TIMER();
init_UART();
while(1) {
}
}
void init_TIMER()
{
timer1.attach_us(&timer1_ITR, 10000.0); // the address of the function to be attached (timer1_ITR) and the interval (1000 micro-seconds)
}
void init_UART()
{
bt.baud(115200); // baud rate設為115200
bt.attach(&RX_ITR, Serial::RxIrq); // Attach a function(RX_ITR) to call whenever a serial interrupt is generated.
}
void timer1_ITR()
{
// 避免收到錯誤資料,若超出設定範圍則用上次的資料
if(data_received[0]>300 || data_received[0]<-300 || data_received[1]>300 || data_received[1]<-300 || data_received[2]>90 || data_received[0]<-90) {
data_received[0] = data_received_old[0];
data_received[1] = data_received_old[1];
data_received[2] = data_received_old[2];
} else {
data_received_old[0] = data_received[0];
data_received_old[1] = data_received[1];
data_received_old[2] = data_received[2];
}
}
void RX_ITR()
{
while(bt.readable()) {
static char uart_read;
uart_read = bt.getc();
if(uart_read == 127 && RX_flag1 == 1) {
RX_flag2 = 1;
} else {
RX_flag1 = 0;
}
if(RX_flag2 == 1) {
getData[readcount] = uart_read;
readcount++;
if(readcount >= 3) {
readcount = 0;
RX_flag2 = 0;
///code for decoding///
data_received[0] = (getData[2] << 8) | getData[1];
///////////////////////
}
} else if(uart_read == 254 && RX_flag1 == 0) {
RX_flag1 = 1;
}
}
}
