初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2015-8-26
- 在线时间
- 0 小时
|
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临时分配空间
如果此时还不知道长度,就要使用链式结构这样的方法了
|