Код:
void TIM6_DAC_IRQHandler(void)
{
  /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
    static unsigned char  byte=0;//выдаваемый байт
    static unsigned char index=0;//номер выдаваемого бита
    static unsigned short addr=0;//текущий адрес
  /* USER CODE END TIM6_DAC_IRQn 0 */
  HAL_TIM_IRQHandler(&htim6);
  /* USER CODE BEGIN TIM6_DAC_IRQn 1 */        
/**************************************************  ****************************/    
    switch (TapeOutMode)
    {
/***********************пилот для заголовка************************************/
        case TAPE_OUT_LEAD_H:
        {
            if (tim6_countersec < 8063)//5 secund
                {
                    if (tim6_counter == 21)//807Hz
                        {
                            HAL_GPIO_TogglePin (GPIOD, LD6_Pin);
                            tim6_counter = 0;//обнуляем счетчик
                            tim6_countersec++;//счетчик секунд (5)
                        }
                tim6_counter++;//счетчик 807Hz 
                //return;            
                break;
            }
            else
                {
                    TapeOutMode=TAPE_OUT_SYNCHRO_1;//переход на синхро 1
                    TapeOutModeStart=TAPE_OUT_START_H;//флаг выбор старта пилота заголовка 
                    tim6_counter = 0;//обнуляем счетчик
                    tim6_countersec = 0;//обнуляем счетчик
                    
                    //gui_draw();
                    //return;                
                    break;
                }
        }
        break;
/***********************пилот для данных***************************************/        
        case TAPE_OUT_LEAD_D:
        {
            if (tim6_countersec < 3223)//2 secund
                {
                    if (tim6_counter == 21)//807Hz
                        {
                            HAL_GPIO_TogglePin (GPIOD, LD6_Pin);
                            tim6_counter = 0;//обнуляем счетчик
                            tim6_countersec++;//счетчик секунд (2)
                        }
                tim6_counter++;//счетчик 807Hz 
                //return;    
                break;                        
            }                              
            else
                {
                    TapeOutMode=TAPE_OUT_SYNCHRO_1;//переход на синхро 1
                    TapeOutModeStart=TAPE_OUT_START_D;//флаг выбор старта пилота данных
                    tim6_counter = 0;//обнуляем счетчик
                    tim6_countersec = 0;//обнуляем счетчик                                        
                    //return;                
                    break;
                }                
        }
        break;
/***********************синхро 1***********************************************/        
        case TAPE_OUT_SYNCHRO_1:
        {
            if (tim6_counter == 6)//  ~ 171,4 мксек
                {
                    HAL_GPIO_TogglePin (GPIOD, LD6_Pin);
                    tim6_counter = 0;//обнуляем счетчик
                    TapeOutMode=TAPE_OUT_SYNCHRO_2;//переход на синхро 2
                    //return;
                    break;
                }     
            tim6_counter++;//счетчик ~ 171,4 мксек
            //return;            
            break;
        }
        break;
/***********************синхро 2***********************************************/        
        case TAPE_OUT_SYNCHRO_2:
        {
            if (tim6_counter == 7)//        200 мксек
                {
                    HAL_GPIO_TogglePin (GPIOD, LD6_Pin);
                    tim6_counter = 0;//обнуляем счетчик
                    //TapeOutMode=TAPE_OUT_DATA;
                    //TapeOutMode=TAPE_OUT_HEAD;
                    //index=0;
                    //byte=0;
                    //addr=0;
                    if (TapeOutModeStart==TAPE_OUT_START_H)//условия старта при пилоте заголовка
                        {
                            TapeOutMode=TAPE_OUT_HEAD;//режим вывода данных заголовка (0x1A байт )
                            index=0;//первоначальное значение бита 
                            byte =0;//первоначальное значение байта
                            addr =0;//первоначальное значение первого байта в буфере
                        }
        else if (TapeOutModeStart==TAPE_OUT_START_D)//условия старта при пилоте данных
                        {
                            TapeOutMode=TAPE_OUT_DATA;
                            index=0;//первоначальное значение бита 
                            byte =0;//первоначальное значение байта
                            addr=0x1+0x17;//первоначальное значение байта в буфере после чтения заголовка
                        }
                    //return;
                    break;
                }     
            tim6_counter++;//счетчик ~ 200 мксек
            //return;            
            break;
        }
        break;
/***********************вывод данных HEAD**************************************/
        case TAPE_OUT_HEAD:
        {
            //if (index>7)//проверка на чтение бит
//                {
                    if (addr>=0x17)//проверка на чтение байт из буфера(для заголовка 0x17)
                        {
                            TapeOutMode=TAPE_OUT_LEAD_D;//выбран режим пилот для данных
                            byte_counter++;
                            //addr=0;
                            //gui_draw();
                            //return;
                            break;
                        }
                    //index=0;//обнуляем счетчик бит
                    byte=read_byte(addr);//читаем байт из буфера
                        //byte=read_byte(0x01);//читаем байт из буфера
                    addr++;//счетчик текущего обрабатываемого байта в буфере
                    byte_counter++;
//                }            
        TapeOutMode=TAPE_OUT_BIT;//вывод битов в порт
        }
        break;
/***********************вывод данных DATA**************************************/                        
        case TAPE_OUT_DATA:
        {
            //if (index>7)//проверка на чтение бит
//                {
                    if (addr>=btr)//проверка на чтение байт из буфера
                        {
                            TapeOutMode=TAPE_OUT_STOP;//стоп передача, для чтения следующего буфера с SD-CARD
                            //byte_counter++;            
                            //return;
                            break;
                        }
                    //index=0;//обнуляем счетчик бит
                    byte=read_byte(addr);//читаем байт из буфера
                    //byte=read_byte(0x01);//читаем байт из буфера
                    addr++;//счетчик текущего обрабатываемого байта в буфере
                    byte_counter++;
//                }
        TapeOutMode=TAPE_OUT_BIT;//вывод битов в порт
        }             
        break;
/***********************вывод бит**********************************************/        
        case TAPE_OUT_BIT:
        {
        if (byte&128)    //проверка но ноль или еденицу старшего бита
            {
                if (tim6_counter == 17*2)//проверка условя 1023Hz    единица
                    {
                        HAL_GPIO_TogglePin (GPIOD, LD6_Pin);
                        tim6_counter = 0;//сброс счетчика 1023Hz    единица
                        TapeOutMode=TAPE_OUT_NEXT_BIT;//выбор режима чтения следующего бита в байте
                    }
                tim6_counter++;//счет 1023Hz    единица
                //return;
                break;
            }
        else
            {
                if (tim6_counter == 8*2)//проверка условия 2047Hz ноль
                    {
                        HAL_GPIO_TogglePin (GPIOD, LD6_Pin);
                        tim6_counter = 0;//сброс счетчика 2047Hz ноль
                        TapeOutMode=TAPE_OUT_NEXT_BIT;//выбор режима чтения следующего бита в байте
                    }
                tim6_counter++;//счет 2047Hz ноль
                //return;
                break;
            }
        }             
        break;        
/***********************выбираем следующий бит для передачи********************/        
        case    TAPE_OUT_NEXT_BIT:
        {
            if (index<=7)//проверка на обработку всех бит
                {
                    byte<<=1;//сдвиг влево на 1 бит
                    index++;//следующий бит
                }
            else
                {                
                    //TapeOutMode=TAPE_OUT_STOP;//стоп передача, для чтения следующего буфера с SD-CARD
                    index=0;//первоначальное значение бита 
                    //return;
                }
                
                    switch (TapeOutModeStart)//выбор режима передачи байтов
                    {
                        case TAPE_OUT_START_D://если стартови данные
                        {
                            TapeOutMode=TAPE_OUT_DATA;//режим вывода данных
                            //index++;//следующий бит
                            //return;            
                        }
                        break;
                        case TAPE_OUT_START_H://если стартовал заголовок
                        {
                            TapeOutMode=TAPE_OUT_HEAD;//режим вывода заголовка
                            //index++;//следующий бит
                            //return;            
                        }
                        break;
                    }
        }
        break;
/***********************завершаем передачу и устанавливаем стартовые параметры*/        
        case    TAPE_OUT_STOP:
        {
            index=0;//первоначальное значение бита 
            byte =0;//первоначальное значение байта
            addr =0;//первоначальное значение первого байта в буфере                
        }
        break;
/**************************************************  ****************************/
        case    TAPE_OUT_SELECT_D:
        {
            if (tap_file.LenHeader==0x13||tap_file.flagHeader==0)
            {
            }
            if (tap_file.LenHeader!=0x13||tap_file.flagHeader==0x  FF)
            {
            }
        }
        break;
/**************************************************  ****************************/        
    }    
/**************************************************  ****************************/
    /* USER CODE END TIM6_DAC_IRQn 1 */
}
- - - Добавлено - - -

исправил