Здравствуйте! есть программа которая опрашивает состояние кнопок и придаёт переменным значение 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;
}