This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C1294NCPDT:utils/uart.h、和驱动程序库不包含在内

Guru**** 2614265 points
Other Parts Discussed in Thread: TM4C1294NCPDT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/775328/ccs-tm4c1294ncpdt-utils-uart-h-and-driver-library-are-not-getting-included

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

//
//
// temature_sensor.c -演示内部 ADC 温度的示例
//             传感器。
//
//版权所有(c) 2010-2017 Texas Instruments Incorporated。  保留所有权利。
//软件许可协议
//
//  以源代码和二进制形式重新分发和使用,有无
//  如果满足以下条件,则允许进行修改
//  满足:
//
//  重新分发源代码必须保留上述版权
//  注意、此条件列表和以下免责声明。
//
//  二进制形式的重新分发必须复制上述版权
//  注意、中的条件列表和以下免责声明
//  随提供的文档和/或其他材料
//  分布。
//
//  德州仪器公司的名称和的名称都不是
//  其贡献者可用于认可或推广衍生产品
//  未经特定的事先书面许可,从该软件下载。
//
//本软件由版权所有者和作者提供
//“原样”以及任何明示或暗示的保证,包括但不包括
//限于对适销性和适用性的暗示保证
//一个特定的目的是免责的。 在任何情况下、版权均不得
//所有者或贡献者应对任何直接、间接、偶然、
//特殊、典型或必然的损害(包括但不包括)
//仅限于采购替代货物或服务;
//数据或利润;或业务中断)
//责任理论,无论是合同责任、严格责任还是侵权行为
//(包括疏忽或其他)以任何方式因使用而产生
//此软件,即使已被告知可能会发生此类损坏。
//
//这是 Tiva 固件开发包的修订版2.1.4.178的一部分。
//
//
#include
#include
#include "inc/hw_memmap.h"
#include "driverlib/adc.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
//
//
//! 添加到组 ADC_Examples_list
//!

ADC 温度传感器(TEMP_SENSOR)

//!
//! 此示例展示了如何设置 ADC0以读取内部温度
//! 传感器。
//!
//! 注意:内部温度传感器未校准。  此示例
//! 只需获取原始温度传感器样本并使用进行转换
//! 找到的方程式。
//!
//! 此示例使用以下外设和 I/O 信号。  您必须执行的操作
//! 查看这些内容并根据您自己的董事会的需要进行更改:
//! - ADC0外设
//!
//! 以下 UART 信号仅配置为显示控制台
//! 消息。  操作时不需要这些
//! ADC。
//! UART0外设
//! - GPIO 端口 A 外设(用于 UART0引脚)
//! - UART0RX - PA0
//! - UART0TX - PA1
//!
//! 此示例使用以下中断处理程序。  来使用该示例
//! 在您自己的应用程序中、您必须将这些中断处理程序添加到
//! 矢量表。
//! -无。
//
//
//
//
//此函数将 UART0设置为用于控制台显示信息
//因为示例正在运行。
//
//
无效
InitConsole (空)
  //
  //启用用于 UART0引脚的 GPIO 端口 A。
  // TODO:将其更改为您正在使用的 GPIO 端口。
  //
  SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
  //
  //为端口 A0和 A1上的 UART0功能配置引脚复用。
  //如果您的器件不支持引脚复用、则无需执行此步骤。
  // TODO:更改此选项以选择您正在使用的端口/引脚。
  //
  GPIOPinConfigure (GPIO_PA0_U0RX);
  GPIOPinConfigure (GPIO_PA1_U0TX);
  //
  //启用 UART0以便我们可以配置时钟。
  //
  SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
  //
  //使用内部16MHz 振荡器作为 UART 时钟源。
  //
 // UARTClockSourceSet (UART0_BASE、UART_CLOCK _PIOSC);
  //
  //为这些引脚选择替代(UART)功能。
  // TODO:更改此选项以选择您正在使用的端口/引脚。
  //
  GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
  //
  //初始化控制台 I/O 的 UART
  //
 // UARTStdioConfig (0、115200、16000000);
//
//
//使用单个样本为温度传感器输入配置 ADC0。  一次
//完成采样,将设置中断标志,并将设置数据
//读取,然后通过 UART0显示在控制台上。
//
//
内部
main (空)
#if defined (target_IS_TM4C129_RA0)||                      \
  已定义(TARGET_IS_TM4C129_RA1)||                      \
  已定义(TARGET_IS_TM4C129_RA2)
  uint32_t ui32SysClock;
#endif
  //
  //该数组用于存储从 ADC FIFO 读取的数据。 它
  //必须与正在使用的序列发生器的 FIFO 一样大。  此示例
  //使用 FIFO 深度为1的序列3。  如果是另一个序列
  //与更深的 FIFO 一起使用,则必须更改数组大小。
  //
  uint32_t pui32ADC0Value[1];
  //
  //这些变量用于存储的温度转换
  //摄氏和华氏度。
  //
  uint32_t ui32TempValueC;
  uint32_t ui32TempValueF;
  //
  //使用 PLL 将时钟设置为以20MHz (200MHz/10)运行。  时间
  //使用 ADC,您必须使用 PLL 或提供16 MHz 时钟
  //源。
  // TODO:必须更改 SYSCTL_XTAL_VALUE 以匹配的值
  板上的//晶体。
  //
#if defined (target_IS_TM4C129_RA0)||                      \
  已定义(TARGET_IS_TM4C129_RA1)||                      \
  已定义(TARGET_IS_TM4C129_RA2)
  ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
                    SYSCTL_OSC_MAIN |
                    SYSCTL_USE_PLL |
                    SYSCTL_CFG_VCO_480)、20000000);
其他
  SysCtlClockSet (SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
          SYSCTL_XTAL_16MHz);
#endif
  //
  //设置用于显示消息的串行控制台。  这只是
  //对于此示例程序,ADC 操作不需要。
  //
  InitConsole();
  //
  //在控制台上显示设置。
  //
 /* UARTprintf ("ADC ->\n");
  UARTprintf (" 类型:内部温度传感器\n");
  UARTprintf (" 示例:一个\n");
  UARTprintf (" 更新速率:250ms\n");
  UARTprintf (" 输入引脚:内部温度传感器\n");*/
  //
  //必须启用 ADC0外设才能使用。
  //
  SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
  //
  //使用处理器信号触发器启用采样序列3。  序列3
  //将在处理器发送单个样本以启动时执行单个样本
  //转换。  每个 ADC 模块有4个可编程序列、序列0
  //至序列3。  此示例任意使用序列3。
  //
  ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_PROCESSOR、0);
  //
  //在序列3上配置步骤0。  对温度传感器进行采样
  //(ADC_CTL_TS)并将中断标志(ADC_CTL_IE)配置为置1
  //完成采样后。  告诉 ADC 逻辑、这是最后一个
  序列3上的//转换(ADC_CTL_END)。  序列3只有一个
  //可编程步进。  序列1和2有4个步长、序列0有4个步长
  // 8个可编程步骤。  因为我们仅使用进行单次转换
  //序列3,我们将仅配置步骤0。  有关的更多信息、请参阅
  // ADC 序列和步骤、请参考数据表。
  //
  ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_TS | ADC_CTL_IE |
               ADC_CTL_END);
  //
  //由于采样序列3现在已配置,因此必须将其启用。
  //
  ADCSequenceEnable (ADC0_BASE、3);
  //
  //清除中断状态标志。  这样做是为了确保
  //中断标志在我们进行采样之前被清除。
  //
  ADCIntClear (ADC0_BASE、3);
  //
  //永远对温度传感器进行采样。  显示上的值
  //控制台。
  //
  while (1)
  {
    //
    //触发 ADC 转换。
    //
    ADCProcessorTrigger (ADC0_BASE、3);
    //
    //等待转换完成。
    //
    while (!ADCIntStatus (ADC0_BASE、3、false))
    {
    }
    //
    //清除 ADC 中断标志。
    //
    ADCIntClear (ADC0_BASE、3);
    //
    //读取 ADC 值。
    //
    ADCSequenceDataGet (ADC0_BASE、3、pui32ADC0Value);
    //
    //使用数据表中提供的非校准转换。  制造
    //确保最后分频以避免压降。
    //
    ui32TempValueC =((1475 * 1023)-(2250 * pui32ADC0Value[0]))/ 10230;
    //
    //获取华氏值。  确保最后分频以避免压降。
    //
    ui32TempValueF =((ui32TempValueC * 9)+ 160)/5;
    //
    //在控制台上显示温度值。
    //
  //   UARTprintf ("温度=%3D*C 或%3D*F\r"、ui32TempValueC、
   //   ui32TempValueF);
    //
    //此函数提供了生成恒定长度的方法
    //延迟。  函数延迟(以周期为单位)= 3 *参数。  延迟
    //任意地250ms。
    //
#if defined (target_IS_TM4C129_RA0)||                      \
  已定义(TARGET_IS_TM4C129_RA1)||                      \
  已定义(TARGET_IS_TM4C129_RA2)
    SysCtlDelay (ui32SysClock / 12);
其他
    SysCtlDelay (SysCtlClockGet ()/12);
#endif
  }
控制台:  


****为项目 adcinbuilt 构建配置调试****

"C:\\ti\\ccsv8\\utils\\bin\\gmake"-k -j 4 all -O

构建目标:"adcinbuild.out"
调用:ARM 链接器
"c:/ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --advice:power="1、2、3、4、5、7、9、10、12"--define=ccs="ccs"--define_m4spdb --intrack_remot_display_ines=cintrack_remot_display_ine-display_infot/inature_code.xml-built_intrack_infot_remot_ine-control-core-control-ine_remote_display_remote_display_intrack_ine-control-cort_ine_display_ine_remote_display_intrack-ine-control-cortexpremote_display-ine_display-ine_display-intrack-ine_display-ine_display-ine_display-intrack_infote_display-corpremote_display-cort_infote_display-cort_remote_display-cort_ine_display-ine_display.htm#-cort /ti/TivaWare_C_Series-2.1.4.178/driverlib/ccs/Debug/driverlib.lib /ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/include /ti/ccsv8/tools/compiler/ti-cgt-arm_18.1.4.LTS/lib

错误#10056:重新定义符号"ResetISR":首先在"./startup_ccs.obj "中定义;在"./tm4c1294ncpdt_startup_ccs.obj "中重新定义
错误#10056:重新定义符号"g_pfnVectors ":首先在"./startup_ccs.obj"中定义;在"./tm4c1294ncpdt_startup_ccs.obj"中重新定义
备注#10371-D:(ULP 1.1)未检测到使用低功耗模式状态更改指令


>>编译失败
Makefile:144:目标'adcinbuild.out'的配方失败
未定义的首次引用
符号
------ --------
UARTIntHandler ./startup_ccs.obj

错误#10234-D:未解析的符号仍然存在
错误#10010:链接期间遇到错误;未生成"adcinbuild.out"
gmaked[1]:***[adcinbuild.out]错误1.
Makefile:140:目标'all'的配方失败
gmake:***[全部]错误2.

****构建完成****

问题:

说明资源路径位置类型
#10010 null:链接期间遇到错误;"adcinbuild.out"不是"adcinbuilt C/C++ problem"
"="">processors.wiki.ti.com/.../10234"> null:未解析的符号仍然是 adcinbuilt C/C++问题
gmake:***[All]错误2 adcinbuilt C/C++问题
gmake[1]:***[adcinbuild.out]错误1 adcinbuilt C/C++问题
重新定义了符号"g_pfnVectors ":首先在"./startup_ccs.obj "中定义;在"./tm4c1294ncppdt_startup_ccs.obj "中重新定义;null:重新定义了符号"g_pfnVectors ":首先在"./startup_ccs.obj 中定义;重新定义在".tm4c1294pccs_cinccin+ cinstartup cinct+cinct+cinct+cinct+cinct+cin
重新定义符号"ResetISR":首先在"./startup_ccs.obj "中定义;在"./tm4c1294ncppdt_startup_ccs.obj "中重新定义 null:重新定义符号"ResetISR":首先在"./startup_ccs.obj 中定义;在"./tm4c1294nct_startup_ccs_ccs.c+ cin+内重新定义
未解析的符号 UARTIntHandler、首先在./startup_ccs.obj adcinbuilt C/C++ problem 中引用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Arun、

    项目中似乎有两个 startup_ccs 文件。 可能有一个名为 startup_ccs.c、一个名为 tm4c1294ncpdt_startup_ccs.c 您需要删除其中一个、然后尝试重新编译。 我已经看到我自己的项目发生了几次这种情况、因此我确信这是最初的问题。

    如果您有进一步的编译问题、请告诉我并发布问题陈述、就像您在这篇文章中所做的那样!