野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12500|回复: 6

usart接收字符串接收的字符串无规律,求大神指导。

[复制链接]
发表于 2016-1-15 15:16:56 | 显示全部楼层 |阅读模式
打算发a001这样类似的字符串,但是结果出来的是01a0。。像这样一些乱序的字符串。
char USART_Buffer[4];
u8 *p=USART_Buffer;
uint8_t Rxflag;  
int main(void)
{       

    RCC_Configuration();                           
   USART3_Config();
   while(1)
  {
        if(Rxflag==1)
        {
            USART3_SendString(p);                       
            delay_ms(500);          
           Rxflag =0;
         }
   }                         
}


void USART3_IRQHandler(void)
{

        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)   
        {                                    
                  USART_Buffer[counter++] = USART_ReceiveData(USART3);
                 USART_ClearITPendingBit(USART3,USART_IT_RXNE); //Çå3tÖD¶Ï±ê־λ               
                if(counter>4)
                {
                          USART_ClearITPendingBit(USART3,USART_IT_RXNE); //Çå3tÖD¶Ï±ê־λ
                          Rxflag=1;
                         counter=0;
                }
                                       
                  
        }
}


回复

使用道具 举报

发表于 2016-1-15 15:27:01 | 显示全部楼层
ISO-V3上测试的
12.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-15 15:30:46 | 显示全部楼层

这个是用printf的,我用的是USART3的,所以我想用自带的发送接收,  USART3_SendString()的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-15 15:32:25 | 显示全部楼层

我用的是V2的,好像只有字符的
回复 支持 反对

使用道具 举报

发表于 2016-1-15 16:20:14 | 显示全部楼层
952699805 发表于 2016-1-15 15:32
我用的是V2的,好像只有字符的

ISO-V2 上测试的 USART3 可以的例程
USART3接发.zip (343.79 KB, 下载次数: 16)
回复 支持 反对

使用道具 举报

发表于 2016-1-15 16:21:16 | 显示全部楼层
952699805 发表于 2016-1-15 15:30
这个是用printf的,我用的是USART3的,所以我想用自带的发送接收,  USART3_SendString()的
这个就是你想要的结果
  1. void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)
  2. {
  3.         /* 发送一个字节数据到USART */
  4.         USART_SendData(pUSARTx,ch);
  5.                
  6.         /* 等待发送数据寄存器为空 */
  7.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);        
  8. }

  9. /*****************  发送字符串 **********************/
  10. void Usart_SendString( USART_TypeDef * pUSARTx, char *str)
  11. {
  12.         unsigned int k=0;
  13.   do
  14.   {
  15.       Usart_SendByte( pUSARTx, *(str + k) );
  16.       k++;
  17.   } while(*(str + k)!='\0');
  18.   
  19.   /* 等待发送完成 */
  20.   while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
  21.   {}
  22. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-15 16:52:55 | 显示全部楼层
fire 发表于 2016-1-15 16:21
这个就是你想要的结果

谢谢火哥,不过我刚开始的也是对的,只是数组个数给写错了。我现在试试这个V3 的看看和我的那个有什么区别吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 21:52 , Processed in 0.029367 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表