Это обработчик прерывания таймера 6
Код:void TIM6_DAC_IRQHandler(void) { /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ /* USER CODE END TIM6_DAC_IRQn 0 */ HAL_TIM_IRQHandler(&htim6); /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ if (TapeOutMode==TAPE_OUT_STOP) { HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET); return; } if (TapeOutVolume==true) { HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_RESET); TapeOutVolume=false; } else { HAL_GPIO_WritePin(GPIOD, LD6_Pin, GPIO_PIN_SET); TapeOutVolume=true; } //выводим пилот-тон if (TapeOutMode==TAPE_OUT_LEAD) { TIM6->PSC = 13011;//начальное значение таймера if (tim6_countersec > 0) tim6_countersec--; else { tim6_countersec = 3223; TapeOutMode=TAPE_OUT_SYNCHRO_1; return; } } //выводим синхросигнал 1 if (TapeOutMode==TAPE_OUT_SYNCHRO_1) { TIM6->PSC =4050;//начальное значение таймера TapeOutMode=TAPE_OUT_SYNCHRO_2; return; } //выводим синхросигнал 2 if (TapeOutMode==TAPE_OUT_SYNCHRO_2) { TIM6->PSC = 4420;//начальное значение таймера TapeOutMode=TAPE_OUT_DATA; index16=16; byte=0; BytesCount=0;//обнуляем счетчик байт return; } //передаём данные if (TapeOutMode==TAPE_OUT_DATA) { if (index16>=16) { if (BytesCount>=sz) { TapeOutMode=TAPE_OUT_STOP; BytesCount = 0; return; } byte=FioNextByte();//читаем байт из буфера byte_temp = byte; index16=0;//первоначальное значение бита BytesCount++;//общий счетчик байт файла } //выдаём бит if (byte&128) { TIM6->PSC = 10265;//начальное значение таймера } else { TIM6->PSC = 5132;//начальное значение таймера } if ((index16%2)==1) byte<<=1; index16++; return; } }


Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
