ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
1194341 Топик полностью
Andrey190 (30.03.2022 16:14, просмотров: 279) ответил PlainUser на Понадобился таймер в STM32. Свободных нет но есть один на котором висит энкодер.Планирую его освободить.Ищу либу под энкодер без аппаратного таймера.Никто не подскажет готовую?
у меня сделано так. наружу ничего не выдается, т.к. смотрел через отладчик сколько насчитал. делал для ручного счета СМД компонентов, скорость перемещения ленты не сильно большая была 

#define input1PinCheck ((GPIOB->IDR & GPIO_PIN_0) == 0)

#define input2PinCheck ((GPIOB->IDR & GPIO_PIN_14) == 0)

void countSMD (void)

{

int32_t c1 = 0; // что насчитали

uint32_t flags = 0, flagsUp = 0, flagsDown = 0;

while (1)

{

__watchdog_reset();

if (input1PinCheck && input2PinCheck)

{

if (flagsDown && (flags == 1)) c1++;

if (flagsUp && (flags == 2)) c1--;

flags = 0;

flagsUp = 0;

flagsDown = 0;

}

if (!input1PinCheck && input2PinCheck)

{

if (flags == 0) flagsUp++;

flags = 1;

}

if (input1PinCheck && !input2PinCheck)

{

if (flags == 0) flagsDown++;

flags = 2;

}

}

}