打印
[STM32F1]

串口中断接收到的数据怎么放到一个数组变量里

[复制链接]
917|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huwr|  楼主 | 2021-10-10 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void InitUART(void)//11.0592MHz 9600
{
    SCON = 0x50;//8位数据,可变波特率
    AUXR |= 0x04;//定时器2时钟为Fosc,即1T
    T2L = 0xE0;//设定定时初值
    T2H = 0xFE;//设定定时初值
    AUXR |= 0x01;//串口1选择定时器2为波特率发生器
    AUXR |= 0x10;//启动定时器2
    ES=1;
    EA=1;
    REN=1;
  }void Uart_Init(void) interrupt 4
{
                unsigned char temp;
    RI=0;
    temp=SBUF;
         // putptr&=0x0f;
    SBUF=temp;
    while(TI==0);
    TI=0;
}

想把串口中断接收到的数据放到一个数组变量里,想着在中断函数里把 “temp”定义为一个数组,可是存的数据不对

使用特权

评论回复
沙发
dengdc| | 2021-10-10 15:51 | 只看该作者
还是把 temp数组定义成全局的吧

使用特权

评论回复
板凳
llljh| | 2021-10-10 15:53 | 只看该作者
unsigned char temp;
改成全局

temp[i]=SBUF;
i++;

使用特权

评论回复
地板
huwr|  楼主 | 2021-10-10 16:52 | 只看该作者
定义成全局的数组 我也试过 还是实现不了

使用特权

评论回复
5
huwr|  楼主 | 2021-10-10 16:54 | 只看该作者
改成全局的变量 temp=SBUF; i++; 这种方法我在网上看到过,但是我实现不了

使用特权

评论回复
6
chuxh| | 2021-10-10 16:58 | 只看该作者
这个就涉及到C语言的知识了,楼主要加油哇

使用特权

评论回复
7
huwr|  楼主 | 2021-10-10 16:59 | 只看该作者
可以了 哈哈

使用特权

评论回复
8
ousj| | 2021-10-10 17:01 | 只看该作者
3楼的额不错,temp[i]=SBUF;i++;这样就把接收到的数据暂存到数组里,然后你的STC单片机在对每个数据进行逐一判断

使用特权

评论回复
9
liuzaiy| | 2021-10-10 17:03 | 只看该作者
可以用一个全局变量来控制
如:
unsigned char temp[20];
unsigned char i;
void Uart_Init(void) interrupt 4
{
                unsigned char temp;
    RI=0;
    temp[i]=SBUF;
         // putptr&=0x0f;
    SBUF=temp;
    while(TI==0);
    TI=0;
    i++;
    if(i>=19)
    i=0;
}

使用特权

评论回复
10
llljh| | 2021-10-10 17:09 | 只看该作者
你说的这种通信要求可以采用帧传送的方式,自己要确定一个帧格式,例如:
0X55//帧头标志
0XAA
//128字节数据
校验字节1
校验字节2
校验字节是防止数据传输错误,校验方式可自行选择。
如果数据不是很重要,定义一个132字节接收队列(全局变量数组),如果数据很重要,定义两个132字节接收队列,一个做接收缓冲,接受正确才更新正式队列。还要定义一个接收指针,屋顶太阳能发电leaptonenergy.com当接收到帧头标志,接收指针清零,以后每接收一个字符,以接收指针做下标将数据存入接收数组。

使用特权

评论回复
11
xxrs| | 2021-10-10 17:11 | 只看该作者
改成全局变量是必须的

使用特权

评论回复
12
liuzaiy| | 2021-10-10 17:14 | 只看该作者
i++以后不要超出数组范围

使用特权

评论回复
13
jiajs| | 2021-10-10 17:16 | 只看该作者
楼主明显C语言基础不过关,你们别瞎帮忙了,反而害了他.

使用特权

评论回复
14
chenjunt| | 2021-10-10 17:18 | 只看该作者
应该是改成全局变量

使用特权

评论回复
15
ousj| | 2021-10-10 17:20 | 只看该作者
按照顺序放啊

使用特权

评论回复
16
yszong| | 2021-10-10 17:22 | 只看该作者
用静态全局的可以吗

使用特权

评论回复
17
dengdc| | 2021-10-10 17:24 | 只看该作者
也可以自己指定位置额

使用特权

评论回复
18
zhanghqi| | 2021-10-10 17:26 | 只看该作者
我还是没有明白为什么实现不了

使用特权

评论回复
19
huwr|  楼主 | 2021-10-10 17:28 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
20
guanjiaer| | 2021-11-3 11:21 | 只看该作者
建立一个数组然后存进去就行了啊

使用特权

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

本版积分规则

780

主题

8627

帖子

5

粉丝