求解释为什么?我使用的STM32f373VC

2019-07-21 05:07发布

/* 函数功能:读取输入寄存器(模拟量输入)     函数输入:两个指针,pointer_1指向用来存放输入信息帧的数组,              pointer_2用来指向存放输出信息帧的数组(两个数组的第一个元素都用来存放信息帧的有效字节个数)              后面的元素按照Modbus协议组织。                                                         函数输出:无。                                                                                           */  void ReadInputReg(u8 *pointer_1,u8 *pointer_2)//pointer_1用作输入,pointer_2用作输出  {     u16 Address=0;//待读取寄存器起始地址(HoldReg,i为0-99对应地址从0到99)     u16 Num=0;//要读取的寄存器个数     u16 SendKey;//要发送数据的校验值     u32 PortTemp;//用来存放从端口取过来的数据,临时计算用     u16 ReadData=0;//用来临时存放从端口读来的数据     u32 CalTemp=0;//用来临时计算           Address=(u16)(*(pointer_1+3))*256+(*(pointer_1+4));//先得到寄存器起始地址     Num=(u16)(*(pointer_1+5))*256+(*(pointer_1+6));//先得到要读取的寄存器个数     *(pointer_2+2)=0x04;//第三个字节为功能码       if(*(pointer_1)==8)    //如果接收到的字节数不是8个,就是一个错误帧     {        if(Address<2) //只要地址小于2,就是合法地址        {            if(Address+Num<=2&&Num>0) //只要地址加数量大于0小于2,就是合法数量            {               //用于for循环               u8 i;               u8 j;                                           *(pointer_2+3)=Num*2;//第四个字节为要发送的字节个数               *(pointer_2)=1+1+1+Num*2+2;//有效字节个数等于丛机地址+功能码+字节个数+寄存器信息+CRC校验                   //将端口ADC1和ADC2的数据预先读入到临时的数据缓存中               ReadData=ADC_GetConversionValue(ADC2);               PortTemp=(u32)(ReadData);               PortTemp=PortTemp<<16;               ReadData=ADC_GetConversionValue(ADC1);               PortTemp=PortTemp|(u32)(ReadData);                             //将PortTemp中的数据先进行预处理               PortTemp=PortTemp<<(Address*16);               for(i=4,j=Num*2;j>0;i++,j-=2)               {                   CalTemp=(u16)(PortTemp<<16);                   *(pointer_2+i)=(u8)(CalTemp>>8);//先放高位                   *(pointer_2+i+1)=(u8)(CalTemp&0x00FF);//再放低位               }                                 //写入校验码                                     SendKey=CRC16(pointer_2+1,*pointer_2-2);                              //将计算出来的校验码装入输出数据缓存中               *(pointer_2+(*pointer_2-1))=(u8)(SendKey>>8);               *(pointer_2+(*pointer_2))=(u8)(SendKey&0x00FF);                   //启动数据发送               USART_ITConfig(USART1, USART_IT_TC, ENABLE);//开启数据发送中断                           }            else            {                ErrorHandle(3,pointer_2);//错误读取数量            }                 }        else        {            ErrorHandle(2,pointer_2);//错误起始地址        }     }     else     {        Comu_Busy=0;     }  }
标记红 {MOD}的那句老是出现错误,错误是main.c(497): error:  #20: identifier "ADC2" is undefined    ReadData=ADC_GetConversionValue(ADC2);  
是不是我包含的头文件不对,还是什么原因?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。