Easyelectronics.ru

Электроника для всех
Текущее время: 01 ноя 2020, 06:45

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: STM32F100 UART1 не работает по прерываниям (IAR 6.21)
СообщениеДобавлено: 11 июн 2012, 15:14 
Заглядывает иногда

Зарегистрирован: 23 авг 2011, 12:48
Сообщения: 74
STM32F100 UART1 когда уходит на прерывание - зависает. Точку останова на прерывании не ставиться (IAR 6.21).
Если обработчик прерывания оставляю пустым (оставляю только сброс прерывания)- тоже виснет.
Причем программа работает, а как только от компьютера отправляю байт контроллеру - он виснет, даже если функция по приему прерывания пустая.
Может неправильно биты прерывания сбрасываю и он в цикл уходит?
Полная программа во вложении. Помогите пожалуйста.


.... инициализация ....
.....
USART1->CR1 |= USART_CR1_TE;
USART1->CR1 |= USART_CR1_RE;
USART1->CR1 |= USART_CR1_RXNEIE;

.....
Обработчик прерывания (отправляет/принемает в буфер)
....
void USART1_IRQHandler(void)
{
if((USART1->SR & USART_SR_RXNE)) //Если прием
{
USART1->SR &= ~USART_SR_RXNE; //сброс флага
rx1_buffer[rx1w] = USART1->DR ; // сохраняем байт в буфер
if(rx1w >= (RX1_BUFFER_SIZE - 1)) //
{
rx1w = 0; //
} else {
rx1w++; //
};
};

if((USART1->SR & USART_SR_TXE)) //по опустошению
{
USART1->SR &= ~USART_SR_TXE; //сброс флага
USART1->DR = tx1_buffer[tx1r];
if(tx1r >= (TX1_BUFFER_SIZE - 1)) //
{
tx1r = 0; //
} else {
tx1r++; //
};
tx1_count++;
if(tx1_count == TX1_BUFFER_SIZE) USART1->CR1 &= ~USART_CR1_TXEIE; //Если все отправили - выключаем прерывание на отправку
}
}


Вложения:
Комментарий к файлу: Пример UART1
USART1.ZIP [92.34 Кб]
Скачиваний: 119
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F100 UART1 не работает по прерываниям (IAR 6.21)
СообщениеДобавлено: 13 июн 2012, 19:59 
Заглядывает иногда

Зарегистрирован: 23 авг 2011, 12:48
Сообщения: 74
На другом форуме подсказали: Нужно добавить файл *.s в проект.
Как только добавил startup_stm32f10x_ld_vl.s в IAR проект - все заработало.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB