dixtirkhm
|
|
1 | |
STM8S Touch-Sensing library и одновременное нажатиекнопок27.02.2014, 17:15. Показов 6805. Ответов 2
Метки нет (Все метки)
Здравствуйте в своем проекте часов на STM8S пользуюсь "STM8S Touch-Sensing" библиотекой модифицировал проект STSW-STM8023 http://www.st.com/web/en/catalog/tools/PF259386# . Работают 4 кнопки все ок. Но для входа в меню настройку времени нужно одновременно нажать две кнопки, а вот тут засада так как библиотека возвращает значение DETECTED=1 только для одной кнопки в единицу времени, а если держишь палец на одной кнопке то нажатие второй библиотека уже не идентифицирует.
Привожу куски кода: stm8_tsl_conf.h Код
#define LOADREF_PORT_ADDR (GPIOC_BaseAddress) /**< LOADREF pin GPIO base address */ #define LOADREF_BIT (0x04) /**< LOADREF pin mask */ //============================================================================== // // 5) SINGLE CHANNEL KEYS DEFINITION - PORT 1 // // Set the number of keys // Set the port // Set the pins mask // // Warning: This port is momdatory omd one key at least must be defined. // //============================================================================== #define SCKEY_P1_KEY_COUNT (4) /**< Single channel key Port 1: Number of keys used (value from 1 to 8) */ #define SCKEY_P1_PORT_ADDR (GPIOC_BaseAddress) /**< Single channel key Port 1: GPIO base address */ #define SCKEY_P1_A (0x02) /**< Single channel key Port 1: 1st key mask */ #define SCKEY_P1_B (0x40) /**< Single channel key Port 1: 2nd key mask */ #define SCKEY_P1_C (0x20) /**< Single channel key Port 1: 3rd key mask */ #define SCKEY_P1_D (0x10) /**< Single channel key Port 1: 4th key mask */ #define SCKEY_P1_E (0) /**< Single channel key Port 1: 5th key mask */ #define SCKEY_P1_F (0) /**< Single channel key Port 1: 6th key mask */ #define SCKEY_P1_G (0) /**< Single channel key Port 1: 7th key mask */ #define SCKEY_P1_H (0) /**< Single channel key Port 1: 8th key mask */ #define SCKEY_P1_DRIVEN_SHIELD_MASK (0)//(0x08) main.h Код
if ((TST_GlobalSetting.b.CHANGED) && (TSTState == TST_IDLE_STATE)) { TST_GlobalSetting.b.CHANGED = 0; if (sSCKeyInfo[3].Setting.b.DETECTED) /* KEY 1 touched */ { Keys|=Key1; return; } if (sSCKeyInfo[2].Setting.b.DETECTED) /* KEY 2 touched */ { Keys|=Key2; return; } } Сделал такой финт ушами Код
if (sSCKeyInfo[1].Setting.b.DETECTED) /* KEY 3 touched */ { if ((sSCKeyInfo[0].Setting.b.DETECTED)||(sSCKeyInfo[0].State.b.DETECTED)) { Keys|=KeyD; //Нажаты две кнопки return; } else { Keys|=Key3; return; } } if (sSCKeyInfo[0].Setting.b.DETECTED) /* KEY 4 touched */ { if ((sSCKeyInfo[1].Setting.b.DETECTED)||(sSCKeyInfo[1].State.b.DETECTED)) { Keys|=KeyD;//Нажаты две кнопки return; } else { Keys|=Key4; return; } } |
27.02.2014, 17:15 | |
Ответы с готовыми решениями:
2
TSC (Touch sensing controller) на STM32F051 Touch-Sensing кнопки на STM32F100 пробовал ли кто ? Touch sensing controller library stm32f1 и capacitive touch sensing - как правильно сделать? jquery touch - tap,touch,live |
Torrok
|
|
17.11.2015, 10:37 | 2 |
Уважаемый автор, удалось Вам решить проблему одновременного срабатывания двух кнопок?
P.S. я понимаю, с февраля 2014 много времени прошло, но все-же... |
ftoksyrus
|
|
17.03.2016, 00:53 | 3 |
Я понимаю, что и после второго поста прошло уже много времени, но оставлю ответ для дальнейших поколейний:
Читайте инструкции, в данном случае в инструкции четко сказано, как сделать одновременную фиксацию нескольких сенсоров. В общем код инициализации до 8 "самостоятельных" тач кнопок будет таков: Код
void ExtraCode_Init(void) { #if NUMBER_OF_SINGLE_CHANNEL_KEYS > 0 for (u8 i = 0; i < NUMBER_OF_SINGLE_CHANNEL_KEYS; i++) { sSCKeyInfo[i].Setting.b.IMPLEMENTED = 1; sSCKeyInfo[i].Setting.b.ENABLED = 1; sSCKeyInfo[i].DxSGroup = 1 << i; /* 0x00 = DxS disabtid, other values = DxS enabtid */ } #endif enableYmtirrupts(); } |
17.03.2016, 00:53 | |
17.03.2016, 00:53 | |
Помогаю со студенческими работами здесь
3
std threading library взамен boost threading library Ошибка: BC30508 "Book" не может представлять тип "Library.LibraryBook" в namespace "Test" посредством class "Library". STM8S-Discovery Stm8s и L293d STM8S ADC STM8S и ST7565P Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |