diff options
author | Fabio Utzig <utzig@utzig.org> | 2016-05-15 12:17:52 +0000 |
---|---|---|
committer | Fabio Utzig <utzig@utzig.org> | 2016-05-15 12:17:52 +0000 |
commit | e555cd14ab74a2d258b43c86a016f01243c3cfce (patch) | |
tree | 390021d2fac12c729e40a6a5b3f3b1bfc1a62a6a /demos/AVR/RT-PRO_MICRO/main.c | |
parent | ba84b3cc239d4cfdf8fc16b8c4bde12593698430 (diff) | |
download | ChibiOS-e555cd14ab74a2d258b43c86a016f01243c3cfce.tar.gz ChibiOS-e555cd14ab74a2d258b43c86a016f01243c3cfce.tar.bz2 ChibiOS-e555cd14ab74a2d258b43c86a016f01243c3cfce.zip |
[AVR] Add support for sparkfun pro micro board
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9489 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos/AVR/RT-PRO_MICRO/main.c')
-rw-r--r-- | demos/AVR/RT-PRO_MICRO/main.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/demos/AVR/RT-PRO_MICRO/main.c b/demos/AVR/RT-PRO_MICRO/main.c new file mode 100644 index 000000000..5b81bcd8c --- /dev/null +++ b/demos/AVR/RT-PRO_MICRO/main.c @@ -0,0 +1,79 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + 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 "usbcfg.h" + +SerialUSBDriver SDU1; + +static THD_WORKING_AREA(waThread1, 32); +static THD_FUNCTION(Thread1, arg) { + + (void)arg; + chRegSetThreadName("Blinker"); + while (true) { + palTogglePad(IOPORT4, BOARD_LED1); + chThdSleepMilliseconds(1000); + } +} + +/* + * Application entry point. + */ +int main(void) { + + /* + * 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(); + + palSetPadMode(IOPORT4, BOARD_LED1, PAL_MODE_OUTPUT_PUSHPULL); + palClearPad(IOPORT4, BOARD_LED1); + + /* + * Initializes a serial-over-USB CDC driver. + */ + sduObjectInit(&SDU1); + sduStart(&SDU1, &serusbcfg); + + /* + * Activates the USB driver and then the USB bus pull-up on D+. + * Note, a delay is inserted in order to not have to disconnect the cable + * after a reset. + */ + usbDisconnectBus(serusbcfg.usbp); + chThdSleepMilliseconds(1000); + usbStart(serusbcfg.usbp, &usbcfg); + usbConnectBus(serusbcfg.usbp); + + /* + * Starts the LED blinker thread. + */ + chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); + + while(TRUE) { + if (SDU1.config->usbp->state == USB_ACTIVE) { + chnWrite(&SDU1, (const uint8_t *)"Hello World!\r\n", 14); + } + chThdSleepMilliseconds(2000); + } +} |