中断函数中不能出现数组吗?

2019-07-16 04:30发布

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
  }
给人感觉就是中断函数中不能用数组?
请问大侠们为什么出现这种情况?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
lstcspring
1楼-- · 2019-07-16 10:28
不是中断能能用数组,是这个函数UART1_vSendData8的实参不能像你这样传递,你找本C语言书看一下关于函数参数传递的内容就清楚了
lovezjf234
2楼-- · 2019-07-16 11:06
UART1_vSendData8()你看下你的这个函数,里面应该是以指针的形式出现的吧,那么你代入进去的应该是一个地址,而不是你这样的表达,即使要写成数组的样子,那么你前面应该也要加个&,代表从地址取值

一周热门 更多>