Здравствуйте!
побаловался с Primer2 (в основном с экранчиком), и решил сделать первый реальный продакт на кортексе от STM, выбрал 103-й, вот он запаян на первой итерации девайса, и я уже моргаю светками по прерываниям таймера (прогу заливаю по UART1 флэшером от STM), следующй шаг - связь, пытаюсь, чтобы понять основы, сделать - ЭХО, т.е. отправляю ему байтик, он мне его же обратно отсылает.
пишу следующий обработчик прерывания:
Код
void USART1_IRQHandler(void)
{
vu16 Echo;
static vu8 i = 0;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE | USART_IT_TXE);//почистил все битики прерываний от уарта
Echo = USART_ReceiveData(USART1);//получил пришедшие данные
USART_SendData(USART1, Echo);//и отправляю их обратно
}
if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_TXE | USART_IT_TC);//попав в прерывания по ТХ, просто чищу битики, чтобы более сюда не заходить
}
//контроль захода в прерывание
if (i == 0) {
GPIO_WriteBit(GPIOB, GPIO_Pin_6 , Bit_SET);
i = 1;
}
else {
GPIO_WriteBit(GPIOB, GPIO_Pin_6 , Bit_RESET);
i = 0;
}
}
выяснил, что проц выполняет заход в прерывание юарта сразу после ребута, хотя в инициализации я зачищаю все источники прерывания по уарту
Код
USART_ClearITPendingBit(USART1, USART_IT_RXNE | USART_IT_TXE);
/* Enable USART1 Receive and Transmit interrupts */
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
а самое прикольное, что написанный выше обработчик прерывания вызывает зависание проца ! какой-то флажок - инициатор прерывания не сбрасывается, и интерраптица постоянно...
ЭХО (1 раз) я получал, но для этого я (как в многочисленных примерах) запрещал прерывания по RX когда отправляю байтик, и запрещал прерывания по TX перед приёмом байтика, далее все прерывания оказывались заблокированными и эхо больше не появлялось
все экзамплы пересмотрел и док вроде перекурил, я конечно делаю по своему, но не с понталыку (и на LPC у меня есть 2 проекта, где обмен по всем 4-м уартам чуть ли не основная функция девайсов)
в общем чо не так делаю? ткните пальцем.