本文整理汇总了C++中chThdRelease函数的典型用法代码示例。如果您正苦于以下问题:C++ chThdRelease函数的具体用法?C++ chThdRelease怎么用?C++ chThdRelease使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了chThdRelease函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: dyn3_execute
static void dyn3_execute(void) {
Thread *tp;
tprio_t prio = chThdGetPriority();
/* Testing references increase/decrease and final detach.*/
tp = chThdCreateFromHeap(&heap1, WA_SIZE, prio-1, thread, "A");
test_assert(1, tp->p_refs == 1, "wrong initial reference counter");
chThdAddRef(tp);
test_assert(2, tp->p_refs == 2, "references increase failure");
chThdRelease(tp);
test_assert(3, tp->p_refs == 1, "references decrease failure");
/* Verify the new threads count.*/
test_assert(4, regfind(tp), "thread missing from registry");
test_assert(5, regfind(tp), "thread disappeared");
/* Detach and let the thread execute and terminate.*/
chThdRelease(tp);
test_assert(6, tp->p_refs == 0, "detach failure");
test_assert(7, tp->p_state == THD_STATE_READY, "invalid state");
test_assert(8, regfind(tp), "thread disappeared");
test_assert(9, regfind(tp), "thread disappeared");
chThdSleepMilliseconds(50); /* The thread just terminates. */
test_assert(10, tp->p_state == THD_STATE_FINAL, "invalid state");
/* Clearing the zombie by scanning the registry.*/
test_assert(11, regfind(tp), "thread disappeared");
test_assert(12, !regfind(tp), "thread still in registry");
}
开发者ID:Amirelecom,项目名称:brush-v1,代码行数:29,代码来源:testdyn.c
示例2: main
/*
* Application entry point.
*/
int main(void) {
static const evhandler_t evhndl[] = {
InsertHandler,
RemoveHandler
};
Thread *shelltp = NULL;
struct EventListener el0, el1;
/*
* 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();
/*
* Activates the serial driver 2 using the driver default configuration.
*/
sdStart(&SD2, NULL);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Initializes the MMC driver to work with SPI2.
*/
palSetPadMode(IOPORT2, GPIOB_SPI2NSS, PAL_MODE_OUTPUT_PUSHPULL);
palSetPad(IOPORT2, GPIOB_SPI2NSS);
mmcObjectInit(&MMCD1, &SPID2,
&ls_spicfg, &hs_spicfg,
mmc_is_protected, mmc_is_inserted);
mmcStart(&MMCD1, NULL);
/*
* Creates the blinker thread.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and listen for events.
*/
chEvtRegister(&MMCD1.inserted_event, &el0, 0);
chEvtRegister(&MMCD1.removed_event, &el1, 1);
while (TRUE) {
if (!shelltp)
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
chEvtDispatch(evhndl, chEvtWaitOne(ALL_EVENTS));
}
return 0;
}
开发者ID:chcampb,项目名称:J1772AdapterFirmware,代码行数:63,代码来源:main.c
示例3: senokoShellRestart
void senokoShellRestart(void) {
/* Recovers memory of the previous shell. */
if (shell_tp && chThdTerminatedX(shell_tp))
chThdRelease(shell_tp);
shell_tp = shellCreateStatic(&shellConfig, waShellThread,
sizeof(waShellThread), NORMALPRIO);
}
开发者ID:GuzTech,项目名称:senoko-chibios-3,代码行数:7,代码来源:senoko-shell.c
示例4: main
/*
* Application entry point.
*/
int main(void) {
// thread representing the shell
Thread *shelltp = NULL;
/*
* 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();
USBInit();
// main activity - shell respawn upon its termination.
while (TRUE) {
if (!shelltp && isUSBActive()) { // Checks if shell doesnt exist and USB is active
/* Spawns a new shell.*/
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
}
else {
/* If the previous shell exited.*/
if (chThdTerminated(shelltp)) {
/* Recovers memory of the previous shell.*/
chThdRelease(shelltp);
shelltp = NULL;
}
}
chThdSleepMilliseconds(500);
}
}
开发者ID:rummanwaqar,项目名称:ChibiOS_STM32F4_Examples,代码行数:36,代码来源:main.c
示例5: main
int main(void) {
Thread *shelltp = NULL;
halInit();
chSysInit();
palSetPadMode(GPIOA,9,PAL_MODE_STM32_ALTERNATE_PUSHPULL);
palSetPadMode(GPIOA,10,PAL_MODE_INPUT);
sdStart(&SD1, NULL);
shellInit();
palSetPadMode(GPIOA,8,PAL_MODE_OUTPUT_PUSHPULL);
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
Lcd_Init();
Lcd_Clear();
Lcd_Example();
while (TRUE) {
if (!shelltp){
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);}
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp);
shelltp = NULL;
}
chThdSleepMilliseconds(500);
}
}
开发者ID:ohputra,项目名称:stm32-tf,代码行数:30,代码来源:main.c
示例6: main
/*
* Application entry point.
*/
int main(void) {
/* Shell thread */
Thread *shelltp = NULL;
/* UART Configuration Structure */
SerialConfig sc;
// Dummy ADC Configuration structure
ADCConfig adc_conf;
/*
* 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();
GPIO_Configuration();
//ADC_Configuration();
I2C_Configuration();
/* Start Serial Driver */
sc.sc_speed = 115200;
sc.sc_cr1 = 0;
sc.sc_cr2 = USART_CR2_STOP1_BITS | USART_CR2_LINEN;
sc.sc_cr3 = 0;
sdStart(&SD1, &sc);
/* Shell manager initialization. */
shellInit();
/*
* Creates the example thread.
*/
chThdCreateStatic(waThread1, sizeof(waI2CThread), NORMALPRIO, I2CThread, NULL);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state, when the button is
* pressed the test procedure is launched with output on the serial
* driver 1.
*/
while (TRUE) {
if(!shelltp)
{
shelltp = shellCreate( &shell_cfg, THD_WA_SIZE(2048), NORMALPRIO);
}
else if(chThdTerminated(shelltp))
{
// Recovers memory of the previous shell.
chThdRelease(shelltp);
shelltp = NULL;
}
}
}
开发者ID:acourt,项目名称:NXT-Sensor,代码行数:62,代码来源:main.c
示例7: main
int main(void) {
thread_t *sh = NULL;
PollerData.temp = 0;
PollerData.press = 0;/*
PollerData.uTime = 0;*/
halInit();
chSysInit();
shellInit();
usbDisconnectBus(serusbcfg.usbp);
chThdSleepMilliseconds(1000);
usbStart(serusbcfg.usbp, &usbcfg);
usbConnectBus(serusbcfg.usbp);
sduObjectInit(&SDU1);
sduStart(&SDU1, &serusbcfg);
// SPI-related pins (for display)
palSetPadMode(GPIOB, 11, PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(GPIOB, 10, PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(5));
palSetPadMode(GPIOB, 14, PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(5));
spiStart(&SPID1, &spi1cfg);
spiStart(&SPID2, &spi2cfg);
i2cStart(&I2CD1, &i2cconfig);
initGyro();
initAccel();
initMag();
// nunchuk_status = nunchuk_init();
bmp085_status = bmp085_init();
lcd5110Init();
lcd5110SetPosXY(0, 0);
lcd5110WriteText("P :: ");
lcd5110SetPosXY(0, 1);
lcd5110WriteText("T :: ");
chThdCreateStatic(waThreadBlink, sizeof(waThreadBlink), NORMALPRIO, ThreadBlink, NULL);
chThdCreateStatic(waThreadButton, sizeof(waThreadButton), NORMALPRIO, ThreadButton, NULL);
chThdCreateStatic(waPoller, sizeof(waPoller), NORMALPRIO, ThreadPoller, NULL);
while (TRUE) {
if (!sh) {
sh = shellCreate(&shCfg, SHELL_WA_SIZE, NORMALPRIO);
}
else if (chThdTerminatedX(sh)) {
chThdRelease(sh);
sh = NULL;
}
chThdSleepMilliseconds(1000);
}
return 0; // never returns, lol
}
开发者ID:part1zano,项目名称:stm32-chibios,代码行数:59,代码来源:main.c
示例8: Shell_Setup
void Shell_Setup(void){
if (!shelltp){
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);} /* create shell tread */
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
}
开发者ID:ekapujiw2002,项目名称:tugas_akhir,代码行数:8,代码来源:robot_shell.c
示例9: ShellHandler
/*
* Shell exit event.
*/
static void ShellHandler(eventid_t id) {
(void)id;
if (chThdTerminatedX(shelltp)) {
chThdRelease(shelltp);
shelltp = NULL;
}
}
开发者ID:ChibiOS,项目名称:ChibiOS,代码行数:11,代码来源:main.c
示例10: main
int main(void){
halInit();
chSysInit();
Thread *sh = NULL;
sdStart(&SD1,&sd1conf);
//sdStart(&SD1,NULL);
chThdSleepMilliseconds(200);
#if USE_I2C_STUFF
I2CInit_pns();
#if USE_I2C_POLL_THD
/* Create accelerometer thread */
chThdCreateStatic(PollAccelThreadWA,
sizeof(PollAccelThreadWA),
NORMALPRIO,
PollAccelThread,
NULL);
chThdCreateStatic(PollColorThreadWA,
sizeof(PollColorThreadWA),
NORMALPRIO,
PollColorThread,
NULL);
#endif
#endif
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
#if USE_SER_OUT_THD
chThdCreateStatic(waSerOutThr1, sizeof(waSerOutThr1), NORMALPRIO, SerOutThr1, NULL);
#endif
palSetPadMode(GPIOA, GPIOA_PA2, PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(GPIOA, 3, PAL_MODE_OUTPUT_PUSHPULL);
//TestThread(&SD1);
shellInit();
while (TRUE){
//palSetPad(GPIOA, 3);
//TestThread(&SD1);
//chThdSleepMilliseconds(500);
//palClearPad(GPIOA, 3);
//chThdSleepMilliseconds(500);
if (!sh){
chprintf((BaseSequentialStream *)&SD1,"Starting ChibiOS/RT Shell\n\r");
sh = shellCreate(&shCfg, SHELL_WA_SIZE, NORMALPRIO+1);
} else if (chThdTerminated(sh)) {
chThdRelease(sh);
sh = NULL;
}
// chThdSleepMilliseconds(1000);
}
}
开发者ID:emdarcher,项目名称:chibios-tinkering,代码行数:58,代码来源:main.c
示例11: main
/*
* Application entry point.
*/
int main(void) {
Thread *shelltp = NULL;
/*
* 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();
/*
* Activates the USB driver and then the USB bus pull-up on D+.
*/
usbDisconnectBus(serusbcfg.usbp);
chThdSleepMilliseconds(1000);
sduObjectInit(&SDU1);
sduStart(&SDU1, &serusbcfg);
usbConnectBus(serusbcfg.usbp);
palClearPad(GPIOC, GPIOC_USB_DISC);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Creates the blinker thread.
*/
chThdCreateStatic(waBurner, sizeof(waBurner), NORMALPRIO, Burner, &SDU1);
i2cStart(&I2CD1, &i2cfg1);
EepromOpen(&EepromFile);
/* tune ports for I2C1*/
palSetPadMode(IOPORT2, 6, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
palSetPadMode(IOPORT2, 7, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
// BKP->DR1 = 0;
// BKP->DR2 = 0;
// BKP->DR3 = 0;
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state.
*/
while (TRUE) {
if (!shelltp && (SDU1.config->usbp->state == USB_ACTIVE))
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
chThdSleepMilliseconds(1000);
}
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:61,代码来源:main.c
示例12: main
/*
* Application entry point.
*/
int main(void) {
Thread *shelltp = NULL;
/*
* 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();
/*
* Activates the serial driver 1 using the driver default configuration.
*/
sdStart(&SERIAL_DRIVER, NULL);
/*
* Initializes the PWM driver.
*/
pwmStart(&PWM_DRIVER, &pwmcfg);
/*
* Initializes the GPT driver.
*/
gptStart(&GPT_DRIVER, &gptcfg);
/*
* Initializes the EXT driver.
*/
extStart(&EXT_DRIVER, &extcfg);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Creates the blinker thread.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state.
*/
while (TRUE) {
if (!shelltp)
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp);
shelltp = NULL;
}
chprintf(&SERIAL_DRIVER, "M: %6umm T1: %6u T2: %6u\r\n", measure / 2, tmp1, tmp2);
chThdSleepMilliseconds(200);
}
}
开发者ID:openrobots-dev,项目名称:R2P_Sonar_module,代码行数:61,代码来源:main_hardware_test.c
示例13: vshellRestart
void vshellRestart(bool_t active)
{
if (!shelltp && active) {
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
} else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
}
开发者ID:plumbum,项目名称:home-power-control,代码行数:9,代码来源:vshell.c
示例14: usbcdc_process
void usbcdc_process(void)
{
if (!shelltp && (SDU1.config->usbp->state == USB_ACTIVE))
shelltp = shellCreate(&shell_cfg2, SHELLUSB_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
}
开发者ID:glocklueng,项目名称:LightwallController,代码行数:9,代码来源:usbcdc.c
示例15: main
/*
* Application entry point.
*/
int main(void) {
thread_t *shelltp = NULL;
/*
* 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();
#if defined(DEBUG_USB)
palSetPadMode(GPIOA, 1, PAL_MODE_ALTERNATIVE_2);
palSetPadMode(GPIOA, 2, PAL_MODE_ALTERNATIVE_2);
sdStart(&SD1, &s0cfg);
#endif /* DEBUG_USB */
/*
* 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);
#if defined(DEBUG_USB)
usb_debug_init();
#endif /* DEBUG_USB */
chThdSleepMilliseconds(1000);
usbStart(serusbcfg.usbp, &usbcfg);
usbConnectBus(serusbcfg.usbp);
/*
* Shell manager initialization.
*/
shellInit();
while (!chThdShouldTerminateX()) {
if (!shelltp && (serusbcfg.usbp->state == USB_ACTIVE))
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminatedX(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
chThdSleepMilliseconds(1000);
palTogglePad(GPIOB, GPIOB_LED);
}
return 0;
}
开发者ID:dotdash32,项目名称:tmk_keyboard,代码行数:59,代码来源:main.c
示例16: main
/*
* Application entry point.
*/
int main(void) {
Thread *shelltp = NULL;
/*
* 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();
/*
* 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);
chThdSleepMilliseconds(100);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Initializes the SDIO drivers.
*/
mmcObjectInit(&MMCD1);
mmcStart(&MMCD1, &mmccfg);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and check the button state.
*/
while (TRUE) {
if (!shelltp && (SDU1.config->usbp->state == USB_ACTIVE))
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
chThdSleepMilliseconds(1000);
}
}
开发者ID:CCrashBandicot,项目名称:portapack-hackrf,代码行数:59,代码来源:main.c
示例17: main
/*
* Application entry point.
*/
int main(void) {
Thread *shelltp = NULL;
/*
* 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();
/*
* Activates the serial driver 1 using the driver default configuration.
*/
sdStart(&SD1, NULL);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Creates the blinker thread.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
* Normal main() thread activity.
*/
while (TRUE) {
if (!shelltp)
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
#if 0
if (SIU.GPDI[GPIO_BUTTON1].B.PDI) {
volatile msg_t result;
#if 0
MemoryStream report;
msObjectInit(&report, report_buffer, sizeof(report_buffer), 0);
result = TestThread(&report);
#else
result = TestThread(&SD1);
#endif
}
#endif
chThdSleepMilliseconds(1000);
}
return 0;
}
开发者ID:Paluche,项目名称:Hubert,代码行数:59,代码来源:main.c
示例18: main
/*
* Application entry point.
*/
int main(void) {
static const evhandler_t evhndl[] = {
InsertHandler,
RemoveHandler
};
Thread *shelltp = NULL;
struct EventListener el0, el1;
/*
* 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();
/*
* Activates the serial driver 1 and SDC driver 1 using default
* configuration.
*/
sdStart(&SD1, NULL);
sdcStart(&SDCD1, NULL);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Activates the card insertion monitor.
*/
tmr_init(&SDCD1);
/*
* Creates the blinker thread.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and listen for events.
*/
chEvtRegister(&inserted_event, &el0, 0);
chEvtRegister(&removed_event, &el1, 1);
while (TRUE) {
if (!shelltp)
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
chEvtDispatch(evhndl, chEvtWaitOne(ALL_EVENTS));
}
}
开发者ID:Ozhvankov,项目名称:STM32-GPS-Tracker,代码行数:59,代码来源:main.c
示例19: main
/*
* Application entry point.
*/
int main(void) {
Thread *shelltp0 = NULL;
Thread *shelltp2 = NULL;
//unsigned int i = 0;
/*
* 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();
/*
* 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(1500);
usbStart(serusbcfg.usbp, &usbcfg);
usbConnectBus(serusbcfg.usbp);
/* added by myself */
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/* added by myself */
/*
* Normal main() thread activity, in this demo it just performs
* a shell respawn upon its termination.
*/
while (1) {
if (!shelltp0) {
if (SDU1.config->usbp->state == USB_ACTIVE) {
/* Spawns a new shell.*/
shelltp0 = shellCreate(&shell_cfg0, SHELL_WA_SIZE, NORMALPRIO);
}
} else {
/* If the previous shell exited.*/
if (chThdTerminated(shelltp0)) {
/* Recovers memory of the previous shell.*/
chThdRelease(shelltp0);
shelltp0 = NULL;
}
}
chThdSleepMilliseconds(1000);
}
}
开发者ID:dm13dv1b,项目名称:ChibiOS_STM32F4Disc_Console,代码行数:58,代码来源:main.c
示例20: main
/*
* Application entry point.
*/
int main(void) {
Thread *shelltp = NULL;
/*
* 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();
/*
* Activates the serial driver 1 using the driver default configuration.
*/
sdStart(&SD1, NULL);
/*
* Shell manager initialization.
*/
shellInit();
/*
* Starts the LED blinker thread.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
sduObjectInit(&SDU1);
sduStart(&SDU1, &serusbcfg);
usbStart(serusbcfg.usbp, &usbcfg);
usbDisconnectBus(serusbcfg.usbp);
chThdSleepMilliseconds(1000);
usbConnectBus(serusbcfg.usbp);
/*
* Normal main() thread activity, in this demo it does nothing except
* sleeping in a loop and listen for events.
*/
while (TRUE) {
/* if (!shelltp) {*/
if (!shelltp && (SDU1.config->usbp->state == USB_ACTIVE)) {
/* chprintf((BaseSequentialStream *)&SD1, "USB Active\r\n");*/
shelltp = shellCreate(&shell_cfg1, SHELL_WA_SIZE, NORMALPRIO);
}
else if (chThdTerminated(shelltp)) {
chThdRelease(shelltp); /* Recovers memory of the previous shell. */
shelltp = NULL; /* Triggers spawning of a new shell. */
}
chThdSleepMilliseconds(100);
}
return 0;
}
开发者ID:GotoHack,项目名称:ChibiOS,代码行数:57,代码来源:main.c
注:本文中的chThdRelease函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论