小蚂蚁快溜跑 发表于 2015-5-30 10:18:59

stm32f334usart中断处理问题,求帮助

关于usart初始化如下,能够进入中断,但中断处理函数好像没能处理,求大神指正
void Usart2Init(void)
{
      GPIO_InitTypeDef iousart;
      USART_InitTypeDef uusart;
      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
      //config GPIO
      iousart.GPIO_Mode=GPIO_Mode_AF;
      iousart.GPIO_OType=GPIO_OType_PP;
      iousart.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;
      iousart.GPIO_PuPd=GPIO_PuPd_UP;
      iousart.GPIO_Speed=GPIO_Speed_50MHz;
      GPIO_Init(GPIOA,&iousart);
      
      GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_7);
      GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_7);
      
      uusart.USART_BaudRate=9600;
      uusart.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
      uusart.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
      uusart.USART_Parity=USART_Parity_No;
      uusart.USART_StopBits=USART_StopBits_1;
      uusart.USART_WordLength=USART_WordLength_8b;
      
      USART_Init(USART2,&uusart);
      USART_ClearFlag(USART2,USART_FLAG_TXE);
      USART_ClearFlag(USART2,USART_FLAG_RXNE);
      
      NVIC_EnableIRQ(USART2_IRQn);
      USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
      USART_Cmd(USART2,ENABLE);
      
}
中断处理函数如下:
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)
{
         USART_SendData(USART2,USART_ReceiveData(USART2));
         while(USART_GetFlagStatus(USART2, USART_FLAG_TXE)==RESET);
      }
}
能够成功的给上位机发送数据

风子 发表于 2015-5-30 12:48:12

中断处理函数最后腰清除标志位,不然反复进中断出不来

小蚂蚁快溜跑 发表于 2015-5-30 13:29:19

风子 发表于 2015-5-30 12:48
中断处理函数最后腰清除标志位,不然反复进中断出不来

会自动清除中断标志位,:L现在是有时候能进入中断,更多的时候是进步去中断的:'(

风子 发表于 2015-5-30 13:55:45

小蚂蚁快溜跑 发表于 2015-5-30 13:29
会自动清除中断标志位,现在是有时候能进入中断,更多的时候是进步去中断的 ...

好好看下中断配置,,,(我印象中好像这个不会自动清除吧)

你好我好大家好! 发表于 2015-5-30 16:20:03

打个断点试试

creep 发表于 2015-5-30 19:57:06

读取USART_DR会自动清除TXE,RXNE,IDLE,等中断

小蚂蚁快溜跑 发表于 2015-5-30 21:12:35

creep 发表于 2015-5-30 19:57
读取USART_DR会自动清除TXE,RXNE,IDLE,等中断

中断服务程序意思是把接收到的再发送出去,有问题吗?

小蚂蚁快溜跑 发表于 2015-5-30 21:13:08

你好我好大家好! 发表于 2015-5-30 16:20
打个断点试试

不行。。中断服务程序有问题吗?

intermec_123 发表于 2015-5-31 00:55:53

单步看看跑哪了,

为什么是EEFOCUS小白 发表于 2015-5-31 09:42:09

DEBUG跑下看看
页: [1]
查看完整版本: stm32f334usart中断处理问题,求帮助