Exemple #1
0
void dma1_channel6_isr()
{
    if (state == ADC_WORKING)
        state = ADC_CH6_DONE;
    else if (state == ADC_CH5_DONE)
        dma_complete();
    else
        cm3_assert(0);
}
Exemple #2
0
void gps_init()
{
    int ok;

    calculate_crc_and_ack(set_navmode, sizeof(set_navmode));
    cm3_assert(set_navmode[sizeof(set_navmode) - 2] == 94);
    cm3_assert(set_navmode[sizeof(set_navmode) - 1] == 235);
    cm3_assert(expect_ack[8] == 49);
    cm3_assert(expect_ack[9] == 89);

    gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ,
              GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO2);
    gpio_set_mode(GPIOA, GPIO_MODE_INPUT,
              GPIO_CNF_INPUT_PULL_UPDOWN, GPIO3);

    usart_set_baudrate(USART2, 9600);
    usart_set_databits(USART2, 8);
    usart_set_stopbits(USART2, USART_STOPBITS_1);
    usart_set_mode(USART2, USART_MODE_TX);
    usart_set_parity(USART2, USART_PARITY_NONE);
    usart_set_flow_control(USART2, USART_FLOWCONTROL_NONE);

    usart_enable(USART2);

    timer_reset(TIM5);
    timer_set_mode(TIM5, TIM_CR1_CKD_CK_INT,
            TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP);
    /* 2Hz */
    timer_set_prescaler(TIM5, 640);
    timer_set_period(TIM5, 28125);

    ok = silence_nmea();
    if (!ok) goto bail;

    ok = command(set_port, sizeof(set_port));
    if (!ok) goto bail;

bail:
    asm("nop");
}
Exemple #3
0
void bsp_init(void)
{
	cm3_assert(!is_initialized);

	// Main clock setup
	rcc_clock_setup_in_hsi48_out_48mhz();


	led_init();

	comm_init();

	is_initialized = true;
}
Exemple #4
0
void dma1_channel4_isr()
{
    cm3_assert(state == READING);

    deselect_slave();

    /* Data is in bytes 1, 3, 5, 7 */
    rxbuf[0] = rxbuf[1];
    rxbuf[1] = rxbuf[3];
    rxbuf[2] = rxbuf[5];
    rxbuf[3] = rxbuf[7];
    
    debug("baro: %i %i %i %i\n", rxbuf[0], rxbuf[1], rxbuf[2], rxbuf[3]);

    /* Assume that all zeros is implausible: */
    if ((rxbuf[0] | rxbuf[1] | rxbuf[2] | rxbuf[3]) == 0)
        bad_thing_set(BARO_FAIL);
    else
        bad_thing_clear(BARO_FAIL);

    state = IDLE;
}
Exemple #5
0
void tim4_isr()
{
    timer_clear_flag(TIM4, TIM_SR_UIF);

    cm3_assert(state == IDLE);
    state = READING;

    select_slave();

    dma_clear_interrupt_flags(DMA1, DMA_CHANNEL1, 0xf);
    dma_clear_interrupt_flags(DMA1, DMA_CHANNEL2, 0xf);

    dma_set_memory_address(DMA1, DMA_CHANNEL1, (uint32_t) txstr);
    dma_set_number_of_data(DMA1, DMA_CHANNEL1, 10);
    dma_set_memory_address(DMA1, DMA_CHANNEL2, (uint32_t) rxbuf);
    dma_set_number_of_data(DMA1, DMA_CHANNEL2, 10);

    spi_enable_tx_dma(SPI2);
    spi_enable_rx_dma(SPI2);

    dma_enable_channel(DMA1, DMA_CHANNEL1);
    dma_enable_channel(DMA1, DMA_CHANNEL2);
}
Exemple #6
0
static void assert_idle()
{
    cm3_assert(SPI2_SR & SPI_SR_TXE);
    cm3_assert(!(SPI2_SR & SPI_SR_RXNE));
}
Exemple #7
0
void bsp_led_toggle(enum board_led led)
{
	cm3_assert(is_initialized);

	gpio_toggle(GPIOC, led_pin_lut[led]);
}
Exemple #8
0
void bsp_led_off(enum board_led led)
{
	cm3_assert(is_initialized);

	gpio_clear(GPIOC, led_pin_lut[led]);
}
Exemple #9
0
bool bsp_led_get_state(enum board_led led)
{
	cm3_assert(is_initialized);

	return gpio_get(GPIOC, led_pin_lut[led]);
}