Added Test Wake-Up
[i3-mote/i3-mote.git] / Basic-Test-Package / MSP432 / Test_MSP432_WakeUp / main.c
1 /*
2  *  ======== empty_min.c ========
3  */
4 /* XDCtools Header files */
5 #include <xdc/std.h>
6 #include <xdc/runtime/System.h>
7 #include <xdc/runtime/Error.h>
9 /* BIOS Header files */
10 #include <ti/sysbios/BIOS.h>
11 #include <ti/sysbios/knl/Task.h>
12 #include <ti/sysbios/knl/Clock.h>
13 #include <ti/sysbios/knl/Semaphore.h>
14 #include <ti/sysbios/knl/Event.h>
16 /* TI-RTOS Header files */
17 #include <ti/drivers/GPIO.h>
18 #include <ti/drivers/I2C.h>
19 #include <ti/drivers/PIN.h>
20 // #include <ti/drivers/SPI.h>
21 #include <ti/drivers/UART.h>
22 // #include <ti/drivers/Watchdog.h>
24 /* Board Header files */
25 #include "Board.h"
27 #include "uart_printf.h"
29 #define TASKSTACKSIZE   (1024)
31 Task_Struct task0Struct;
32 Char task0Stack[TASKSTACKSIZE];
34 /* Semaphore */
35 Semaphore_Struct semStruct;
36 Semaphore_Handle semHandle;
39 /*
40  * Application LED pin configuration table:
41  *   - All LEDs board LEDs are off.
42  */
43 PIN_Config ledPinTable[] = {
44     Board_LED0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
45     Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
46     PIN_TERMINATE
47 };
49 PIN_Config buttonPinTable[] = {
50     Board_BUTTON0  | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE,
51     //Board_BUTTON1  | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE,
52     PIN_TERMINATE
53 };
56 void buttonCallbackFxn(unsigned int pinId) {
59         Semaphore_post(semHandle);
60         System_printf("***\r\n");
61         System_flush();
63 }
66 /*
67  *  ======== heartBeatFxn ========
68  *  Toggle the Board_LED0. The Task_sleep is determined by arg0 which
69  *  is configured for the heartBeat Task instance.
70  */
71 Void heartBeatFxn(UArg arg0, UArg arg1)
72 {
74     //GPIO_write(Board_LED0, 1);
75     //GPIO_write(Board_LED1, 1);
77     Semaphore_pend(semHandle, BIOS_WAIT_FOREVER);
79         /* Start test */
80     //GPIO_write(Board_LED0, 0);
81     //GPIO_write(Board_LED1, 0);
83         while (1)
84         {
85                 Task_sleep((UInt)arg0);
86                 GPIO_toggle(Board_LED0);
87                 GPIO_toggle(Board_LED1);
88         }
89 }
92 /*
93  *  ======== main ========
94  */
96 int main(void)
97 {
98     Task_Params taskParams;
100     Semaphore_Params semParams;
102     /* Call board init functions */
103     Board_initGPIO();
104     Board_initGeneral();
105     //Board_initI2C();
106     // Board_initSPI();
107     Board_initUART();
108     // Board_initWatchdog();
110     UART_Params uartParams;
111     UART_Params_init(&uartParams);
112     uartParams.baudRate = 115200;
113     uartParams.readEcho = UART_ECHO_OFF;
115     //uartParams.readEcho = UART_ECHO_OFF;
116     UartPrintf_init(UART_open(Board_UART, &uartParams));
118     /* Construct heartBeat Task  thread */
119     Task_Params_init(&taskParams);
120     taskParams.arg0 = 100000 / Clock_tickPeriod;
121     taskParams.stackSize = TASKSTACKSIZE;
122     taskParams.stack = &task0Stack;
123     Task_construct(&task0Struct, (Task_FuncPtr)heartBeatFxn, &taskParams, NULL);
125     /* Construct Semaphore and Obtain instance handle */
126     Semaphore_Params_init(&semParams);
127     Semaphore_construct(&semStruct,0, &semParams);
128     semHandle = Semaphore_handle(&semStruct);
130     /* Setup callback for button pins */
131     GPIO_setCallback(Board_BUTTON0,buttonCallbackFxn);
132     GPIO_enableInt(Board_BUTTON0);
134     /* Setup callback for button pins */
135     GPIO_write(Board_LED0, 0);
136     GPIO_write(Board_LED1, 0);
138     /* Start BIOS */
139     BIOS_start();
141     return (0);