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; //Если все отправили -
выключаем прерывание на отправку
}
}
Прикрепленные файлы
USART1.ZIP ( 92.34 килобайт )
Кол-во скачиваний: 12