Как обычно добавим вектор и обработчик для прерывания таймера:
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.