找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2323|回复: 8
打印 上一主题 下一主题
收起左侧

新手求教c语言问题 这个字符存到数组的语句,不应该使用for循环吗

[复制链接]
跳转到指定楼层
楼主
ID:929517 发表于 2023-6-17 01:03 来自触屏版 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
请问这个字符存到数组的语句,不应该使用for循环吗?代码是从上到下执行,只有这么一句,不是只能存入一个字符吗?这段代码是中断程序中接收GPS发送的数据。求大神指点,

IMG_20230616_115707.png (80.12 KB, 下载次数: 50)

IMG_20230616_115707.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

9#
ID:1074206 发表于 2023-6-17 19:01 来自触屏版 | 只看该作者
每接收一个字节,都会产生中断,只不过是在底层处理了。都是有协议处理的
回复

使用道具 举报

8#
ID:213173 发表于 2023-6-17 16:18 | 只看该作者
/*************************************/
void Uart_Receive() interrupt 4
{
        static uchar ch=0;                //静态计数变量
        RI=0;                                        //接收中断请求标志位清0
        rev_buf[ch]=SBUF;                //接收到的数据串保存在缓存数组
        if(rec_buf[0]=='$')                //验证数据头,如果错误,被后续数据覆盖
        {
                ch++;
                if(rec_buf[ch-1]=='\n')//结束
                {
                        flag=1;                        //接收完成标志置1
                        ch=0;                        //计数变量清0
                }
        }
}
回复

使用道具 举报

7#
ID:883242 发表于 2023-6-17 16:03 | 只看该作者
字符串不定长,以\n作为结束标志,你又不知道具体长度怎么循环???
回复

使用道具 举报

6#
ID:908826 发表于 2023-6-17 15:39 | 只看该作者
这是属于单片机自身的问题了和C语言关系不大
回复

使用道具 举报

5#
ID:712097 发表于 2023-6-17 11:56 | 只看该作者
软硬结合,两手都要抓,要手都要硬,就能更好理解代码了。
回复

使用道具 举报

地板
ID:353115 发表于 2023-6-17 09:24 | 只看该作者
看来楼主对底层不了解。每接收一个字节数据,中断都触发一次,因此,当你意识到这个串口无法一次性识别一帧数据的时候,应该差不多明白了,需要用一个变量自加建立索引,来存储每个字节数据。
回复

使用道具 举报

板凳
ID:879348 发表于 2023-6-17 08:19 | 只看该作者
先理解中断是啥概念,别一上来就看程序
回复

使用道具 举报

沙发
ID:94031 发表于 2023-6-17 06:17 | 只看该作者
串口硬件收到一个字节,发出一个中断执行这段程序,字节存入rev_buf数组,数组标号+1,程序转入主程序,中断一次存一个,不用for。
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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