Komma igång med FRDM kl46z del 2 - USART (3 / 3 steg)
Steg 3: Skriva ett program
Vi inkluderar seriella bibliotek.
#include "mbed.h"
#include < Serial.h >< br >
#define BAUD 9600 / / hastighet för överföring
#define BUFFER_SIZE 20 / / buffer för lösenord
#define retur 0x0d / / Enter-knappen i HEX
Seriella uart1(PTE0,PTE1,"uart1");
DigitalOut redLed(LED2); Ange röd led stift
DigitalOut greenLed(LED1); Ange grön led stift
void usart_Init (size_t baud); UART init
char * get_string(void);
char * kommando = "lösenord";
int main)
{
char * c;
usart_Init(baud); initiera usart
redLed.write(1); stänga av lysdioder
greenLed.write(1);
uart1.printf ("\n\rProgram börjar nu... \n\r"); skriva ut text i terminal
uart1.printf ("Baud rate - %d\n\r",BAUD);
samtidigt (1)
{
c = get_string(); c = sträng från terminal
IF(Strcmp(c,Command) == 0) / / om strängen är samma som "lösenord"
{
greenLed.write(0); slå på LED
uart1.printf ("\n\rCorrect lösenord!"); skriva ut meddelande
}
annat
{
redLed.write(0); Aktivera röda LED
uart1.printf ("\n\rWrong lösenord");
}
greenLed.write(1); Inaktivera lysdioder
redLed.write(1);
}
}
void usart_Init(size_t baud)
{
uart1.baud(baud); Ange baudvärde
uart1.format(); Försummelsen: 8 bitar data, ingen paritet, 1 stopp lite
}
char *get_string(void)
{
char buffer [BUFFER_SIZE];
char * strBuf = buffert; Placera pekaren på buffert
int jag = 0, cnt = 0;
char c;
medan ((c = uart1.getc())! = retur) / / röding är inte RETUR
{
buffert [i] = c; sätta röding för bufferten
i ++, cnt ++;
}
om (cnt < = BUFFER_SIZE)
{
för (jag = cnt; jag < BUFFER_SIZE; i ++) / / om data är kortaste än buffertstorlek
{/ / sedan lägga null-värden efter sträng
buffert [i] = '\0'; ex. exampleString '\0 '' \0'' \0'... /
}
}
annat
{
uart1.printf ("\n\rWrong sträng storlek!");
}
återvända strBuf;
}