OpenEdv-开源电子网

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

关于将串口数据存入到数组中的问题

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-8-26
在线时间
0 小时
发表于 2015-9-27 16:53:38 | 显示全部楼层 |阅读模式
5金钱
请问一下原子哥和各位大神,我的用MATLAB做上位机算出许多数据,数据是带符号的小数。想把这些数据通过串口发送到单片机中存储起来。现在遇到一下麻烦:
①我在主函数里定义一个数组,在中断函数里无法引用,用了extern  也不行,程序在编译时报错?
②上位机的数据个数不确定,怎么定义长度不确定的数组?
这是我的程序主函数和中断接部分(经测试,发送一个数据是可以的)
int main(void)
{
 const float A[10]={};
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
USartT1_Init();
LED_Init();
delay_init();
LED1=1;
delay_ms(500); //延时500m
}

中断函数
void USART1_IRQHandler(void)
{
 u8 i;
 extern u8 flag;
extern float  A[10];
for(i=0;i<10;i++){
if(USART_GetITStatus(USART1,USART_IT_RXNE))
{
A=USART_ReceiveData(USART1);
USART_ClearFlag(USART1,USART_FLAG_RXNE);
}
}
}




最佳答案

查看完整内容[请看2#楼]

数组要定义到全局变量去,另外const是常量,不能被修改,你这个样肯定不能用来被赋值 未知长度的问题,一个是可以定义一个足够大的空间,这样会浪费写内存,但是简单粗暴 或者就是你串口发送数据的时候是不是已经知道了长度?如果知道了,可以使用指针的方式,用malloc临时分配空间 如果此时还不知道长度,就要使用链式结构这样的方法了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2015-6-2
在线时间
4 小时
发表于 2015-9-27 16:53:39 | 显示全部楼层
数组要定义到全局变量去,另外const是常量,不能被修改,你这个样肯定不能用来被赋值

未知长度的问题,一个是可以定义一个足够大的空间,这样会浪费写内存,但是简单粗暴
或者就是你串口发送数据的时候是不是已经知道了长度?如果知道了,可以使用指针的方式,用malloc临时分配空间

如果此时还不知道长度,就要使用链式结构这样的方法了
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-8-26
在线时间
0 小时
 楼主| 发表于 2015-9-27 17:32:39 | 显示全部楼层
我好想明白了一点儿  难怪数组一直不能被赋值,真是十分感谢。我接着实验去。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 05:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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