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

[复制链接]
1200|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 | 显示全部楼层
定义成全局的数组 我也试过 还是实现不了
 楼主| huwr 发表于 2021-10-10 16:54 | 显示全部楼层
改成全局的变量 temp=SBUF; i++; 这种方法我在网上看到过,但是我实现不了
chuxh 发表于 2021-10-10 16:58 | 显示全部楼层
这个就涉及到C语言的知识了,楼主要加油哇
 楼主| huwr 发表于 2021-10-10 16:59 | 显示全部楼层
可以了 哈哈
ousj 发表于 2021-10-10 17:01 | 显示全部楼层
3楼的额不错,temp[i]=SBUF;i++;这样就把接收到的数据暂存到数组里,然后你的STC单片机在对每个数据进行逐一判断
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;
}
llljh 发表于 2021-10-10 17:09 | 显示全部楼层
你说的这种通信要求可以采用帧传送的方式,自己要确定一个帧格式,例如:
0X55//帧头标志
0XAA
//128字节数据
校验字节1
校验字节2
校验字节是防止数据传输错误,校验方式可自行选择。
如果数据不是很重要,定义一个132字节接收队列(全局变量数组),如果数据很重要,定义两个132字节接收队列,一个做接收缓冲,接受正确才更新正式队列。还要定义一个接收指针,屋顶太阳能发电leaptonenergy.com当接收到帧头标志,接收指针清零,以后每接收一个字符,以接收指针做下标将数据存入接收数组。
xxrs 发表于 2021-10-10 17:11 | 显示全部楼层
改成全局变量是必须的
liuzaiy 发表于 2021-10-10 17:14 | 显示全部楼层
i++以后不要超出数组范围
jiajs 发表于 2021-10-10 17:16 | 显示全部楼层
楼主明显C语言基础不过关,你们别瞎帮忙了,反而害了他.
chenjunt 发表于 2021-10-10 17:18 | 显示全部楼层
应该是改成全局变量
ousj 发表于 2021-10-10 17:20 | 显示全部楼层
按照顺序放啊
yszong 发表于 2021-10-10 17:22 | 显示全部楼层
用静态全局的可以吗
dengdc 发表于 2021-10-10 17:24 | 显示全部楼层
也可以自己指定位置额
zhanghqi 发表于 2021-10-10 17:26 | 显示全部楼层
我还是没有明白为什么实现不了
 楼主| huwr 发表于 2021-10-10 17:28 | 显示全部楼层

唉,还是没有什么结果,算了,多谢大家啦
guanjiaer 发表于 2021-11-3 11:21 | 显示全部楼层
建立一个数组然后存进去就行了啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

780

主题

8627

帖子

5

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