shads писал(а):Ыыыы.... я вообще то про свою библиотечку рассуждал..... вы ее читали?.....
Вы бы ссылку на свое "творение" убрали бы .
А то придется отмахиваться "- я не спец, пишу как могу " ...
shads писал(а):Ыыыы.... я вообще то про свою библиотечку рассуждал..... вы ее читали?.....
shads писал(а):Ыыыы.... я вообще то про свою библиотечку рассуждал..... вы ее читали?.....
Код: Выделить всё
if (! (BTN_PIN & BTN_LINE_UP)) mask = BTN_SHRT_UP;
if (! (BTN_PIN & BTN_LINE_DN)) mask = BTN_SHRT_DN;
if (! (BTN_PIN & BTN_LINE_LEFT)) mask = BTN_SHRT_LEFT;
if (! (BTN_PIN & BTN_LINE_RIGHT)) mask = BTN_SHRT_RIGHT;А что не так?.....Foks писал(а):Пока писал сообщение, почитал внимательнее.Код: Выделить всё
if (! (BTN_PIN & BTN_LINE_UP)) mask = BTN_SHRT_UP;
if (! (BTN_PIN & BTN_LINE_DN)) mask = BTN_SHRT_DN;
if (! (BTN_PIN & BTN_LINE_LEFT)) mask = BTN_SHRT_LEFT;
if (! (BTN_PIN & BTN_LINE_RIGHT)) mask = BTN_SHRT_RIGHT;
Да это еще похлеще чем тот код, который обсуждался в теме исходно.
А как же это?.....Foks писал(а):Кстати, антидребезг ("защелка доЩитала") нужен только при отпускании клавиши.
Неа не понимаю..... если не затруднит доступнее объясните пожалста.....Foks писал(а):P.S. Обнуляция прошла успешно, тумблер на 30 секунд сработал, если вы понимаете о чем я
Код: Выделить всё
if (BtnLongCoun >= (BTN_LONG_TIME/10))
return; //возврат, т.к. счетчик длинн нажат досчитал до максимума еще раньше
if (++BtnLongCoun >= (BTN_LONG_TIME/10))Код: Выделить всё
#ifndef __button_H__
#define __button_H__
typedef enum {B_NULL=0,B_LEFT,B_B_RIGHT,B_UP,B_DOWN}BUTTON_CODE;
extern BUTTON_CODE fnButtRead(void);
extern void fnButtInit(void);
#endif //__button_H__Абсолютно не обижаюсь, особенно если это действительно полезная критика.urry писал(а):shadsб не обижайтесь, но хвастаться решительно нечем.
Я абсолютно ни где не упоминал о возможности одновременного нажатия кнопок, это нештатная ситуация, и в своих поделках никогда не применяю одновременных нажатий.....urry писал(а):Первое, что напрягает- это 1 счетчик на 4 кнопки.Вы нажали одну кнопку, зафиксировали нажатие, не отпуская ее, нажали следующую, затем отпустили обе. Зафиксируется длинное нажатие той, которая отпустилась первой.
Код: Выделить всё
if (! (BTN_PIN & BTN_LINE_UP)) mask = BTN_SHRT_UP;
if (! (BTN_PIN & BTN_LINE_DN)) mask = BTN_SHRT_DN;
if (! (BTN_PIN & BTN_LINE_LEFT)) mask = BTN_SHRT_LEFT;
if (! (BTN_PIN & BTN_LINE_RIGHT)) mask = BTN_SHRT_RIGHT;Что это за выражение: BtnLongCoun -1 == BTN_LONG_TIME/10 и где оно проходит ?.....urry писал(а):ВыражениеКод: Выделить всё
if (BtnLongCoun >= (BTN_LONG_TIME/10))
return; //возврат, т.к. счетчик длинн нажат досчитал до максимума еще раньше
if (++BtnLongCoun >= (BTN_LONG_TIME/10))
ввело меня в ступор секунд на 15, пока не догадался, что BtnLongCoun -1 == BTN_LONG_TIME/10 проходит.
Спасибо, покумекаю, просто перечисления еще не привык применять....urry писал(а):Перечисление сделало бы код нагляднее во многих местах.
В состав библиотеки входит заголовочный файл, которого у Вас нет и он мог бы выглядеть следующим образомКод: Выделить всё
#ifndef __button_H__
#define __button_H__
typedef enum {B_NULL=0,B_LEFT,B_B_RIGHT,B_UP,B_DOWN}BUTTON_CODE;
extern BUTTON_CODE fnButtRead(void);
extern void fnButtInit(void);
#endif //__button_H__
А какой тогда смысл умничать по поводу каждой ошибки?.....urry писал(а):зы Я тоже не русский - и какая нация лучше, я не знаю
Думаю, здесь это не имеет значения.
Это абсолютно бессмысленно. Нету никакого смысла их упорядочивать, нет никакой разницы какой бит соответствует какой кнопке. Достаточно сделать &= с маской, которая отсеет неиспользуемые входы, а биты всё-равно будут обрабатываться в соответствии с константами, прописанными в #define'ах. Процедура которая опрашивает кнопки вообще не должна знать, какая кнопка за что отвечает, она должна просто обработать их все.shads писал(а):Это элементарно - упорядочивание возможно разбросанных по выводам контроллера кнопок в стройную последовательность 0,1,2,3.....
Код: Выделить всё
if (! (BTN_PIN & BTN_LINE_UP)) mask = BTN_SHRT_UP;
if (! (BTN_PIN & BTN_LINE_DN)) mask = BTN_SHRT_DN;
if (! (BTN_PIN & BTN_LINE_LEFT)) mask = BTN_SHRT_LEFT;
if (! (BTN_PIN & BTN_LINE_RIGHT)) mask = BTN_SHRT_RIGHT;shads писал(а):Вижу только 3 варианта: 1-унизить человека... 2-возвысить себя.... 3-и то и другое.....
Читать надо оригинал. И тогда не будет вопросов, "а кто такой мышиный О-контролёр?"SergeBS писал(а):Добавил в "Сундук Кота" The Insider"s Guide to the STM32 ARM Based Miceocontroller-перевод. Читайте.
Код: Выделить всё
sprintf(str, "%u", d);Код: Выделить всё
main.c(567): warning: #167-D: argument of type "uint8_t *" is incompatible with parameter of type "char *restrict"drakon писал(а): а чем uint8_t отличается от char?