Перейти к содержанию

Александр Партин

Members
  • Постов

    1
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Екатеринбург

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Релейная автоматика
  • Оборудование
    Мультиметр паяльник

Достижения Александр Партин

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Здравствуйте! есть программа которая опрашивает состояние кнопок и придаёт переменным значение 0 или 1. Но у меня есть такая переменная которая должна переходить из состояния 1 в состояние 0 с задержкой 5 секунд, т.е. при отключении кнопки код продолжает работать, но переменная в течении 5 секунд остаётся =1, затем она принимает значение 0 (при условии, что в течении этих 5 секунд кнопка не была обратно включена). Например _25KZO = 1 и в функции turn не выполняется условие _25KZO = _25KZO = (_25SPW || (_25KZO && !_25SPA)||(_25KZO && !_19SP1)); - тогда _25KZO принимает значение 0, вот как сделать что бы _25KZO при невыполнении условия удерживало состояние 1 в течении 5 секунд и только потом переходило в 0? int turn(); int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ETH_Init(); MX_USART3_UART_Init(); MX_USB_OTG_FS_PCD_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ int _25KZO = 1; while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ int _25SPW = HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_7)==GPIO_PIN_SET; int _25SPA = HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_3)==GPIO_PIN_SET; int _19SP1 = 1; _25KZO = turn(_25KZO, _25SPW, _25SPA, _19SP1); if (_25KZO==1) { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_6, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOE, GPIO_PIN_6, GPIO_PIN_RESET); } } /* USER CODE END 3 */ } int turn(int _25KZO, int _25SPW, int _25SPA, int _19SP1){ _25KZO = _25KZO = (_25SPW || (_25KZO && !_25SPA)||(_25KZO && !_19SP1)); return _25KZO; }
×
×
  • Создать...