реклама на сайте
подробности

 
 
> STM32F103. Виснет после второй посылки UART
Evgeniyk
сообщение Nov 16 2012, 09:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 5-04-06
Пользователь №: 15 836



Здравствуйте. По прерыванию таймера нужно отправить двухбайтное число. Отправляю посылками по 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. В этом случае он работает. Т.е именно в прерывании работать не хотят.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 16:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016