int main(void) { //VARIABLES int input = 1; //Input state //Input variables float num = 0.0f; int event = -1; int digit = 0; //Angle variables float angle_value = 0.0f; /* MCU Configuration----------------------------------------------------------*/ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ k_filter_init(0.005f, 0.1f, 0.0f, 3.0f, 0.0f); tim_init(); gpio_init(); memsinit(); NVIC_SetPriority(EXTI0_IRQn, 1); //4. Set Priority to 1 NVIC_EnableIRQ(EXTI0_IRQn); LED_set_value(num); while (1){ if (input) { //Input mode KP_update(); event = KP_getEvent(); if (event == 11) { //# pressed input = 0; LED_set_target(num); }else if (event > -1 && event < 10) { //Other key pressed num = change_digit(num, digit, event); LED_set_value(num); digit = (digit + 1) % 4; } } else { //Playing mode if (data_ready) { //CONVERT ANGLE READING //set LED to the filtered angle value LED_set_value(k_filter_value(Rangle())); data_ready = 0; } } } }
/** * Change the digits in given column. * @param col column to change. * @param numTime one of the hhmm (time) digits. * @param numTop one of the ddmm (date) digits. * @param numBtm one of the year digits. **/ void change_digits(int col, int numTime, int numTop, int numBtm) { change_digit(col, numTime, numTop, -2); change_digit(col, numTime, numBtm, 2); set_digit(col, numTime); }