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-22 02:28
回复【12楼】lzw3218:
---------------------------------有个不情之请,,我现在用的是正点的现在的程序,和你贴的有点出入,但不知道怎么改,大致都是一样的,也碰到了无法进入接收中断的问题,能否吧整个project发我一份,,不甚感激。。943051071@qq.com,,谢谢。。。
lzf048518
2楼-- · 2019-07-22 05:58
回复【12楼】lzw3218:
---------------------------------
没看明白,你们是啥解决的问题,我目前在调一个程序,也是进不了中断,所以想参考一下你们的程序,如果不麻烦,请把代码发给lzf048518@sohu.com
moon20704
3楼-- · 2019-07-22 07:53
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-07-22 12:28
回复【16楼】moon20704:
---------------------------------
看看是不是冲突了,你进入发送中断,没有清发送中断标志。
YouDream
5楼-- · 2019-07-22 17:05
回复【17楼】正点原子:
---------------------------------
原子兄,今天看到您USART文件夹中的串口中断服务程序(如下),有个疑问。假设发送到串口的数据包含了一个以上的0x0D,例如0x01,0x0D,0x03,0x04,0x0D,0x05,0x0D,0x0A,那么通过这段程序接收到的有效数据也就只有0x05了,也就是不允许一段数据中出现两个或以上0x0D,是这样吗?
void USART1_IRQHandler(void)                 //串口1中断服务程序
{
u8 Res;
#ifdef OS_TICKS_PER_SEC   //如果时钟节拍数定义了,说明要使用ucosII了.
OSIntEnter();    
#endif
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据

if((USART_RX_STA&0x8000)==0)//接收未完成
{
if(USART_RX_STA&0x4000)//接收到了0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x8000; //接收完成了 
}
else //还没收到0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收   
}  
}
}     
  } 
#ifdef OS_TICKS_PER_SEC   //如果时钟节拍数定义了,说明要使用ucosII了.
OSIntExit();    
#endif

#endif
正点原子
6楼-- · 2019-07-22 22:14
回复【18楼】YouDream:
---------------------------------
是的,所以不适合你这种数据的接收。

一周热门 更多>