Как обычно добавим вектор и обработчик для прерывания таймера:
0, /*!%29 TIM3 */ tim4_irq_hanlder, /*!%30 TIM4 */ 0, /*!%31 I2C1 Event *//* timer4 irq handler */void tim4_irq_hanlder(void) { if (TIM4->SR & TIM_SR_UIF) { static unsigned char byte; byte++; /* switch leds */ LED_PORT->ODR ^= RED_LED; /* send test byte */ usart_sendb(USART1, byte); /* clear status bit */ TIM4->SR &= ~TIM_SR_UIF; }}От обработчика в примере Прерывание по переполнению, этот отличается тем, что мы переключаем лишь один светодиод - красный и заодно отправляем байт значение которого предварительно инкрементируется. На выходе мы получаем таблицу ASCII.