打印
[STM32]

最近弄串口 接收数据后发出去 不好使 写程序好难啊

[复制链接]
916|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qmmdzd|  楼主 | 2018-4-13 21:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是中断函数 请各位看看问题出在哪
void USART2_IRQHandler(void)
{
                   int i;                                
        static unsigned char counter=0;        //接收十个数

   if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)                  //中断是否产生
   {
                 USART_ClearITPendingBit(USART2,USART_IT_RXNE);
               RxBuffer[counter]=USART_ReceiveData(USART2);        //接收数据
         counter++;
                          if(counter>=10)
        counter=0;
  }
        for(i=0;i<10;i++)
  {
   USART_SendData(USART2,RxBuffer);    //发送数据
   while(USART_GetFlagStatus(USART2,USART_FLAG_TC)== RESET);//判断是否发送完
  }
}

相关帖子

沙发
qmmdzd|  楼主 | 2018-4-13 21:32 | 只看该作者
USART配置部分
void uart_init()
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
   GPIO_Init(GPIOA,&GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
   GPIO_Init(GPIOA,&GPIO_InitStructure);

   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
   NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                  
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);

   USART_InitStructure.USART_BaudRate=115200;
   USART_InitStructure.USART_WordLength=USART_WordLength_8b;
   USART_InitStructure.USART_StopBits=USART_StopBits_1;
   USART_InitStructure.USART_Parity=USART_Parity_No;
   USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
   USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
   USART_Init(USART2,&USART_InitStructure);

   USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);

   USART_Cmd(USART2,ENABLE);

//  USART_ClearFlag(USART2,USART_FLAG_TC);


}

使用特权

评论回复
板凳
ningling_21| | 2018-4-14 11:05 | 只看该作者
qmmdzd 发表于 2018-4-13 21:32
USART配置部分
void uart_init()
{

道路是曲折的

多用例程试试

使用特权

评论回复
地板
followme001| | 2018-4-14 14:12 | 只看该作者
逻辑不对吧。每次都是接收了一个字节,就发十个字节的东西出去。不是应该全部接收完,再发么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

93

帖子

0

粉丝