打印

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

[复制链接]
12742|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhoubojay|  楼主 | 2012-12-17 23:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STM32串口接收一串字符串,然后发到串口助手上,我想知道怎么把这字符串取出来,发给子函数呢
*****************************************************************************/
void USART1_Send_Byte(u16 Data)
{
           while (!(USART1->SR & USART_FLAG_TXE));
           USART1->DR = (Data & (uint16_t)0x01FF);          
}

void USART_Send_Str(char* senddata,int lenth)
{
        u16 i;

        for (i=0; i<lenth; i++)
        {
                USART1_Send_Byte(senddata[i]);
        }       
                memset(udata,0x00,sizeof(udata));
                dataLen=0;
}       

void USART1_IRQHandler(void)
{

        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
        {       
            udata[dataLen]=USART1->DR;
                dataLen++;
               
                                    
        }
               
        USART_Send_Str(udata,dataLen);
       
}
另外  好像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,打印也只打印第一个字节  

使用特权

评论回复
5
zhoubojay|  楼主 | 2012-12-18 18:08 | 只看该作者
没人来看看

使用特权

评论回复
6
fengye5340| | 2012-12-18 19:16 | 只看该作者
一般是将接收到的字符链接起来发送,或接收后做处理,网上这方面的例程很多,看以搜搜

使用特权

评论回复
7
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];  

使用特权

评论回复
8
fengye5340| | 2012-12-19 10:21 | 只看该作者
还是不太明白楼主的想要做什么,<STING.H>里面有好多字符串函数,可以用它们来处理你的字符串,比如连接,然后再做处理

使用特权

评论回复
9
footprint01| | 2016-4-1 16:20 | 只看该作者
我想判断这些字符串是什么内容!而且不止一个!中间还有数字,字符是控制单片机对哪部分控制,数字是单片机的控制目标!

使用特权

评论回复
10
751191958| | 2017-3-17 19:32 | 只看该作者
footprint01 发表于 2016-4-1 16:20
我想判断这些字符串是什么内容!而且不止一个!中间还有数字,字符是控制单片机对哪部分控制,数字是单片机的控 ...

请问 解决没有,我也是想要从PC接收以#数据Y数据$
这两个数据分离出来,有用,但是在STM32的串口中断中处理,没用,数组用过了,没用。。
给个参考程序呗

使用特权

评论回复
11
wahahaheihei| | 2017-3-17 19:37 | 只看该作者
不要直接用Printf

使用特权

评论回复
12
wahahaheihei| | 2017-3-17 19:38 | 只看该作者
printf是格式化输出,你直接转发到串口就行了。或者这样,你把那串口两根线分开,一根接收那个数据,一根弄到电脑的串口上。

使用特权

评论回复
13
751191958| | 2017-3-17 20:41 | 只看该作者
没用数据不对程序按照C的逻辑没问题

使用特权

评论回复
14
xiaoyaodz| | 2017-3-17 21:59 | 只看该作者
保存到数组中。

使用特权

评论回复
15
xiaoyaodz| | 2017-3-17 22:00 | 只看该作者
STM32串口收发字符串,不保存到sd卡里面吗

使用特权

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

本版积分规则

4

主题

595

帖子

1

粉丝