STM32 USART1中断进不了串口 别的中断都可以进去,就是USART1_IRQn进不去????请高手解决!!!

2019-07-21 02:28发布

 STM32   USART1中断进不了串口 别的中断(外部)都可以进去,就是USART1_IRQn进不去
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

 不加这句不卡NVIC_Init(&NVIC_InitStructure);
加上这句就卡住不动了.
????请高手解决!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
正点原子
1楼-- · 2019-07-21 06:32
估计是你的串口中断服务函数没有。
lzw3218
2楼-- · 2019-07-21 09:04
void USART1_IRQHandler(void)                 //串口1中断服务程序
{
u8 Res;

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
 printf("iojwfo ");
// if((USART_RX_STA&0x80)==0)//接收未完成
// {
// if(USART_RX_STA&0x40)//接收到了0x0d
// {
// if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
// else USART_RX_STA|=0x80; //接收完成了
// }
// else //还没收到0X0D
// {
// if(Res==0x0d)USART_RX_STA|=0x40;
// else
// {
// USART_RX_BUF[USART_RX_STA&0X3F]=Res ;
// USART_RX_STA++;
// if(USART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收
// }
// }
// }
     }
}

有中断服务函数 还是卡到这不动
LOVE_FYD
3楼-- · 2019-07-21 10:03
 精彩回答 2  元偷偷看……
LOVE_FYD
4楼-- · 2019-07-21 11:22
而且你根本没清中断标志位
USART_ClearFlag(USART1,USART_FLAG_RXNE);
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
lzw3218
5楼-- · 2019-07-21 13:34
我按你说的做了,可是还是不行!!!
LOVE_FYD
6楼-- · 2019-07-21 14:46
能否贴USART初始化程序和中断程序看看

一周热门 更多>