这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 串口接收不进中断(高手进来)

共8条 1/1 1 跳转至

串口接收不进中断(高手进来)

工程师
2012-05-12 23:51:04     打赏

       今天又搞了下串口的通信,想着和CAN一块应用,可是程序就是不进入串口的接收中断,并没有执行if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) 。
看了几遍程序,并没有感觉配置错误啊,很迷糊,大家帮着看看吧,我把串口的配置代码发上来。
//GPIO配置
void GPIO_Configuration(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;  
   /* Configure CAN pin: TX */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
   GPIO_Init(GPIOB, &GPIO_InitStructure);

 

        /* Configure USART1 Tx (PA.09) as alternate function push-pull */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 /* Configure USART1 Rx (PA.10) as input floating */
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
}

 

 void RCC_Configuration(void)
{
 SystemInit(); 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA
                           |RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
                           |RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE
         |RCC_APB2Periph_ADC1  | RCC_APB2Periph_AFIO
                           |RCC_APB2Periph_SPI1, ENABLE );
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 |RCC_APB1Periph_USART3|RCC_APB1Periph_TIM2 , ENABLE );
 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); //使能CAN的时钟
}   //系统中断管理
void NVIC_Configuration(void)
{
 NVIC_InitTypeDef NVIC_InitStructure;

 

   /* Configure the NVIC Preemption Priority Bits */ 
   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

 #ifdef  VECT_TAB_RAM 
   /* Set the Vector Table base location at 0x20000000 */
   NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
 #else  /* VECT_TAB_FLASH  */
   /* Set the Vector Table base location at 0x08000000 */
   NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  
 #endif

       /* Enable the USART1 Interrupt */
 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;       //USART1中断
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //IRQ通道使能
 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1
}

 

  //配置USART,使能
void USART1_Configuration(void)
{
   USART_InitTypeDef USART_InitStructure;
   USART_ClockInitTypeDef  USART_ClockInitStructure;

 

   USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;
   USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
   USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
   USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
   /* Configure the USART1 synchronous paramters */
   USART_ClockInit(USART1, &USART_ClockInitStructure);

   USART_InitStructure.USART_BaudRate = 9600;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_No;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
   /* Configure USART1 */
   USART_Init(USART1, &USART_InitStructure);
 
   /* 使能接收中断*/
   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
//   USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

   /* Enable the USART1 */
   USART_Cmd(USART1, ENABLE);
 
}

 
void USART1_IRQHandler(void) //串口1接收中断服务程序
{
 u8 Res;
 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
   {.......
   }
else
   {
  ......
   }
}

 

 

 



关键词: 串口     接收     不进     中断     高手     进来     USART     U    

高工
2012-05-13 00:02:46     打赏
2楼
感觉nvic那块设置的有点问题,可又说不准......

工程师
2012-05-13 00:04:12     打赏
3楼
哎,不知道怎么搞的,很无奈

菜鸟
2012-05-13 00:42:07     打赏
4楼
调用初始化函数没有?

院士
2012-05-13 00:45:34     打赏
5楼
明天帮你看看,今天太累了。要睡了……

工程师
2012-05-13 00:52:45     打赏
6楼
好,等明天吧

工程师
2012-05-13 00:53:41     打赏
7楼
必须调用了,我这个是关键代码,要是全贴出来,大家要看头大啊

工程师
2012-05-13 13:06:06     打赏
8楼
顶起来,等高手

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]