我要配置的是usart2的接收
配置了nvic后程序就不往下走了 一直不停的进入中断
void NVIC_Configuration(void)
{
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); //初始化中断向量表
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void USART2_IRQHandler()
{
uint16_t abc=0;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
abc = USART_ReceiveData(USART2);
USART_SendData(USART2,abc);
}
}
迷惑了好久找不出来问题
反复调试发现USART_ITConfig(USART2, USART_IT_TXE, ENABLE);这一句
加入发送使能后就陷入进入中断的循环
现在中断里只写了这么两句清空中断标志位,结果还是会不停进入清空标志位,不晓得是哪个中断触发的,NVIC_Configuration(),这个函数注释掉后在main里的发送没有问题
USART_ClearITPendingBit(USART2, USART_IT_TXE);
USART_ClearITPendingBit(USART2, USART_IT_RXNE);
USART_ITConfig(USART2, USART_IT_TXE, ENABLE);这句就是我说的第一点