diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2015-05-15 09:41:24 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2015-05-15 09:41:24 +0000 |
commit | dc087c5fecaaa29a4b3a55e6976e7ba7ee9d13ab (patch) | |
tree | 87863e17152fbc2006b4c9df4a47b162ef4f3b37 /demos/various/RT-ARMCM0-GENERIC | |
parent | f3c7490379150c1c1abb9db9ff9035f54b62320e (diff) | |
download | ChibiOS-dc087c5fecaaa29a4b3a55e6976e7ba7ee9d13ab.tar.gz ChibiOS-dc087c5fecaaa29a4b3a55e6976e7ba7ee9d13ab.tar.bz2 ChibiOS-dc087c5fecaaa29a4b3a55e6976e7ba7ee9d13ab.zip |
Improved standalone RT and NIL demos.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7984 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos/various/RT-ARMCM0-GENERIC')
-rw-r--r-- | demos/various/RT-ARMCM0-GENERIC/main.c | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/demos/various/RT-ARMCM0-GENERIC/main.c b/demos/various/RT-ARMCM0-GENERIC/main.c index fd6b6558e..2cc543d51 100644 --- a/demos/various/RT-ARMCM0-GENERIC/main.c +++ b/demos/various/RT-ARMCM0-GENERIC/main.c @@ -16,18 +16,40 @@ #include "ch.h"
+#if !defined(SYSTEM_CLOCK)
+#define SYSTEM_CLOCK 8000000U
+#endif
+
/*
- * This is a periodic thread that does absolutely nothing except sleeping.
+ * @brief System Timer handler.
+ */
+CH_IRQ_HANDLER(SysTick_Handler) {
+
+ CH_IRQ_PROLOGUE();
+
+ chSysLockFromISR();
+ chSysTimerHandlerI();
+ chSysUnlockFromISR();
+
+ CH_IRQ_EPILOGUE();
+}
+
+static uint32_t seconds_counter;
+static uint32_t minutes_counter;
+
+/*
+ * Seconds counter thread.
*/
static THD_WORKING_AREA(waThread1, 128);
static THD_FUNCTION(Thread1, arg) {
(void)arg;
- chRegSetThreadName("sleeper");
+ chRegSetThreadName("counter");
while (true) {
chThdSleepMilliseconds(1000);
+ seconds_counter++;
}
}
@@ -37,6 +59,15 @@ static THD_FUNCTION(Thread1, arg) { int main(void) {
/*
+ * Hardware initialization, in this simple demo just the systick timer is
+ * initialized.
+ */
+ SysTick->LOAD = SYSTEM_CLOCK / CH_CFG_ST_FREQUENCY - (systime_t)1;
+ SysTick->VAL = (uint32_t)0;
+ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk |
+ SysTick_CTRL_ENABLE_Msk;
+
+ /*
* System initializations.
* - Kernel initialization, the main() function becomes a thread and the
* RTOS is active.
@@ -49,9 +80,11 @@ int main(void) { (void) chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
- * Normal main() thread activity, in this demo it just sleeps.
+ * Normal main() thread activity, in this demo it does nothing except
+ * increasing the minutes counter.
*/
while (true) {
- chThdSleepMilliseconds(1000);
+ chThdSleepSeconds(60);
+ minutes_counter++;
}
}
|