diff options
author | marcoveeneman <marco-veeneman@hotmail.com> | 2014-10-13 23:02:16 +0200 |
---|---|---|
committer | marcoveeneman <marco-veeneman@hotmail.com> | 2014-10-13 23:02:16 +0200 |
commit | 9b75fa8c5ac52a4b443bad7cb23c1073b2f973cc (patch) | |
tree | 47c764b391eba0403208fd15ed6a4343580a5834 /demos/TIVA/RT-TM4C123G-LAUNCHPAD/main.c | |
parent | b74008c8490fbd6f27392c0badd3de5b6792fc09 (diff) | |
download | ChibiOS-Contrib-9b75fa8c5ac52a4b443bad7cb23c1073b2f973cc.tar.gz ChibiOS-Contrib-9b75fa8c5ac52a4b443bad7cb23c1073b2f973cc.tar.bz2 ChibiOS-Contrib-9b75fa8c5ac52a4b443bad7cb23c1073b2f973cc.zip |
Added Tiva demos.
Diffstat (limited to 'demos/TIVA/RT-TM4C123G-LAUNCHPAD/main.c')
-rw-r--r-- | demos/TIVA/RT-TM4C123G-LAUNCHPAD/main.c | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/demos/TIVA/RT-TM4C123G-LAUNCHPAD/main.c b/demos/TIVA/RT-TM4C123G-LAUNCHPAD/main.c new file mode 100644 index 0000000..bb6e963 --- /dev/null +++ b/demos/TIVA/RT-TM4C123G-LAUNCHPAD/main.c @@ -0,0 +1,114 @@ +/* + Copyright (C) 2014 Marco Veeneman + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "ch.h" +#include "hal.h" +#include "test.h" + +typedef struct led_config +{ + ioportid_t port; + uint32_t sleep; + uint8_t pin; +} led_config_t; + +/* + * LED blinker thread. + */ +static THD_WORKING_AREA(waBlinkLedRed, 128); +static THD_WORKING_AREA(waBlinkLedGreen, 128); +static THD_WORKING_AREA(waBlinkLedBlue, 128); +static msg_t blinkLed(void *arg) +{ + led_config_t *ledConfig = (led_config_t*) arg; + + chRegSetThreadName("Blinker"); + + while (TRUE) { + chThdSleepMilliseconds(ledConfig->sleep); + palTogglePad(ledConfig->port, ledConfig->pin); + } + + return (msg_t) 0; +} + +/* + * Application entry point. + */ +int main(void) +{ + led_config_t ledRed, ledGreen, ledBlue; + + /* + * System initializations. + * - HAL initialization, this also initializes the configured device drivers + * and performs the board-specific initializations. + * - Kernel initialization, the main() function becomes a thread and the + * RTOS is active. + */ + halInit(); + chSysInit(); + + ledRed.port = GPIOF; + ledRed.pin = GPIOF_LED_RED; + ledRed.sleep = 100; + + ledGreen.port = GPIOF; + ledGreen.pin = GPIOF_LED_GREEN; + ledGreen.sleep = 101; + + ledBlue.port = GPIOF; + ledBlue.pin = GPIOF_LED_BLUE; + ledBlue.sleep = 102; + + /* + * Creating the blinker threads. + */ + chThdCreateStatic(waBlinkLedRed, + sizeof(waBlinkLedRed), + NORMALPRIO, + blinkLed, + &ledRed); + + chThdCreateStatic(waBlinkLedGreen, + sizeof(waBlinkLedGreen), + NORMALPRIO, + blinkLed, + &ledGreen); + + chThdCreateStatic(waBlinkLedBlue, + sizeof(waBlinkLedBlue), + NORMALPRIO, + blinkLed, + &ledBlue); + + /* + * Start the serial driver with the default configuration. + */ + sdStart(&SD1, NULL); + + /* + * Normal main() thread activity + */ + while (TRUE) { + if (!palReadPad(GPIOF, GPIOF_SW2)) { + TestThread(&SD1); + } + chThdSleepMilliseconds(100); + } + + return 0; +} |