PLEASE EXPLAIN CODE
#include <msp432.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h> //Exact-width integer types
#include <driverlib.h> //Driver library
#define DCO_FREQ 48000000 //unit: Hz; DCO nominal frequencies: 1.5, 3, 6, 12, 24, 48 MHz.
#define TIMER0_FREQ 1 //unit: Hz
#define RED_LED GPIO_PIN0
#define GREEN_LED GPIO_PIN1
#define BLUE_LED GPIO_PIN2
#define NUM_DISP_TEXT_LINE 4
#define MAX_STR_BUFFER_LEN 100
//Function prototypes
void initDevice(void);
void initGPIO(void);
void initTimer(void);
void initUART(void);
void initADC14(void);
void uart0_transmitStr(const char *str);
//Global variables
uint32_t clockMCLK;
uint8_t currentLED = RED_LED;
char strBuffer[MAX_STR_BUFFER_LEN];
const char *terminalDisplayText[NUM_DISP_TEXT_LINE] =
{
"\r\n",
"UART and User Button Demo\r\n",
"R: Red, G: Green, B: Blue, S: Sample, H: Help\r\n",
"> "
};
void main(void)
{
uint32_t i;
uint8_t data;
initDevice();
initGPIO();
initTimer();
initUART();
initADC14();
Interrupt_enableMaster();
Timer32_startTimer(TIMER32_0_BASE, false);
//Initial display on terminal.
for(i=0; i<NUM_DISP_TEXT_LINE; i++)
{
uart0_transmitStr(terminalDisplayText[i]);
}
while(1)
{
if(uart0_receiveDataAvailable())
{
data = uart0_receiveByte();
switch(data)
{
case 'R':
case 'r':
currentLED = RED_LED;
uart0_transmitStr("Blink red LED.\r\n> ");
break;
case 'G':
case 'g':
currentLED = GREEN_LED;
uart0_transmitStr("Blink green LED.\r\n> ");
break;
case 'B':
case 'b':
currentLED = BLUE_LED;
uart0_transmitStr("Blink blue LED.\r\n> ");
break;
case 'H':
case 'h':
for(i=0; i<NUM_DISP_TEXT_LINE; i++)
{
sprintf(strBuffer, "%s", terminalDisplayText[i]);
uart0_transmitStr(strBuffer);
}
break;
case 'S':
case 's':
ADC14_toggleConversionTrigger();
while(ADC14_isBusy());
sprintf(strBuffer, "Sample: %d\r\n> ", ADC14_getResult(ADC_MEM0));
uart0_transmitStr(strBuffer);
break;
default:
sprintf(strBuffer, "Invalid input: %c\r\n> ", data);
uart0_transmitStr(strBuffer);
break;
}
}
}
}