Вс дек 25, 2022 10:34:42
Вс дек 25, 2022 10:35:13
Вс дек 25, 2022 11:42:02
Вс дек 25, 2022 12:25:11
Вс дек 25, 2022 12:52:44
Вс дек 25, 2022 13:48:09
Во-первых, для таких простых задач без разницы на чем писать, тут отсутствие C++ не мешает, можно взять любой мк и спокойно писать на С. Во-вторых, если у меня есть дешевый, значительно более производительный и при этом мало потребляющий STM32 с которым я привык работать и для которого написано множество либ, то на нем можно делать практически что угодно, от таких простейших проектов и до таких которые 8-ми битки просто не вытягивают. Скоро еще STM32C0 появится, самая простая серия, встроенный генератор на 48MHz и никаких страшных PLLOKF писал(а):Понятно, что лучше/современнее STM, но задачи то разные. Иной раз нужно задержку выключения света сделать (жена вслепую по лестнице не может). И чо?)))
Вс дек 25, 2022 15:07:46
Вс дек 25, 2022 16:57:03
Вс дек 25, 2022 17:05:05
Вс дек 25, 2022 20:15:04
Вс дек 25, 2022 21:24:29
Вс дек 25, 2022 21:29:25
Вс дек 25, 2022 21:50:18
ждут нововведений
Вс дек 25, 2022 23:13:15
Вс янв 01, 2023 18:45:38
Вс янв 01, 2023 19:22:54
Вс янв 01, 2023 20:09:59
constexpr auto val = 0b1001'1100;
Вс янв 01, 2023 22:36:10
Вс янв 01, 2023 23:19:15
Пн янв 02, 2023 15:57:47
#define dataCondStoreTG(P, E, D) \
do { \
auto* _pr_p = (P); \
auto _pr_expected = (E); \
auto _pr_desired = (D); \
bool _pr_c; \
do { \
mtx_lock(&_pr_p->mtx); \
_pr_c = (_pr_p->data == _pr_expected); \
if (_pr_c) _pr_p->data = _pr_desired; \
mtx_unlock(&_pr_p->mtx); \
} while(!_pr_c); \
} while (false)
void dataCondStoreTG(auto* P, auto E, auto D)
{
bool _pr_c;
do {
mtx_lock(&P->mtx);
_pr_c = (P->data == E);
if (_pr_c) P->data = D;
mtx_unlock(&P->mtx);
} while (!_pr_c);
}