int main(void)
{
	/* Check the force bootloader pin*/
	rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPBEN);
	if(gpio_get(GPIOB, GPIO12))
		dfu_jump_app_if_valid();

	dfu_protect_enable();

	rcc_clock_setup_in_hse_8mhz_out_72mhz();
	systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8);
	systick_set_reload(900000);

	rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN);
        rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_USBEN);
	gpio_set_mode(GPIOA, GPIO_MODE_INPUT, 0, GPIO8);

	systick_interrupt_enable();
	systick_counter_enable();

	gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_2_MHZ,
			GPIO_CNF_OUTPUT_PUSHPULL, GPIO11);
	gpio_set_mode(GPIOB, GPIO_MODE_INPUT,
			GPIO_CNF_INPUT_FLOAT, GPIO2 | GPIO10);

	dfu_init(&stm32f103_usb_driver);

	gpio_set(GPIOA, GPIO8);
	gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ,
			GPIO_CNF_OUTPUT_PUSHPULL, GPIO8);

	dfu_main();
}
Exemple #2
0
void time_init() {
  systick_set_reload(0xffffff);
  systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB);
  rollovers = 0;
  systick_interrupt_enable();
  systick_counter_enable();
}
Exemple #3
0
void systick_setup(void)
{
    systick_set_reload(rcc_ahb_frequency / SYSTICK_HZ);
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
    systick_counter_enable();
    systick_interrupt_enable();
}
Exemple #4
0
/*
 * Initialise the Cortex-M3 SysTick timer
 */
void timer_init(void) {
	system_millis = 0;

	/*
	 * MCU clock (120 MHz) as source
	 *
	 *     (120 MHz / 8) = 15 clock pulses
	 *
	 */
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
	STK_CVR = 0;

	/*
	 * 1 tick = 1 ms @ 120 MHz
	 *
	 *     (15 clock pulses * 1000 ms) = 15000 clock pulses
	 *
	 * Send an interrupt every (N - 1) clock pulses
	 */
	systick_set_reload(14999);

	/* SysTick as interrupt */
	systick_interrupt_enable();

	systick_counter_enable();
}
Exemple #5
0
void sys_tick_handler(void)
{
    //Soft watchdog
    if (plc_tick_flag)
    {
        if (plc_dbg_mode)
        {
            plc_hw_status |= PLC_HW_ERR_DEADLINE;
        }
        else
        {
            plc_irq_stub();
        }
    }

    switch (tick_state)
    {
    case TICK_STATE_MID:
    case TICK_STATE_HIGH:
    default:
        systick_set_reload(RCC_AHB_FREQ * (uint32_t)frac_div_icalc( &systick_ctrl ) - 1);
        plc_tick_flag = true;
        break;

    case TICK_STATE_LOW:
        plc_tick_flag = frac_div_run(&systick_ctrl);
        break;
    }
}
Exemple #6
0
int main(void)
{
	/* Check the force bootloader pin*/
	rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPAEN);
	if(!gpio_get(GPIOA, GPIO0))
		dfu_jump_app_if_valid();

	dfu_protect_enable();

	/* Set up clock*/
	rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_168MHZ]);
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
	systick_set_reload(2100000);

	systick_interrupt_enable();
	systick_counter_enable();

	/* Handle LED */
	rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPDEN);
	gpio_clear(GPIOA, GPIO4);
	gpio_mode_setup(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,
			GPIO4);

	/* Set up USB*/
	rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPAEN);
	rcc_peripheral_enable_clock(&RCC_AHB2ENR, RCC_AHB2ENR_OTGFSEN);

	/* Set up USB Pins and alternate function*/
	gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE,
		GPIO9 | GPIO10 | GPIO11 | GPIO12);
	gpio_set_af(GPIOA, GPIO_AF10, GPIO9 | GPIO10| GPIO11 | GPIO12);
	dfu_init(&stm32f107_usb_driver);

	dfu_main();
}
Exemple #7
0
int main(void)
{
	rcc_clock_setup_in_hse_8mhz_out_72mhz();
	gpio_setup();

	gpio_clear(GPIOA, GPIO7);	/* LED1 on */
	gpio_set(GPIOA, GPIO6);		/* LED2 off */

	temp32 = 0;

	/* 72MHz / 8 => 9000000 counts per second */
	systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8);

	/* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */
	/* SysTick interrupt every N clock pulses: set reload to N-1 */
	systick_set_reload(8999);

	systick_interrupt_enable();

	/* Start counting. */
	systick_counter_enable();

	while (1); /* Halt. */

	return 0;
}
Exemple #8
0
void systick_setup(void)
{
    uint32_t systick_reload_val;
    g_ulSysTickCount = 0;

    /* Disable IRQ globally */
    __asm__("cpsid i");

    /* Set processor Clock as Source Clock */
    systick_set_clocksource(STK_CTRL_CLKSOURCE);

    /* Get SysTick calibration value to obtain by default 1 tick = 10ms */
    systick_reload_val = systick_get_calib();
    /*
     * Calibration seems wrong on LPC43xx(TBC) for default Freq it assume System Clock is 12MHz but it is 12*17=204MHz
     * Fix the Calibration value bu multiplication by 17
     */
    systick_reload_val = (systick_reload_val*17);

    /* To obtain 1ms per tick just divide by 10 the 10ms base tick and set the reload */
    systick_reload_val = systick_reload_val/10;
    systick_set_reload(systick_reload_val);

    systick_interrupt_enable();

    /* Start counting. */
    systick_counter_enable();

    /* Set SysTick Priority to maximum */
    nvic_set_priority(NVIC_SYSTICK_IRQ, 0xFF);

    /* Enable IRQ globally */
    __asm__("cpsie i");
}
Exemple #9
0
void tick_init(void)
{
  uint32_t systick_reload_val;
  g_ulSysTickCount = 0;

  /* Disable IRQ globally */
  asm volatile ("cpsid i");

  /* Set processor Clock as Source Clock */
  systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);

  systick_set_reload(rcc_ahb_frequency / 1000);

  systick_interrupt_enable();

  /* Start counting. */
  systick_counter_enable();

  /* Set SysTick Priority to maximum */
  nvic_set_priority(NVIC_SYSTICK_IRQ, 255);

  /* Enable IRQ globally */
  asm volatile ("cpsie i");
  scs_dwt_cycle_counter_enabled();
}
Exemple #10
0
/* The usleep stuff requires systick*/
void systick_init() {
    /* 72MHz / 8 => 9000000 counts per second */
    systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8);
    /* 9000000/9 = 1 000 000 overflows per second - every us one interrupt */
    systick_set_reload(9);
    systick_interrupt_enable();
}
Exemple #11
0
void systick_setup(void)
{
	systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8); // 24meg / 8 = 3Mhz
	// one interrupt per ms..
	systick_set_reload(3000);
	systick_interrupt_enable();
	systick_counter_enable();
}
Exemple #12
0
void time_init(void) {
  system_ms = 0;
  systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
  STK_CVR = 0;
  systick_set_reload(32000000/1000 -1);
  systick_counter_enable();
  systick_interrupt_enable();
}
Exemple #13
0
void SetupSystick(void)
{
	// Clock rate / 1000 = 168000 for one ms
	systick_set_reload(168000);
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
	systick_counter_enable();
	systick_interrupt_enable();
}
Exemple #14
0
int platform_init(void)
{
	rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_168MHZ]);

	/* Enable peripherals */
	rcc_peripheral_enable_clock(&RCC_AHB2ENR, RCC_AHB2ENR_OTGFSEN);
	rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPAEN);
	rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPBEN);
	rcc_peripheral_enable_clock(&RCC_AHB1ENR, RCC_AHB1ENR_IOPCEN);

        /* Fix all flaoting pins*/
	gpio_mode_setup(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN,
                        0x1ff);

	gpio_mode_setup(GPIOB, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN,
                        0xffe2);

	gpio_mode_setup(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_PULLDOWN,
                        0xf3ff);

	/* Set up USB Pins and alternate function*/
	gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE,
		GPIO9 | GPIO10| GPIO11 | GPIO12);
	gpio_set_af(GPIOA, GPIO_AF10, GPIO9 | GPIO10| GPIO11 | GPIO12);

        /* Set TMS/TCK/TDI to high speed*/
        GPIOA_OSPEEDR &=~0xfc00;
        GPIOA_OSPEEDR |= 0xa800;
	gpio_mode_setup(JTAG_PORT, GPIO_MODE_OUTPUT,
			GPIO_PUPD_NONE,
			TMS_PIN | TCK_PIN | TDI_PIN);

	gpio_mode_setup(TDO_PORT, GPIO_MODE_INPUT,
			GPIO_PUPD_NONE,
			TDO_PIN | TRST_PIN);

	gpio_mode_setup(LED_PORT, GPIO_MODE_OUTPUT,
			GPIO_PUPD_NONE,
			LED_UART );

	/* Setup heartbeat timer */
	systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8);
	systick_set_reload(168000000/(10*8));	/* Interrupt us at 10 Hz */
	SCB_SHPR(11) &= ~((15 << 4) & 0xff);
	SCB_SHPR(11) |= ((14 << 4) & 0xff);
	systick_interrupt_enable();
	systick_counter_enable();

	usbuart_init();

	SCB_VTOR = 0x10000;	// Relocate interrupt vector table here

	cdcacm_init();

	jtag_scan(NULL);

	return 0;
}
Exemple #15
0
void time_init() {
  { CriticalSection cs;
    systick_set_reload(0xffffff);
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
    rollovers = 0;
    systick_interrupt_enable();
    systick_counter_enable();
  }
}
/*
 * systick_setup(void)
 *
 * This function sets up the 1khz "system tick" count. The SYSTICK counter is a
 * standard feature of the Cortex-M series.
 */
static void systick_setup(void)
{
	/* clock rate / 1000 to get 1mS interrupt rate */
	systick_set_reload(168000);
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
	systick_counter_enable();
	/* this done last */
	systick_interrupt_enable();
}
Exemple #17
0
static void systick_setup(void) {
    /* 72 MHz with DIV 8 -> systick clock source of 9MHz */
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);

    /* Systick interrupt period 1ms -> 9MHz / 1kHz = 9000 */
    systick_set_reload(9000 - 1);
    systick_interrupt_enable();
    systick_counter_enable();
}
/* Set up timer to fire freq times per second */
static void systick_setup(int freq)
{
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
	/* clear counter so it starts right away */
	STK_CVR = 0;
	systick_set_reload(32000000 / freq);
	systick_counter_enable();
	systick_interrupt_enable();
}
Exemple #19
0
//# MENU spectrum
void spectrum_menu()
{
	lcdClear();
	lcdDisplay();
	getInputWaitRelease();

	// RF initialization from ppack.c:
	dac_init(false);
	cpu_clock_set(204); // WARP SPEED! :-)
	hackrf_clock_init();
	rf_path_pin_setup();
	/* Configure external clock in */
	scu_pinmux(SCU_PINMUX_GP_CLKIN, SCU_CLK_IN | SCU_CONF_FUNCTION1);
	sgpio_configure_pin_functions();
	ON(EN_VDD);
	ON(EN_1V8);
	OFF(MIC_AMP_DIS);
	delayms(500); // doesn't work without
	cpu_clock_set(204); // WARP SPEED! :-)
	si5351_init();
	portapack_init();

	while(1)
	{
		switch(getInput())
		{
			case BTN_UP:
				displayMode=MODE_WATERFALL;
				break;
			case BTN_DOWN:
				displayMode=MODE_SPECTRUM;
				break;
			case BTN_LEFT:
				freq -= 2000000;
				ssp1_set_mode_max2837();
				set_freq(freq);
				break;
			case BTN_RIGHT:
				freq += 2000000;
				ssp1_set_mode_max2837();
				set_freq(freq);
				break;
			case BTN_ENTER:
				//FIXME: unset the callback, reset the clockspeed, tidy up
                nvic_disable_irq(NVIC_DMA_IRQ);
                OFF(EN_VDD);
                OFF(EN_1V8);
                ON(MIC_AMP_DIS);
                systick_set_clocksource(0);
                systick_set_reload(12e6/SYSTICKSPEED/1000);
				return;

		}
	}
}
Exemple #20
0
void setup_clock(void)
{
    /* Setup clock source @ 32MHz */
    rcc_clock_setup_pll(&rcc_clock_config[1]);

    /* Setup sysclock to trigger every 1ms */
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
    systick_set_reload(3999);
    systick_interrupt_enable();
    systick_counter_enable();
}
Exemple #21
0
void clock_setup(void)
{
	rcc_clock_setup_hse_3v3(&rcc_hse_8mhz_3v3[RCC_CLOCK_3V3_168MHZ]);

	/* set up the SysTick function (1mS interrupts) */
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
	STK_CVR = 0;
	systick_set_reload(rcc_ahb_frequency / 1000);
	systick_counter_enable();
	systick_interrupt_enable();
}
/*
 * Set up timer to fire every x milliseconds
 * This is a unusual usage of systick, be very careful with the 24bit range
 * of the systick counter!  You can range from 1 to 2796ms with this.
 */
static void systick_setup(int xms)
{
    /* div8 per ST, stays compatible with M3/M4 parts, well done ST */
    systick_set_clocksource(STK_CSR_CLKSOURCE_EXT);
    /* clear counter so it starts right away */
    STK_CVR = 0;

    systick_set_reload(rcc_ahb_frequency / 8 / 1000 * xms);
    systick_counter_enable();
    systick_interrupt_enable();
}
Exemple #23
0
/* Setup systick */
void systick_init(void)
{
    /* 48MHz / 8 => 6,000,000 counts per second */
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);

    /* 6,000,000/6000 = 1000 overflows per second - every 1ms one interrupt */
    /* SysTick interrupt every N clock pulses: set reload to N-1 */
    systick_set_reload(47999);
    systick_interrupt_enable();
    systick_counter_enable();
}
static void config_clocks(void)
{
	rcc_clock_setup_in_hse_8mhz_out_24mhz();

	/* Set systick timer to strike every 1ms (1kHz),
	 * enable its interrupt and start it. */
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
	systick_set_reload(rcc_apb2_frequency / 8 / 1000 - 1);
	systick_interrupt_enable();
	systick_counter_enable();
}
Exemple #25
0
/*
 * clock_setup(void)
 *
 * This function sets up both the base board clock rate
 * and a 1khz "system tick" count. The SYSTICK counter is
 * a standard feature of the Cortex-M series.
 */
void clock_setup(void)
{
	/* Base board frequency, set to 168Mhz */
	rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_168MHZ]);

	/* clock rate / 168000 to get 1mS interrupt rate */
	systick_set_reload(168000);
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);
	systick_counter_enable();

	/* this done last */
	systick_interrupt_enable();
}
Exemple #26
0
static bool systick_set_period(uint32_t period, uint32_t ahb, uint8_t clk_source)
{
    if (period >= (STK_RVR_RELOAD/ahb))
    {
        return false;
    }
    else
    {
        systick_set_clocksource( clk_source );
        systick_set_reload( ahb * period - 1 );
        return true;
    }
}
Exemple #27
0
static void systick_setup(void) {
    /* 72MHz / 8 => 9000000 counts per second */
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);

    /* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */
    /* SysTick interrupt every N clock pulses: set reload to N-1 */
    systick_set_reload(8999);

    systick_interrupt_enable();

    /* Start counting */
    systick_counter_enable();
}
Exemple #28
0
void systick_setup(void)
{
	/* 72MHz / 8 => 9000000 counts per second */
	systick_set_clocksource(STK_CTRL_CLKSOURCE_AHB_DIV8);

	/* 9000000/9000 = 1000 overflows per second - every 1ms one interrupt */
	systick_set_reload(9000);

	systick_interrupt_enable();

	/* Start counting. */
	systick_counter_enable();
}
Exemple #29
0
void timer_init(void)
{
    /* 24MHz  => 24000000 counts per second */
    systick_set_clocksource(STK_CSR_CLKSOURCE_AHB);

    /* 24000000/24000 = 1000 overflows per second - every 1ms one interrupt */
    /* SysTick interrupt every N clock pulses: set reload to N-1 */
    systick_set_reload(23999);

    systick_interrupt_enable();

    /* Start counting. */
    systick_counter_enable();
}
Exemple #30
0
int main(void)
{
	/* Check the force bootloader pin*/
        uint16_t pin_b;
	rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN);
	rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPBEN);
/* Switch PB5 (SWIM_RST_IN) up */
	gpio_set(GPIOB, GPIO5);
	gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_2_MHZ,
                      GPIO_CNF_OUTPUT_PUSHPULL, GPIO5);
	gpio_set(GPIOB, GPIO5);
        pin_b = gpio_get(GPIOB, GPIO6);
/* Check state on PB6 ((SWIM_RST) and release PB5*/
        pin_b = gpio_get(GPIOB, GPIO6);
	gpio_set_mode(GPIOB, GPIO_MODE_INPUT,
                      GPIO_CNF_INPUT_FLOAT, GPIO5);
	if(((GPIOA_CRL & 0x40) == 0x40) && pin_b)
		dfu_jump_app_if_valid();

	dfu_protect(DFU_MODE);

	rcc_clock_setup_in_hse_8mhz_out_72mhz();
	systick_set_clocksource(STK_CSR_CLKSOURCE_AHB_DIV8);
	systick_set_reload(900000);

        /* Handle USB disconnect/connect */
	/* Just in case: Disconnect USB cable by resetting USB Device
         * and pulling USB_DP low
         * Device will reconnect automatically as Pull-Up is hard wired*/
	rcc_peripheral_reset(&RCC_APB1RSTR, RCC_APB1ENR_USBEN);
	rcc_peripheral_clear_reset(&RCC_APB1RSTR, RCC_APB1ENR_USBEN);
	rcc_peripheral_enable_clock(&RCC_APB1ENR, RCC_APB1ENR_USBEN);
	rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN);
	gpio_clear(GPIOA, GPIO12);
	gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ,
		GPIO_CNF_OUTPUT_OPENDRAIN, GPIO12);

        /* Handle LED*/
	gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_2_MHZ,
		GPIO_CNF_OUTPUT_PUSHPULL, GPIO8);

	systick_interrupt_enable();
	systick_counter_enable();

	dfu_init(&stm32f103_usb_driver, DFU_MODE);

	dfu_main();
}