微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 中断函数中不能出现数组吗?

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

时间: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_vSendData8的实参不能像你这样传递,你找本C语言书看一下关于函数参数传递的内容就清楚了

UART1_vSendData8()你看下你的这个函数,里面应该是以指针的形式出现的吧,那么你代入进去的应该是一个地址,而不是你这样的表达,即使要写成数组的样子,那么你前面应该也要加个&,代表从地址取值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top