中断函数中不能出现数组吗?
时间:10-02
整理:3721RD
点击:
if (TI_1)
{
// UART1 transmit interrupt has occured
// USER CODE BEGIN (SHINT_XINTR8Isr,6)
UART1_vSendData8(counter[a]);
a++;
if(a==10)
EA=0;
// USER CODE END
}
(keil软件中编写的)在xc886的UART1中断函数void SHINT_viXINTR8Isr(void)中写入上面这么一段程序,编译后出现SHARED_INT.C(210): error C216: subscript on non-array or too many dimensions(数组counter定义,维数等基本语法没错误)
随意改成下面之后,编译就通过了:
if (TI_1)
{
// UART1 transmit interrupt has occured
// USER CODE BEGIN (SHINT_XINTR8Isr,6)
UART1_vSendData8(counter);
a++;
if(a==10)
EA=0;
// USER CODE END
}
给人感觉就是中断函数中不能用数组?
请问大侠们为什么出现这种情况?
{
// UART1 transmit interrupt has occured
// USER CODE BEGIN (SHINT_XINTR8Isr,6)
UART1_vSendData8(counter[a]);
a++;
if(a==10)
EA=0;
// USER CODE END
}
(keil软件中编写的)在xc886的UART1中断函数void SHINT_viXINTR8Isr(void)中写入上面这么一段程序,编译后出现SHARED_INT.C(210): error C216: subscript on non-array or too many dimensions(数组counter定义,维数等基本语法没错误)
随意改成下面之后,编译就通过了:
if (TI_1)
{
// UART1 transmit interrupt has occured
// USER CODE BEGIN (SHINT_XINTR8Isr,6)
UART1_vSendData8(counter);
a++;
if(a==10)
EA=0;
// USER CODE END
}
给人感觉就是中断函数中不能用数组?
请问大侠们为什么出现这种情况?
不是中断能能用数组,是这个函数UART1_vSendData8的实参不能像你这样传递,你找本C语言书看一下关于函数参数传递的内容就清楚了
UART1_vSendData8()你看下你的这个函数,里面应该是以指针的形式出现的吧,那么你代入进去的应该是一个地址,而不是你这样的表达,即使要写成数组的样子,那么你前面应该也要加个&,代表从地址取值