STM32串口收发字符串的问题?

[复制链接]
13523|14
 楼主| zhoubojay 发表于 2012-12-17 23:19 | 显示全部楼层 |阅读模式
用STM32串口接收一串字符串,然后发到串口助手上,我想知道怎么把这字符串取出来,发给子函数呢
  1. *****************************************************************************/
  2. void USART1_Send_Byte(u16 Data)
  3. {
  4.            while (!(USART1->SR & USART_FLAG_TXE));
  5.            USART1->DR = (Data & (uint16_t)0x01FF);          
  6. }

  7. void USART_Send_Str(char* senddata,int lenth)
  8. {
  9.         u16 i;

  10.         for (i=0; i<lenth; i++)
  11.         {
  12.                 USART1_Send_Byte(senddata[i]);
  13.         }       
  14.                 memset(udata,0x00,sizeof(udata));
  15.                 dataLen=0;
  16. }       

  17. void USART1_IRQHandler(void)
  18. {

  19.         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  20.         {       
  21.             udata[dataLen]=USART1->DR;
  22.                 dataLen++;
  23.                
  24.                                     
  25.         }
  26.                
  27.         USART_Send_Str(udata,dataLen);
  28.        
  29. }
另外  好像printf不能同时用吧?
 楼主| zhoubojay 发表于 2012-12-18 13:00 | 显示全部楼层
自己顶
fengye5340 发表于 2012-12-18 13:16 | 显示全部楼层
楼主增加数组传送就OK
 楼主| zhoubojay 发表于 2012-12-18 14:18 | 显示全部楼层
fengye5340 发表于 2012-12-18 13:16
楼主增加数组传送就OK

udata是一个字节,数组传送还是只能只能取出一个字节吧,C语言没有专门定义字符串的类型,printf("RX_dat:%c",udata);串口收到1234,打印也只打印第一个字节  
 楼主| zhoubojay 发表于 2012-12-18 18:08 | 显示全部楼层
没人来看看
fengye5340 发表于 2012-12-18 19:16 | 显示全部楼层
一般是将接收到的字符链接起来发送,或接收后做处理,网上这方面的例程很多,看以搜搜
 楼主| zhoubojay 发表于 2012-12-18 22:04 | 显示全部楼层
fengye5340 发表于 2012-12-18 19:16
一般是将接收到的字符链接起来发送,或接收后做处理,网上这方面的例程很多,看以搜搜 ...

不好意思,我没搜到,是不是可以这样处理,因为收到的字符是0-9,把字符转换成int型, RX_dat=udata[0]*1000+udata[1]*100+udata[2]*10+udata[3];  
fengye5340 发表于 2012-12-19 10:21 | 显示全部楼层
还是不太明白楼主的想要做什么,<STING.H>里面有好多字符串函数,可以用它们来处理你的字符串,比如连接,然后再做处理
footprint01 发表于 2016-4-1 16:20 | 显示全部楼层
我想判断这些字符串是什么内容!而且不止一个!中间还有数字,字符是控制单片机对哪部分控制,数字是单片机的控制目标!
751191958 发表于 2017-3-17 19:32 | 显示全部楼层
footprint01 发表于 2016-4-1 16:20
我想判断这些字符串是什么内容!而且不止一个!中间还有数字,字符是控制单片机对哪部分控制,数字是单片机的控 ...

请问 解决没有,我也是想要从PC接收以#数据Y数据$
这两个数据分离出来,有用,但是在STM32的串口中断中处理,没用,数组用过了,没用。。
给个参考程序呗
wahahaheihei 发表于 2017-3-17 19:37 | 显示全部楼层
不要直接用Printf
wahahaheihei 发表于 2017-3-17 19:38 | 显示全部楼层
printf是格式化输出,你直接转发到串口就行了。或者这样,你把那串口两根线分开,一根接收那个数据,一根弄到电脑的串口上。
751191958 发表于 2017-3-17 20:41 | 显示全部楼层
没用数据不对程序按照C的逻辑没问题
xiaoyaodz 发表于 2017-3-17 21:59 | 显示全部楼层
保存到数组中。
xiaoyaodz 发表于 2017-3-17 22:00 | 显示全部楼层
STM32串口收发字符串,不保存到sd卡里面吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

594

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部