From 0d3c7da33152ace5422f79fae6ce757d7328c32c Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 2 Jan 2013 10:51:52 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5014 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 169 ++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp new file mode 100644 index 000000000..3851e1d29 --- /dev/null +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -0,0 +1,169 @@ +/* + ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, + 2011,2012 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "ch.hpp" +#include "hal.h" +#include "test.h" +#include "evtimer.h" + +using namespace chibios_rt; + +/* + * LED blink sequences. + * NOTE: Sequences must always be terminated by a GOTO instruction. + * NOTE: The sequencer language could be easily improved but this is outside + * the scope of this demo. + */ +#define SLEEP 0 +#define GOTO 1 +#define STOP 2 +#define BITCLEAR 3 +#define BITSET 4 + +typedef struct { + uint8_t action; + uint32_t value; +} seqop_t; + +// Flashing sequence for LED4. +static const seqop_t LED4_sequence[] = +{ + {BITCLEAR, PAL_PORT_BIT(GPIOD_LED4)}, + {SLEEP, 200}, + {BITSET, PAL_PORT_BIT(GPIOD_LED4)}, + {SLEEP, 1800}, + {GOTO, 0} +}; + +// Flashing sequence for LED3. +static const seqop_t LED3_sequence[] = +{ + {SLEEP, 1000}, + {BITCLEAR, PAL_PORT_BIT(GPIOD_LED3)}, + {SLEEP, 1800}, + {BITSET, PAL_PORT_BIT(GPIOD_LED3)}, + {SLEEP, 200}, + {GOTO, 1} +}; + +/* + * Sequencer thread class. It can drive LEDs or other output pins. + * Any sequencer is just an instance of this class, all the details are + * totally encapsulated and hidden to the application level. + */ +class SequencerThread : public BaseStaticThread<128> { +private: + const seqop_t *base, *curr; // Thread local variables. + +protected: + virtual msg_t Main(void) { + + setName("sequencer"); + + while (true) { + switch(curr->action) { + case SLEEP: + sleep(curr->value); + break; + case GOTO: + curr = &base[curr->value]; + continue; + case STOP: + return 0; + case BITCLEAR: + palClearPort(GPIOD, curr->value); + break; + case BITSET: + palSetPort(GPIOD, curr->value); + break; + } + curr++; + } + } + +public: + SequencerThread(const seqop_t *sequence) : BaseStaticThread<128>() { + + base = curr = sequence; + } +}; + +/* + * Tester thread class. This thread executes the test suite. + */ +class TesterThread : public BaseStaticThread<256> { + +protected: + virtual msg_t Main(void) { + + setName("tester"); + + return TestThread(&SD2); + } + +public: + TesterThread(void) : BaseStaticThread<256>() { + } +}; + +/* Static threads instances.*/ +static TesterThread tester; +static SequencerThread blinker1(LED3_sequence); +static SequencerThread blinker2(LED4_sequence); + +/* + * 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(); + System::init(); + + /* + * Activates the serial driver 2 using the driver default configuration. + */ + sdStart(&SD2, NULL); + + /* + * Starts several instances of the SequencerThread class, each one operating + * on a different LED. + */ + blinker1.start(NORMALPRIO + 10); + blinker2.start(NORMALPRIO + 10); + + /* + * Serves timer events. + */ + while (true) { + if (palReadPad(GPIOA, GPIOA_BUTTON)) { + tester.start(NORMALPRIO); + tester.wait(); + }; + } + + return 0; +} -- cgit v1.2.3 From 8fa18b0b6b3f5640a2db179ec938f8962f65244c Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 2 Jan 2013 11:12:46 +0000 Subject: Updated C++ wrapper and STM32F4-Discovery C++ demo. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5015 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 49 ++++++++++++++++++++------- 1 file changed, 37 insertions(+), 12 deletions(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index 3851e1d29..0caee9bc4 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -21,7 +21,6 @@ #include "ch.hpp" #include "hal.h" #include "test.h" -#include "evtimer.h" using namespace chibios_rt; @@ -42,25 +41,44 @@ typedef struct { uint32_t value; } seqop_t; +// Flashing sequence for LED3. +static const seqop_t LED3_sequence[] = +{ + {BITSET, PAL_PORT_BIT(GPIOD_LED3)}, + {SLEEP, 800}, + {BITCLEAR, PAL_PORT_BIT(GPIOD_LED3)}, + {SLEEP, 200}, + {GOTO, 0} +}; + // Flashing sequence for LED4. static const seqop_t LED4_sequence[] = { - {BITCLEAR, PAL_PORT_BIT(GPIOD_LED4)}, - {SLEEP, 200}, - {BITSET, PAL_PORT_BIT(GPIOD_LED4)}, - {SLEEP, 1800}, + {BITSET, PAL_PORT_BIT(GPIOD_LED4)}, + {SLEEP, 600}, + {BITCLEAR, PAL_PORT_BIT(GPIOD_LED4)}, + {SLEEP, 400}, {GOTO, 0} }; -// Flashing sequence for LED3. -static const seqop_t LED3_sequence[] = +// Flashing sequence for LED5. +static const seqop_t LED5_sequence[] = { - {SLEEP, 1000}, - {BITCLEAR, PAL_PORT_BIT(GPIOD_LED3)}, - {SLEEP, 1800}, - {BITSET, PAL_PORT_BIT(GPIOD_LED3)}, + {BITSET, PAL_PORT_BIT(GPIOD_LED5)}, + {SLEEP, 400}, + {BITCLEAR, PAL_PORT_BIT(GPIOD_LED5)}, + {SLEEP, 600}, + {GOTO, 0} +}; + +// Flashing sequence for LED6. +static const seqop_t LED6_sequence[] = +{ + {BITSET, PAL_PORT_BIT(GPIOD_LED6)}, {SLEEP, 200}, - {GOTO, 1} + {BITCLEAR, PAL_PORT_BIT(GPIOD_LED6)}, + {SLEEP, 800}, + {GOTO, 0} }; /* @@ -127,6 +145,8 @@ public: static TesterThread tester; static SequencerThread blinker1(LED3_sequence); static SequencerThread blinker2(LED4_sequence); +static SequencerThread blinker3(LED5_sequence); +static SequencerThread blinker4(LED6_sequence); /* * Application entry point. @@ -145,8 +165,11 @@ int main(void) { /* * Activates the serial driver 2 using the driver default configuration. + * PA2(TX) and PA3(RX) are routed to USART2. */ sdStart(&SD2, NULL); + palSetPadMode(GPIOA, 2, PAL_MODE_ALTERNATE(7)); + palSetPadMode(GPIOA, 3, PAL_MODE_ALTERNATE(7)); /* * Starts several instances of the SequencerThread class, each one operating @@ -154,6 +177,8 @@ int main(void) { */ blinker1.start(NORMALPRIO + 10); blinker2.start(NORMALPRIO + 10); + blinker3.start(NORMALPRIO + 10); + blinker4.start(NORMALPRIO + 10); /* * Serves timer events. -- cgit v1.2.3 From 5a73ea36d8c957c9c1041dcad676c1f6347767c7 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 3 Jan 2013 11:29:55 +0000 Subject: File system abstract interface added. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5024 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index 0caee9bc4..3834a1046 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -19,6 +19,7 @@ */ #include "ch.hpp" +#include "fs.hpp" #include "hal.h" #include "test.h" -- cgit v1.2.3 From b5da4b76b5810b41900432832f178280069d8d91 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 3 Jan 2013 16:17:42 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5027 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index 3834a1046..d56a3f4c3 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -92,7 +92,7 @@ private: const seqop_t *base, *curr; // Thread local variables. protected: - virtual msg_t Main(void) { + virtual msg_t main(void) { setName("sequencer"); -- cgit v1.2.3 From 66205faf65927f86cd1faa8d738e48551fff75e0 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Fri, 4 Jan 2013 09:38:41 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5029 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index d56a3f4c3..2275d6702 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -19,11 +19,13 @@ */ #include "ch.hpp" -#include "fs.hpp" #include "hal.h" +#include "fs.hpp" +#include "fatfs_fsimpl.hpp" #include "test.h" using namespace chibios_rt; +using namespace chibios_fatfs; /* * LED blink sequences. @@ -149,6 +151,8 @@ static SequencerThread blinker2(LED4_sequence); static SequencerThread blinker3(LED5_sequence); static SequencerThread blinker4(LED6_sequence); +static FatFSWrapper fs(NULL); + /* * Application entry point. */ -- cgit v1.2.3 From 77f68f1c5b8f39a9146f5bd644867dde10b24c14 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Fri, 4 Jan 2013 10:26:22 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5030 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index 2275d6702..426d2b336 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -151,7 +151,7 @@ static SequencerThread blinker2(LED4_sequence); static SequencerThread blinker3(LED5_sequence); static SequencerThread blinker4(LED6_sequence); -static FatFSWrapper fs(NULL); +static FatFSWrapper fs; /* * Application entry point. @@ -168,6 +168,9 @@ int main(void) { halInit(); System::init(); + fs.mount(); + fs.unmount(); + /* * Activates the serial driver 2 using the driver default configuration. * PA2(TX) and PA3(RX) are routed to USART2. -- cgit v1.2.3 From 184a71345c6a36a9a8664eda8fbcc3ea728267a8 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 2 Feb 2013 10:58:09 +0000 Subject: Updated license years. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5102 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index 426d2b336..a0dad4642 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -1,6 +1,6 @@ /* ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, - 2011,2012 Giovanni Di Sirio. + 2011,2012,2013 Giovanni Di Sirio. This file is part of ChibiOS/RT. -- cgit v1.2.3 From 853216256ad4cdacf5f94edb7d6b738c6be165a1 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 30 Mar 2013 10:32:37 +0000 Subject: Relicensing parts of the tree under the Apache 2.0 license. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5521 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index a0dad4642..c4ced6eea 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -1,21 +1,17 @@ /* - ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010, - 2011,2012,2013 Giovanni Di Sirio. + ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio - This file is part of ChibiOS/RT. + 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 - ChibiOS/RT is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. + http://www.apache.org/licenses/LICENSE-2.0 - ChibiOS/RT is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . + 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.hpp" -- cgit v1.2.3 From 75628f0e79fd2bacd3e1eb0f31cd4eb6a3a32450 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 11 May 2013 10:20:48 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5708 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp') diff --git a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp index c4ced6eea..53825dbdb 100644 --- a/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp +++ b/demos/ARMCM4-STM32F407-DISCOVERY-G++/main.cpp @@ -128,7 +128,7 @@ public: class TesterThread : public BaseStaticThread<256> { protected: - virtual msg_t Main(void) { + virtual msg_t main(void) { setName("tester"); @@ -192,6 +192,7 @@ int main(void) { tester.start(NORMALPRIO); tester.wait(); }; + BaseThread::sleep(MS2ST(500)); } return 0; -- cgit v1.2.3