STM8L151G6串口接收中断异常

2019-07-19 20:43发布

刚做了个串口程序,发关正常,接收想采购中断方式,可是一接收到数据就死机,也不知道是死在哪 里。哪位有做好的串口程序中断接收的,分享一下吧,不胜感激!以下是我的程序在这里贴出来,望老手们指点迷津。
void main(void)//**************************主函数
{
        uint8 i;
  System_Init();
  PVD_Config();
  __enable_interrupt();
  while (1)
  {
         
          /*Prompt_Tone(4);
          delay_ms(500);
          Prompt_Tone(0);
          delay_ms(500);
          Prompt_Tone(1);
          delay_ms(500);
          Prompt_Tone(2);
          delay_ms(500);
          Prompt_Tone(3);
          delay_ms(500);
          RLED_OFF();
          delay_ms(500);*/
                for(i = 0; i < 200; i++)
                {
                        RLED_ON();
                        UART0_Send_Byte(i);
                        delay_ms(500);
                        RLED_OFF();
                        delay_ms(500);
                }
        }
}

void Uart_Init(void)//***********************串口初始化
{
  CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);
  GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_3, ENABLE);
  GPIO_Init(GPIOC, GPIO_Pin_2, GPIO_Mode_In_PU_No_IT);//RXD
  USART_DeInit(USART1);       //复位UART1
  USART_Init(USART1, (uint32_t)9600, USART_WordLength_8b, USART_StopBits_1,USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Tx|USART_Mode_Rx));//串口初始化
  USART_ClearITPendingBit(USART1, USART_IT_RXNE);
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART1, ENABLE);
}

#pragma vector = USART1_RX_IRQn//*****************************接收中断
__interrupt void UART1_RX_IRQHandler(void)
{uint8 RxBuffer[40];
        USART_ClearFlag(USART1,USART_FLAG_RXNE);
        Prompt_Tone(0);
        RxBuffer[0] = USART_ReceiveData8(USART1); //Store the received byte in RxBuffer
        UART0_Send_Byte(RxBuffer[0]);
        return;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
胖子阳
2019-07-21 12:24
第一:在main函数初始化里面没有看到串口的初始化;
第二:我做的串口接收把PC2与PC3端口都上拉,是没问题的,不知道这里是否有问题;
第三:串口接收在哪里?即在哪里等待串口接收?
第四:UART0_Sent_Byte()函数的定义没有看到,这个函数怎么写的?
附上我的串口函数,用的是STM8L151G4芯片。

一周热门 更多>