Доброго дня всем!
Принимаю данные через USART, нужно принятые данные копировать в буфер, используя прерывания RXNEIE.
Для инициализации прерываний использовал такой код:
Код:
|
void Init_Interrupts(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
/* Set the Vector Table base address at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);
/* Configure the Priority Group to 2 bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
/* Enable and set USART1 Interrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* Enable USART Receive Data interrupt.*/
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
__set_PRIMASK(0); // global interrupts enable
} |
Обработчик типа такого:
Код:
|
/* USART Receive complete Interrupt handler*/
void USART1_IRQHandler(void)
{
//static uint8_t i;
uint8_t* addr = USART_Rx_buffer;
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
if( bytes_left_in_rx--);
*addr++ = USART_ReceiveData(USART1);
} |
Однако же, тишина...
В прерывания не входит, хотя USART работает.
Данные могу принять, опрашивая бит готовности RXNE.
Но, хотелось бы в прерывании...
Где-то чего-то не включил, но где???