Сб сен 09, 2017 18:01:38
Вс сен 10, 2017 23:03:48
Сб сен 16, 2017 00:47:23
Сб сен 16, 2017 01:25:06
Сб сен 23, 2017 11:37:13
Сб сен 23, 2017 11:40:35
Ну у таймеров же флаги есть.axillent писал(а):можно как то внутри обработчика прерывания GPIO узнать, что тот или иной таймер переполнился?
Приоритет можно сменить.axillent писал(а):и по усолчанию прерывания от таймеров не могут прозойти пока я не завершил прерывание по GPIO
Сб сен 23, 2017 11:44:55
Сб сен 23, 2017 11:54:24
Нет, UIF. Он называется не по переполнению, а по обновлению. Точку же обновления сам назначаешь. Ну можно считать что переполнение, если регистр TIMx_ARR=0xFF.axillent писал(а):а какой это флаг? TIF?
Сб сен 23, 2017 12:00:16
Сб сен 23, 2017 12:05:37
Сб сен 23, 2017 12:22:14
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
Сб сен 23, 2017 12:25:13
Сб сен 23, 2017 12:34:09
Сб сен 23, 2017 12:48:57
func (x+y);
type buf=x;
buf+=y;
func(buf);
Сб сен 23, 2017 13:55:14
return a + *(int*)&b;
return a + b;;
Пн сен 25, 2017 10:13:59
Пн сен 25, 2017 10:28:29
Пн сен 25, 2017 10:37:59
Пн сен 25, 2017 10:44:29
Ну или до первого понизить.axillent писал(а):что чтобы из EXTIx срабатывал TIMx_OVR_UIF надо у EXTIx приоритет понизить до 2-го?
Смотрите на каком векторе сидит EXTIx и находите его в регистре ITC_SPRx и в каких битах этого регистра.axillent писал(а):а это какие биты в каком конкретно регистре? по RM0016 я не понял как векторы связаны с этими регистрами,
Вт сен 26, 2017 23:16:27
//настройка таймера TIM2 для организации регулярных прерываний 400Гц
TIM2_PSCR = 7; //предделитель таймера 0-7 (7 = 128)
TIM2_ARRH = (uint8_t)(154>>8); //считаем до 150, (для генерации частоты 400Гц при 8МГц)
TIM2_ARRL = (uint8_t)(154);
TIM2_IER_bit.UIE = 1; //прерывание по обновлению включено
TIM2_CR1_bit.CEN = 1; //разрешение работы таймера
ITC_SPR4 &= ~(0x0C); //понизить c 3 до 2 программный приоритет у TIM2 update/overflow