跑一个HAL里的adc_example工程,笔记本已编译成功(但是笔记本连板子无反应,所以没法用),到台式机编译的时候出现“XXX(工程文件名).out"文件“not built”。
请问怎么回事,完全一样的代码一样的配置一样的操作。
Fan Yin:
error #10234-D: unresolved symbols remainerror #10010: errors encountered during linking; "adc_3301.out" not built
/** @example example_adcDisplay.c* This is an example which describes the steps to create an example application which* configures ADC to start conversion ona GIO trigger and display it over an uart .* The digital value can be viewed on a pc terminal with the uart configures @ 9600* no parity ,2 stop bits.*** @b Step @b 1:** Create a new project.** Navigate: -> File -> New -> Project** @image html example_createProject.JPG "Figure: Create a new Project"** @b Step @b 2:** Configure driver code generation:* – Enable GIO driver* – Enable SCI driver* – Enable ADC driver* – Disable others** Navigate: -> TMS570LCxx /RM5x -> Enable Drivers** @image html adcDisplay_enabledriver.JPG "Figure: SCI Enable Driver"*** @b Step @b 3:** Navigate: -> TMS570LCxx /RM5x -> ADC** Configure ADC General :** @image html adcDisplay1.JPG "Figure: ADC General Configuration"*** @b Step @b 4:** Configure ADC Group1 :** – Configure ADC Group 1 with "Hardware trigger" source as "GIOB0" at "Rising edge"* – Enable ADC1 Group 1 channel selection Pin 0 and Pin 1** @image html adcDisplay2.JPG "Figure: ADC Group Configuration"** @b Step @b 5:** Configure SCI:* – Configure SCI baudrate as 9600** Navigate: -> TMS570LCxx /RM5x -> ADC** @image html sci_uart1.JPG "Figure: SCI Configuration"** @b Step @b 6:** Copy the source code below into your sys_main.c or replace sys_main.c with this file.** The example file can also be found in the examples folder: ../HALCoGen/examples** @note HALCoGen generates an empty main function in sys_main.c,* please make sure that you link in the right main function or copy the source into the user code sections of this file.***//* USER CODE BEGIN (0) *//* USER CODE END *//* Include Files */#include "HL_sys_common.h"#include "HL_system.h"/* USER CODE BEGIN (1) */#include "HL_esm.h"#include "HL_adc.h"#include "HL_sci.h"#include "HL_gio.h"#define TSIZE1 12uint8 TEXT1[TSIZE1]= {'\r','\n','|','\t','C','H','.','I','D','=','0','x'};#define TSIZE2 9uint8 TEXT2[TSIZE2]= {'\t','V','A','L','U','E','=','0','x'};adcData_t adc_data[2];void sciDisplayText(sciBASE_t *sci, uint8 *text, uint32 length);void sciDisplayData(sciBASE_t *sci, uint8 *text,uint32 length);void wait(uint32 time);/* USER CODE END *//** @fn void main(void)* @brief Application main function* @note This function is empty by default.** This function is called after startup.* The user can use this function to implement the application.*//* USER CODE BEGIN (2) *//* USER CODE END */void main(void){/* USER CODE BEGIN (3) */ uint32 ch_count=0; uint32 id =0; uint32 value =0; /* initialize gio */ gioInit(); gioSetDirection(gioPORTB, 1); /* initialize sci/sci-lin : even parity , 2 stop bits */ sciInit(); /* initialize ADC */ /* Group1 -> Channel 0 and 1 */ /* HW trigger trigger source as GIOB Pin 0 */ adcInit(); /* start adc conversion */ adcStartConversion(adcREG1,adcGROUP1); while(1) /* … continue forever */ { /* trigger using gio port b, pin 0 */ gioSetBit(gioPORTB, 0, 1); /* … wait and read the conversion count */ while((adcIsConversionComplete(adcREG1,adcGROUP1))==0); ch_count = adcGetData(adcREG1, adcGROUP1,&adc_data[0]); ch_count = ch_count; /* conversion results : */ /* adc_data[0] -> should have conversions for Group1 channel1 */ /* adc_data[1] -> should have conversions for Group1 channel2 */ id = adc_data[0].id; value = adc_data[0].value; gioSetBit(gioPORTB, 0, 0); sciDisplayText(sciREG1,&TEXT1[0],TSIZE1); /* send text 1 */ sciDisplayData(sciREG1,(uint8*)&id,4); /* send data 1 */ sciDisplayText(sciREG1,&TEXT2[0],TSIZE2); /* send text 2 */ sciDisplayData(sciREG1,(uint8*)&value,4); /* send data 2 */ id = adc_data[1].id; value = adc_data[1].value; sciDisplayText(sciREG1,&TEXT1[0],TSIZE1); /* send text 1 */ sciDisplayData(sciREG1,(uint8*)&id,4); /* send data 1 */ sciDisplayText(sciREG1,&TEXT2[0],TSIZE2); /* send text 2 */ sciDisplayData(sciREG1,(uint8*)&value,4); /* send data 2 */ wait(0xFFFFF); };/* USER CODE END */}/* USER CODE BEGIN (4) */void sciDisplayData(sciBASE_t *sci, uint8 *text,uint32 length){ uint8 txt = 0; uint8 txt1 = 0;#if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1))text = text + (length -1);#endif while(length–) {#if ((__little_endian__ == 1) || (__LITTLE_ENDIAN__ == 1)) txt = *text–;#else txt = *text++;#endif txt1 = txt; txt &= ~(0xF0); txt1 &= ~(0x0F); txt1 =txt1>>4; if(txt<=0x9) { txt +=0x30; } else if(txt > 0x9 && txt < 0xF) { txt +=0x37; } else { txt = 0x30; } if(txt1 <= 0x9) { txt1 +=0x30; } else if((txt1 > 0x9) && (txt1 <= 0xF)) { txt1 +=0x37; } else { txt1 = 0x30; } while ((sciREG1->FLR & 0x4) == 4); /* wait until busy */ sciSendByte(sciREG1,txt1); /* send out text */ while ((sciREG1->FLR & 0x4) == 4); /* wait until busy */ sciSendByte(sciREG1,txt); /* send out text */ };}void sciDisplayText(sciBASE_t *sci, uint8 *text,uint32 length){ while(length–) { while ((sciREG1->FLR & 0x4) == 4); /* wait until busy */ sciSendByte(sciREG1,*text++); /* send out text */ };}void wait(uint32 time){ while(time){time–;};}/* USER CODE END */
Ken Wang:
回复 Fan Yin:
你的两行错误信息显示在你的程序里面有不能识别的字符。
你可以把你 的错误信息都贴出来看看,它会告诉你具体是哪个不能识别的。
谢谢
gaoyang9992006:
回复 Fan Yin:
这个问题比较简单,可能是头文件没有包含进来,如果包含进来了,看看软件配置,是不是把那个文件包含进来了,如果编译器找不到路径,就会出现这种情况,某个变量是在某个头文件里的。建议把所有的相关头文件放到项目文件里。
Fan Yin:
回复 Ken Wang:
肯定不是您说的这个原因。。我怀疑是操作系统问题,因为我在XP机子里就出现这个问题,在win7系统运行同样的程序同样的配置同样的操作就能顺利编译
不过也没事了,我在第三台电脑调试成功了(一把泪,这板子和软件太娇贵了,下个程序要半年)
顺便说下,HAL例程里的adc_example,自动生成的start什么什么.c文件有bug,第79行需要注释掉end if才能编译通过。
Ken Wang:
回复 Fan Yin:
板子的调试器比较慢哈,XP的操作系统用的比较少,公司默认都是用Win7的环境。
谢谢