ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 сентября
1542419 Топик полностью
Eddy_Em (16.09.2025 15:59, просмотров: 65) ответил IBAH на Захотелось 32 разрядный таймер с тактовой процессора (кортекс м3). Соответственно, младшее слово на аппаратном таймере, старшие по прерыванию инкрементируются. Как читать потокобезопасно? Классический способ, читать пока не будут прочитаны повторяющие значения не хиляет. Ничего умнее этого в голову не приходит, но как-то не вставляет...
Это как? Какие могут быть потоки на одноядерном МК? Или имеется в виду, чтобы не было проблем, если в промежуточных вычислениях будет вызвано прерывание? Это да: может быть считан "старый" старший разряд и "новый" младший, что даст неплохую ошибку. Предлагаю просто запрещать прерывания в начале функции, делать просто `uint32_t result = TimHigh | Tim2->CNT;`, а потом разрешать прерывания и возвращать result. 
потокобезопасно
eddy-em.livejournal.com github.com/eddyem