/* * 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(); /* * Starting the watchdog driver. */ wdgStart(&WDGD1, &wdgcfg); /* * Normal main() thread activity, it resets the watchdog. */ while (true) { wdgReset(&WDGD1); palToggleLine(LINE_LED4); chThdSleepMilliseconds(500); } return 0; }
static THD_FUNCTION(Thread1, arg) { (void)arg; chRegSetThreadName("blinker"); while (true) { palToggleLine(LINE_LED6_GREEN); chThdSleepMilliseconds(50); palToggleLine(LINE_LED4_BLUE); chThdSleepMilliseconds(50); palToggleLine(LINE_LED3_RED); chThdSleepMilliseconds(50); palToggleLine(LINE_LED5_ORANGE); chThdSleepMilliseconds(50); palToggleLine(LINE_LED7_GREEN); chThdSleepMilliseconds(200); } }
static THD_FUNCTION(Thread1, arg) { (void)arg; chRegSetThreadName("blinker"); while (true) { systime_t time = palReadLine(PORTAB_LINE_BUTTON) == PORTAB_BUTTON_PRESSED ? 250 : 500; palToggleLine(PORTAB_LINE_LED2); chThdSleepMilliseconds(time); } }
static THD_FUNCTION(Thread1, arg) { (void)arg; chRegSetThreadName("blinker"); while (true) { palToggleLine(LINE_LED_GREEN); chThdSleepMilliseconds(500); } }
static THD_FUNCTION(Thread1, arg) { (void)arg; chRegSetThreadName("blinker"); while (true) { palToggleLine(PORTAB_BLINK_LED1); chThdSleepMilliseconds(fs_ready ? 250 : 500); } }
/* * 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(); palSetLineMode(LINE_ARD_D14, PAL_MODE_ALTERNATE(4) | PAL_STM32_OSPEED_HIGH); palSetLineMode(LINE_ARD_D15, PAL_MODE_ALTERNATE(4) | PAL_STM32_OSPEED_HIGH); /* * Activates the serial driver 2 using the driver default configuration. */ sdStart(&SD2, NULL); /* * L3GD20 Object Initialization */ lsm6ds0ObjectInit(&LSM6DS0D1); lsm6ds0Start(&LSM6DS0D1, &lsm6ds0cfg); while (TRUE) { palToggleLine(LINE_LED_GREEN); sensorReadRaw(&LSM6DS0D1, rawdata); sensorReadCooked(&LSM6DS0D1, cookeddata); gyroscopeGetTemp(&LSM6DS0D1, &temp); chprintf(chp, "ACCELEROMETER DATA\r\n"); for(i = 0; i < LSM6DS0_ACC_NUMBER_OF_AXES; i++) chprintf(chp, "RAW-%c:%d\t\t", axesID[i], rawdata[i]); chprintf(chp, "\r\n"); for(i = 0; i < LSM6DS0_ACC_NUMBER_OF_AXES; i++) chprintf(chp, "COOKED-%c:%.3f g\t", axesID[i], cookeddata[i]); chprintf(chp, "\r\nGYROSCOPE DATA\r\n"); for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++) chprintf(chp, "RAW-%c:%d\t\t", axesID[i], rawdata[i + 3]); chprintf(chp, "\r\n"); for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++) chprintf(chp, "COOKED-%c:%.3f dps\t", axesID[i], cookeddata[i + 3]); chprintf(chp, "\r\n"); chprintf(chp, "TEMPERATURE DATA\r\n"); chprintf(chp, "LSM6DS0:%.3f C°\t", temp); chprintf(chp, "\r\n"); chThdSleepMilliseconds(100); #if CHPRINTF_USE_ANSI_CODE chprintf(chp, "\033[2J\033[1;1H"); #endif } }
static THD_FUNCTION(Thread1, arg) { (void)arg; chRegSetThreadName("blinker"); while (true) { systime_t time; time = serusbcfg.usbp->state == USB_ACTIVE ? 250 : 500; palToggleLine(LINE_LED5); chThdSleepMilliseconds(time); } }
/* * 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(); /* * Route USART3 to PC4/TX/pin1 PC5/RX/pin0 */ palSetLineMode(LINE_PIN0, PAL_MODE_ALTERNATE(7)); palSetLineMode(LINE_PIN1, PAL_MODE_ALTERNATE(7)); /* * Activates the serial driver 2 using the driver default configuration. */ sdStart(&SD3, NULL); // palSetLineMode(LINE_LED_GREEN, PAL_MODE_OUTPUT_PUSHPULL); palClearLine(LINE_LED_GREEN); chThdSleepMilliseconds(500); palSetLine(LINE_LED_GREEN); // palSetPadMode(GPIOC, 10, PAL_MODE_OUTPUT_PUSHPULL); // palTogglePad(GPIOC, 10); /* * 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 (palReadLine(LINE_BUTTON)) { palToggleLine(LINE_LED_BLUE); // test_execute((BaseSequentialStream *)&SD3); } chThdSleepMilliseconds(500); } }
void AP_IOMCU_FW::heater_update() { uint32_t now = AP_HAL::millis(); if (!has_heater) { // use blue LED as heartbeat if (now - last_blue_led_ms > 500) { palToggleLine(HAL_GPIO_PIN_HEATER); last_blue_led_ms = now; } } else if (reg_setup.heater_duty_cycle == 0 || (now - last_heater_ms > 3000UL)) { palWriteLine(HAL_GPIO_PIN_HEATER, 0); } else { uint8_t cycle = ((now / 10UL) % 100U); palWriteLine(HAL_GPIO_PIN_HEATER, !(cycle >= reg_setup.heater_duty_cycle)); } }
static THD_FUNCTION(can_rx, p) { struct can_instance *cip = p; event_listener_t el; CANRxFrame rxmsg; (void)p; chRegSetThreadName("receiver"); chEvtRegister(&cip->canp->rxfull_event, &el, 0); while(!chThdShouldTerminateX()) { if (chEvtWaitAnyTimeout(ALL_EVENTS, TIME_MS2I(100)) == 0) continue; while (canReceive(cip->canp, CAN_ANY_MAILBOX, &rxmsg, TIME_IMMEDIATE) == MSG_OK) { /* Process message.*/ palToggleLine(cip->led); } } chEvtUnregister(&CAND1.rxfull_event, &el); }
/* * Application entry point. */ int main(void) { halInit(); chSysInit(); /* * Set PA3 - PA1 to Analog (DAC1_CH1, OPAMP1_INP) * You will have to connect these with a jumper wire */ palSetPadMode(GPIOA, 3, PAL_MODE_INPUT_ANALOG); palSetPadMode(GPIOA, 1, PAL_MODE_INPUT_ANALOG); /* * Start peripherals */ dacStart(&DACD1, &dac1cfg1); opampStart(&OPAMPD1, &opamp1_conf); gptStart(&GPTD6, &gpt6cfg1); /* * Starting a continuous conversion. */ dacStartConversion(&DACD1, &dacgrpcfg1, dac_buffer, DAC_BUFFER_SIZE); gptStartContinuous(&GPTD6, 2U); opampEnable(&OPAMPD1); opampCalibrate(); /* * Normal main() thread activity. */ while (true) { chThdSleepMilliseconds(250); palToggleLine(LINE_LED3_RED); } return 0; }
/* * 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(); /* * 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); /* * Creates the blinker thread. */ chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO + 1, Thread1, NULL); /* * L3GD20 Object Initialization */ l3gd20ObjectInit(&L3GD20D1); /* * Activates the L3GD20 driver. */ l3gd20Start(&L3GD20D1, &l3gd20cfg); while(!palReadLine(LINE_BUTTON)){ chprintf(chp, "Press BTN to calibrate gyroscope...\r\n"); chThdSleepMilliseconds(150); #if CHPRINTF_USE_ANSI_CODE chprintf(chp, "\033[2J\033[1;1H"); #endif } chprintf(chp, "Calibrating Gyroscope sampling bias...\r\n"); chprintf(chp, "Keep it in the rest position while red LED is on\r\n"); chThdSleepMilliseconds(3000); palSetLine(LINE_LED10_RED); chThdSleepMilliseconds(1000); gyroscopeSampleBias(&L3GD20D1); palClearLine(LINE_LED10_RED); #if CHPRINTF_USE_ANSI_CODE chprintf(chp, "\033[2J\033[1;1H"); #endif while (TRUE) { palToggleLine(LINE_LED10_RED); gyroscopeReadRaw(&L3GD20D1, rawdata); for(i = 0; i < L3GD20_NUMBER_OF_AXES; i++) chprintf(chp, "RAW-%c:%d\r\n", axesID[i], rawdata[i]); gyroscopeReadCooked(&L3GD20D1, cookeddata); for(i = 0; i < L3GD20_NUMBER_OF_AXES; i++) chprintf(chp, "COOKED-%c:%.3f\r\n", axesID[i], cookeddata[i]); gyroscopeGetTemp(&L3GD20D1, &temperature); chprintf(chp, "TEMP:%.1f C°\r\n", temperature); chThdSleepMilliseconds(150); #if CHPRINTF_USE_ANSI_CODE chprintf(chp, "\033[2J\033[1;1H"); #endif } l3gd20Stop(&L3GD20D1); }