Improved standalone RT and NIL demos.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@7984 35acf78f-673a-0410-8e92-d51de3d6d3f4master
parent
f3c7490379
commit
dc087c5fec
|
@ -16,8 +16,29 @@
|
|||
|
||||
#include "nil.h"
|
||||
|
||||
#if !defined(SYSTEM_CLOCK)
|
||||
#define SYSTEM_CLOCK 8000000U
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Blinker thread #1.
|
||||
* @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) {
|
||||
|
@ -26,6 +47,21 @@ static THD_FUNCTION(Thread1, arg) {
|
|||
|
||||
while (true) {
|
||||
chThdSleepMilliseconds(1000);
|
||||
seconds_counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Minutes counter thread.
|
||||
*/
|
||||
static THD_WORKING_AREA(waThread2, 128);
|
||||
static THD_FUNCTION(Thread2, arg) {
|
||||
|
||||
(void)arg;
|
||||
|
||||
while (true) {
|
||||
chThdSleepSeconds(60);
|
||||
minutes_counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,7 +70,8 @@ static THD_FUNCTION(Thread1, arg) {
|
|||
* match NIL_CFG_NUM_THREADS.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "sleeper", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread1, "counter1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "counter2", Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
@ -42,6 +79,15 @@ THD_TABLE_END
|
|||
*/
|
||||
int main(void) {
|
||||
|
||||
/*
|
||||
* Hardware initialization, in this simple demo just the systick timer is
|
||||
* initialized.
|
||||
*/
|
||||
SysTick->LOAD = SYSTEM_CLOCK / NIL_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
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
*/
|
||||
#define NIL_CFG_NUM_THREADS 1
|
||||
#define NIL_CFG_NUM_THREADS 2
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -16,8 +16,29 @@
|
|||
|
||||
#include "nil.h"
|
||||
|
||||
#if !defined(SYSTEM_CLOCK)
|
||||
#define SYSTEM_CLOCK 8000000U
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Blinker thread #1.
|
||||
* @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) {
|
||||
|
@ -26,6 +47,21 @@ static THD_FUNCTION(Thread1, arg) {
|
|||
|
||||
while (true) {
|
||||
chThdSleepMilliseconds(1000);
|
||||
seconds_counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Minutes counter thread.
|
||||
*/
|
||||
static THD_WORKING_AREA(waThread2, 128);
|
||||
static THD_FUNCTION(Thread2, arg) {
|
||||
|
||||
(void)arg;
|
||||
|
||||
while (true) {
|
||||
chThdSleepSeconds(60);
|
||||
minutes_counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,7 +70,8 @@ static THD_FUNCTION(Thread1, arg) {
|
|||
* match NIL_CFG_NUM_THREADS.
|
||||
*/
|
||||
THD_TABLE_BEGIN
|
||||
THD_TABLE_ENTRY(waThread1, "sleeper", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread1, "counter1", Thread1, NULL)
|
||||
THD_TABLE_ENTRY(waThread2, "counter2", Thread2, NULL)
|
||||
THD_TABLE_END
|
||||
|
||||
/*
|
||||
|
@ -42,6 +79,15 @@ THD_TABLE_END
|
|||
*/
|
||||
int main(void) {
|
||||
|
||||
/*
|
||||
* Hardware initialization, in this simple demo just the systick timer is
|
||||
* initialized.
|
||||
*/
|
||||
SysTick->LOAD = SYSTEM_CLOCK / NIL_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
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
* @note This number is not inclusive of the idle thread which is
|
||||
* Implicitly handled.
|
||||
*/
|
||||
#define NIL_CFG_NUM_THREADS 1
|
||||
#define NIL_CFG_NUM_THREADS 2
|
||||
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,6 +58,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
|
||||
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,6 +58,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
|
||||
|
@ -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++;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue