Feb 09, 2017 07:11
Что то у меня некоторое непонимание образовалось.
LCD индикатор требует задержек для обработки команд, т.к. пытаюсь не причислять себя к партии ардуинщиков, то задержечку формирую эксклюзивным таймером, их всё равно в этом проекте ещё лишних есть.
Печать в LCD из буфера происходит из прерывания таймера, т.е. получается как бы отдельный процесс. Все работает, но есть небольшая проблема, что если просто вызвать для начала печати TIM17_IRQHandler (); то работает не так как надо, поэтому приходится делать так:
void TIM17_IRQHandler (void)
{
//тут мы каждый раз что то печатаем, программируем таймер что бы попасть по прерыванию сюда снова пока не напечаем всё
}
void lcd_print()
{
TIM17->ARR = LCD_SHORT_DELAY;
TIM17->CR1 = TIM_CR1_CEN|TIM_CR1_OPM; //запускаем таймер в режиме одновибратора
}
Через какое то время оно проваливается само в TIM17_IRQHandler по прерыванию
зы gcc выдал по "-S" какую то нечитаемую дичь!
stm32