OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3393|回复: 3

如何处理串口获得的信息

[复制链接]

9

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2017-5-9
在线时间
17 小时
发表于 2017-5-15 14:18:09 | 显示全部楼层 |阅读模式
做了以下简单的串口实验,想把串口获得的数据加1,再将其反馈给串口助手显示。
但是只有个位数可以,两位数就出现都加1 的情况,我不知道应该如何转换,小白问题请解答。
个人感觉只是改变了ASCII码~
微信截图_20170515142053.png 微信截图_20170515142110.png
int main(void)
{        
     u16 t;  
    u16 len;   
    u16 times=0;
    u8 m[20];
    delay_init();             //延时函数初始化      
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    uart_init(115200);     //串口初始化为115200
     LED_Init();                 //LED端口初始化         
     while(1)
    {
        if(USART_RX_STA&0x8000)
        {                       
            len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
            
            for(t=0;t<len;t++)
            {
                m[t]=USART_RX_BUF[t];
                m[t]=m[t]+1;
                USART_RX_BUF[t]=m[t];
            }
            
            
            printf("\r\n您发送的消息为:\r\n\r\n");
            for(t=0;t<len;t++)
            {
                USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
            }
            printf("\r\n\r\n");//插入换行
            USART_RX_STA=0;
        }else
        {
            times++;
            if(times%5000==0)
            {
                printf("\r\n战舰STM32开发板 串口实验\r\n");
                printf("正点原子@ALIENTEK\r\n\r\n");
            }
            if(times%200==0)printf("请输入数据,以回车键结束\n");  
            if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
            delay_ms(10);   
        }
    }     
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2017-5-7
在线时间
7 小时
发表于 2017-5-15 21:21:36 | 显示全部楼层
应该是 数制转换的问题吧?是不是要把字符串转换成数值才可以+1
/*  *****************************************************
//  Description:    将字符形式数据转换成10进制数据
//                    E.G    '1' '2' --> 12
*****************************************************  */
u8 ExCharToDec(u8 HByte,u8 LByte)
{
    if ((HByte<'0') || (HByte>'9') || (LByte<'0') || (LByte>'9'))
    {
        return (0);
    }
    else
    {
        return ((HByte-'0')*10+(LByte-'0'));
    }
}
回复 支持 反对

使用道具 举报

9

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2017-5-9
在线时间
17 小时
 楼主| 发表于 2017-5-16 08:49:49 | 显示全部楼层
cooooookoo 发表于 2017-5-15 21:21
应该是 数制转换的问题吧?是不是要把字符串转换成数值才可以+1
/*  *********************************** ...

你说的对,是数值转换问题,谢谢你的转换函数代码
不过话说有没有现成的库函数,像是小数点什么的都需要转换
回复 支持 反对

使用道具 举报

9

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2017-5-9
在线时间
17 小时
 楼主| 发表于 2017-5-16 08:50:31 | 显示全部楼层
或者说关于这类问题有没有什么标准写法
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 14:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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