Добавлены таймеры bpm и реализация таймеров для вывода звука
This commit is contained in:
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user