/*
 * first-timer.c
 *
 *  Created on: Oct 15, 2018
 *      Author: corrado
 */

#include "stm32_unict_lib.h"

void main(void)
{
	GPIO_init(GPIOB);
    GPIO_config_input(GPIOB, 10);
    GPIO_config_input(GPIOB, 5);
    GPIO_config_input(GPIOB, 6);

    GPIO_config_EXTI(GPIOB, EXTI10);
    EXTI_enable(EXTI10, FALLING_EDGE); // X

    GPIO_config_EXTI(GPIOB, EXTI5);
    EXTI_enable(EXTI5, FALLING_EDGE); // Y

    GPIO_config_EXTI(GPIOB, EXTI6);
    EXTI_enable(EXTI6, FALLING_EDGE); // Z

	TIM_init(TIM2);
	DISPLAY_init();

	TIM_config_timebase(TIM2, 8400, 50000);

	TIM_on(TIM2);

	for (;;) {
		char s[5];
		uint16_t v = TIM_get(TIM2);
		sprintf(s,"%4d", v/1000);
		DISPLAY_puts(0,s);
	}
}

// tasto 'X'
void EXTI15_10_IRQHandler(void)
{
	if (EXTI_isset(EXTI10)) {
		TIM_set(TIM2, 0);
		EXTI_clear(EXTI10);
	}
}

// tasto 'Z' e 'T'
void EXTI9_5_IRQHandler(void)
{
	if (EXTI_isset(EXTI5)) { //'Z'
		TIM_off(TIM2);
		EXTI_clear(EXTI5);
    }
	if (EXTI_isset(EXTI6)) { //'T'
		TIM_on(TIM2);
        EXTI_clear(EXTI6);
    }
}
