Добавлены таймеры bpm и реализация таймеров для вывода звука

This commit is contained in:
2023-11-01 19:28:54 +03:00
parent f75982feac
commit 0564fa221f
8 changed files with 448 additions and 60 deletions

View File

@@ -22,6 +22,7 @@
#include "stm32f1xx_it.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "floppy.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -56,6 +57,7 @@
/* External variables --------------------------------------------------------*/
extern PCD_HandleTypeDef hpcd_USB_FS;
extern TIM_HandleTypeDef htim3;
extern TIM_HandleTypeDef htim4;
/* USER CODE BEGIN EV */
@@ -213,38 +215,39 @@ void USB_LP_CAN1_RX0_IRQHandler(void)
/* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */
}
/**
* @brief This function handles TIM3 global interrupt.
*/
void TIM3_IRQHandler(void)
{
/* USER CODE BEGIN TIM3_IRQn 0 */
// вызываем функцию обработки мелодии
FloppyTrackTick();
// сброс всех флагов прерывания
TIM3->SR = 0;
/* USER CODE END TIM3_IRQn 0 */
/* USER CODE BEGIN TIM3_IRQn 1 */
/* USER CODE END TIM3_IRQn 1 */
}
/**
* @brief This function handles TIM4 global interrupt.
*/
void TIM4_IRQHandler(void)
{
/* USER CODE BEGIN TIM4_IRQn 0 */
TEST_GPIO_Port->ODR ^= TEST_Pin;
// дергаем ногу такта таймера (для отладки)
SOUND_TICK_GPIO_Port->ODR ^= SOUND_TICK_Pin;
static uint16_t cnt = 0;
cnt += 1;
if (cnt >= 50) { // тут менять частоту (делитель от 40к)
cnt = 0;
// вызываем тик у флоппи приводов
FloppySoundTickHandler();
// тик таймера, который для флоппи
static char t = 0;
static int curr_step = 0;
if (t) {
STEP1_GPIO_Port->ODR ^= STEP1_Pin;
curr_step++;
} else {
if (curr_step >= 80) {
curr_step = 0;
DIR1_GPIO_Port->ODR ^= DIR1_Pin;
}
}
t = !t;
}
// сброс всех флагов прерывания
TIM4->SR = 0;
/* USER CODE END TIM4_IRQn 0 */
HAL_TIM_IRQHandler(&htim4);
/* USER CODE BEGIN TIM4_IRQn 1 */
/* USER CODE END TIM4_IRQn 1 */