Здравствуйте. По прерыванию таймера нужно отправить двухбайтное число. Отправляю посылками по 1 байту (почемуто функция USART_SendData при попытке отправить двухбайтное число виснет). Код:
Код
void TIM1_UP_IRQHandler(void)
{
int i = 0;
uint8_t low = 0;
uint8_t high = 0;
if (TIM_ADC->SR & TIM_SR_UIF)
{
TIM_ADC->SR &= ~TIM_SR_UIF;
high = (uint8_t) (ADC_Val >> 8);
low = (uint8_t) (ADC_Val & 0x00FF);
print(USART_DIAG, high); //high
print(USART_DIAG, low); //low
}
}
void print(USART_TypeDef* TargetUSART, uint16_t Data)
{
USART_SendData(TargetUSART, Data);
while (USART_GetFlagStatus(TargetUSART, USART_FLAG_TC) == RESET); //виснет тут
}
Первый принт проходит нормально а на втором виснет в цикле проверки флага USART_FLAG_TC. В чем может быть причина? Спасибо
Проверил код в функции main. В этом случае он работает. Т.е именно в прерывании работать не хотят.