int main(void) { uint8_t data; watchdog_stop(); set_mcu_speed_dco_mclk_16MHz_smclk_8MHz(); led_red_on(); uart_init(UART_9600_SMCLK_8MHZ); serial_ring_init(); uart_register_cb( serial_cb); printf("serial test application: echo\n"); led_green_on(); eint(); for(;;) { LPM(1); if (serial_ring_get(&data)) { putchar(data); led_green_switch(); } else { printf("\n\n serial_ring_get() returns 0 : empty ring\n\n"); led_red_switch(); } } }
void hal_clocksource_init(void){ //for debugging clocksource problems led_red_on(); led_green_on(); //power up osc (?) SLEEP &= ~CLOCKSOURCE_OSC_PD_BIT; //wait for XOSC stable while(!CLOCKSOURCE_XOSC_STABLE()){} NOP(); //start crystal osc as HS clocksource, OSC32 is int rc osc CLKCON = 0x80; //wait for selection to be active while(!CLOCKSOURCE_XOSC_STABLE()){} NOP(); //power down the unused oscillator SLEEP |= CLOCKSOURCE_OSC_PD_BIT; //for debugging clocksource problems led_red_off(); led_green_off(); }
// Disable the CAN peripheral and go off-bus void can_disable(void) { if (bus_state == ON_BUS) { // Do a bxCAN reset (set RESET bit to 1) can_handle.Instance->MCR |= CAN_MCR_RESET; bus_state = OFF_BUS; led_green_on(); } }
// Send a message on the CAN bus (blocking) uint32_t can_tx(CanTxMsgTypeDef *tx_msg) { uint32_t status; // Transmit can frame can_handle.pTxMsg = tx_msg; status = HAL_CAN_Transmit(&can_handle, 10); led_green_on(); return status; }
void default_handler (void) { uint64_t i; led_red_on(); while (1) { for (i=0; i<0x00FFFFF; i++) {} led_green_off(); for (i=0; i<0x00FFFFF; i++) {} led_green_on(); } while (1); }
void toggle_leds() { if(state == 0 ) { led_green_on(); led_blue_off(); state = 1; } else { led_green_off(); led_blue_on(); state = 0; } }
int8_t ker_led(uint8_t action) { switch (action){ case LED_RED_ON: led_red_on(); break; case LED_GREEN_ON: led_green_on(); break; case LED_YELLOW_ON: led_yellow_on(); break; case LED_RED_OFF: led_red_off(); break; case LED_GREEN_OFF: led_green_off(); break; case LED_YELLOW_OFF: led_yellow_off(); break; case LED_RED_TOGGLE: led_red_toggle(); break; case LED_GREEN_TOGGLE: led_green_toggle(); break; case LED_YELLOW_TOGGLE: led_yellow_toggle(); break; } return 0; }
// Set CAN peripheral to silent mode void can_set_autoretransmit(uint8_t autoretransmit) { if (bus_state == ON_BUS) { // Cannot set autoretransmission while on bus return; } if (autoretransmit) { can_nart = DISABLE; } else { can_nart = ENABLE; } led_green_on(); }
// Set CAN peripheral to silent mode void can_set_silent(uint8_t silent) { if (bus_state == ON_BUS) { // cannot set silent mode while on bus return; } if (silent) { can_handle.Init.Mode = CAN_MODE_SILENT; } else { can_handle.Init.Mode = CAN_MODE_NORMAL; } led_green_on(); }
static PT_THREAD(thread_led_green(struct pt *pt)) { PT_BEGIN(pt); while(1) { PT_WAIT_UNTIL(pt, led_green_flag); led_green_on(); TIMER_LED_GREEN_ON = 0; PT_WAIT_UNTIL(pt, timer_reached(TIMER_LED_GREEN_ON, led_green_duration)); led_green_off(); led_green_flag = 0; } PT_END(pt); }
static void sfi_err_code_led_display(uint8_t errcode) { uint8_t _led_display; _led_display = errcode; if (_led_display & 0x01) led_yellow_on(); else led_yellow_off(); _led_display >>= 1; if (_led_display & 0x01) led_green_on(); else led_green_off(); _led_display >>= 1; if (_led_display & 0x01) led_red_on(); else led_red_off(); return; }
int window_fan() { rcc_config(); delay_config(); led_debug_config(); motor_config(); led_blue_off(); led_green_off(); servo_config(); servo_set_pos(0); servo_start(); u32 i; u32 from = 0; u32 to = 180; u32 delay = 2000; while(1) { motor_forward(); led_blue_on(); led_green_off(); for(i=from; i<to; i++) { servo_set_pos(i); delay_ms(delay); } led_blue_off(); led_green_on(); for(i=to; i>from; i--) { servo_set_pos(i); delay_ms(delay); } motor_stop(); delay_ms(10000); } }
// Set the bitrate of the CAN peripheral void can_set_bitrate(enum can_bitrate bitrate) { if (bus_state == ON_BUS) { // cannot set bitrate while on bus return; } switch (bitrate) { case CAN_BITRATE_10K: prescaler = 600; break; case CAN_BITRATE_20K: prescaler = 300; break; case CAN_BITRATE_50K: prescaler = 120; break; case CAN_BITRATE_100K: prescaler = 60; break; case CAN_BITRATE_125K: prescaler = 48; break; case CAN_BITRATE_250K: prescaler = 24; break; case CAN_BITRATE_500K: prescaler = 12; break; case CAN_BITRATE_750K: prescaler = 8; break; case CAN_BITRATE_1000K: prescaler = 6; break; } led_green_on(); }
int reader_test() { rcc_config(); led_debug_config(); motor_config(); reed_config(); led_blue_off(); led_green_off(); uint8_t i; while(1) { // forward motor_forward(); led_blue_on(); reed_delay_left(); // stop motor_stop(); led_blue_off(); bigDelay(); bigDelay(); bigDelay(); // backward motor_back(); led_green_on(); reed_delay_right(); // stop motor_stop(); led_green_off(); bigDelay(); bigDelay(); bigDelay(); } }