while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //HAL_UART_Transmit_DMA(&huart2, (uint8_t*)&res, 50); if(btn1_flag_irq && (HAL_GetTick() - btn1_time_irq) > 200) { HAL_GPIO_WritePin(param == 0 ? LD1_GPIO_Port : param == 1 ? LD2_GPIO_Port : LD3_GPIO_Port, param == 0 ? LD1_Pin : param == 1 ? LD2_Pin : LD3_Pin, GPIO_PIN_SET); param = (param + 1) % 3; HAL_GPIO_WritePin(param == 0 ? LD1_GPIO_Port : param == 1 ? LD2_GPIO_Port : LD3_GPIO_Port, param == 0 ? LD1_Pin : param == 1 ? LD2_Pin : LD3_Pin, GPIO_PIN_RESET); btn1_flag_irq = 0; } if(btn3_flag_irq && (HAL_GetTick() - btn3_time_irq) > 200) { if(param == 0){ if(A + 0.1 <= 2.0){ A += 0.1; } } if(param == 1){ f = ((int)f + 10) % 10000 ; } if(param == 2){ fi0 = fmod(fi0 + pi / 2, 2 * pi); } btn3_flag_irq = 0; } if(btn2_flag_irq && (HAL_GetTick() - btn2_time_irq) > 200) { if(param == 0){ if(A - 0.1 > 0){ A = A - 0.1; } } if(param == 1){ f -= 10; if(f < 1){ f = 1; } } if(param == 2){ fi0 = fmod(fi0 - pi / 2, 2 * pi); //if (fi0 < 0) { //fi0 += 2 * pi; // Ensure it's non-negative //} } btn2_flag_irq = 0; } if(next_flag_irq){ next_flag_irq = 0; float T = 1/f; result = 2 * A / pi * asin(sin(2 * pi * f * n / (float)N + fi0)); HAL_UART_Transmit_DMA(&huart2, (uint8_t*)&result, 4); } __wfi(); }