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:TM4C 微控制器论坛

Guru**** 670150 points
Other Parts Discussed in Thread: EK-TM4C1294XL, TPS2052
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/633325/ccs-tm4c1294ncpdt-tm4c-microcontrollers-forum

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:EK-TM4C1294XLTPS2052

工具/软件:Code Composer Studio

这是 PWM 的驱动程序代码、发现以下错误。

//
//
// pinout.c -用于配置 EK-TM4C1294XL 上的器件引脚的函数。
//
//版权所有(c) 2013-2016 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
//德州仪器(TI)仅提供和使用此软件
//专门用于 TI 的微控制器产品。 该软件归其所有
// TI 和/或其供应商、受适用版权保护
//法律。 您不能将此软件与"病毒"开源软件结合使用
//软件,以便形成一个更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//不作任何明示、暗示或法定的保证,包括但
//不限于对适销性和适用性的暗示保证
//此软件的特定用途。 TI 不得以任何方式进行
//情况,对特殊、偶然或从属事件负责
//任何原因造成的损害。
//
//这是 EK-TM4C1294XL 固件包版本2.1.3.156的一部分。
//
//

#include
#include
#include "inc/hw_gpio.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "drivers/pinout.h"

//
//
//! 添加组 pinout_API
//! @{
//
//

//
//
//! 针对 EK-TM4C1294XL 上的标准用法配置器件引脚。
//!
//! \param bethernet 是一个布尔值、用于确定以太网引脚的功能。
//! 如果真以太网引脚配置为以太网 LED。 GPIO 是否为假
//! 可供应用使用。
//! \param bUSB 是用于确定 USB 引脚功能的布尔值。 如果是真正的 USB
//! 引脚配置为供 USB 使用。 如果为 false、则 USB 引脚可用于
//! 应用程序用作 GPIO。
//!
//! 此函数用于启用 GPIO 模块并配置器件引脚
//! EK-TM4C1294XL 上的默认标准用法。 应用程序
//! 器件引脚的替代配置无法调用
//! 此功能、并负责配置所有器件
//! 引脚、也可以在调用此引脚后重新配置所需的器件引脚
//! 功能。
//!
//! \无返回。
//
//
无效
PinoutSet (bool bEthernet、bool bUSB)

//
//启用所有 GPIO 外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOH);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOM);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPION);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);

//
// PA0-1用于 UART0。
//
ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

//
// PB0-1/PD6/PL6-7用于 USB。
// PQ4可用作此板上的电源故障检测,但不能用作
//硬件外设电源故障输入引脚。
//
if (bUSB)

HWREG (GPIO_PORTD_BASE + GPIO_O_LOCK)= GPIO_LOCK_KEY;
HWREG (GPIO_PORTD_BASE + GPIO_O_CR)= 0xff;
ROM_GPIOPinConfigure (GPIO_PD6_USB0EPEN);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
ROM_GPIOPinTypeUSBDigital (GPIO_PORTD_BASE、GPIO_PIN_6);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTL_BASE、GPIO_PIN_6 | GPIO_PIN_7);
ROM_GPIOPinTypeGPIOInput (GPIO_PORTQ_BASE、GPIO_PIN_4);

其他

//
//保持 USB 使用的大多数引脚的默认配置。
//向 PD6添加下拉电阻以关闭 TPS2052开关
//
ROM_GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_6);
MAP_GPIOPadConfigSet (GPIO_PORTD_base、GPIO_PIN_6、GPIO_Strength _2mA、
GPIO_PIN_TYPE_STD_WPD);

//
// PF0/PF4用于以太网 LED。
//
if (bethernet)

//
//此应用程序要配置以太网 LED 功能。
//
ROM_GPIOPinConfigure (GPIO_PF0_EN0LED0);
ROM_GPIOPinConfigure (GPIO_PF4_EN0LED1);

GPIOPinTypeEthernetLED (GPIO_PORTF_BASE、GPIO_PIN_0 | GPIO_PIN_4);


其他

//
//此应用程序不希望以太网 LED 功能配置为
//用于 LED 驱动的标准输出。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_0 | GPIO_PIN_4);

//
//将 LED 默认为关闭。
//
ROM_GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0 | GPIO_PIN_4、0);
MAP_GPIOPadConfigSet (GPIO_PORTF_BASE、GPIO_PIN_0 | GPIO_PIN_4、
GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);


//
// PJ0和 J1用于用户按钮
//
ROM_GPIOPinTypeGPIOInput (GPIO_PORTJ_BASE、GPIO_PIN_0 | GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_PORTJ_BASE、GPIO_PIN_0 | GPIO_PIN_1、0);

//
// PN0和 PN1用于用户 LED。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_0 | GPIO_PIN_1);
MAP_GPIOPadConfigSet (GPIO_PORTN_BASE、GPIO_PIN_0 | GPIO_PIN_1、
GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);

//
//将 LED 默认为关闭。
//
ROM_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0 | GPIO_PIN_1、0);

//
//
//! 此函数将状态写入 LED 组。
//!
//! param ui32LEDDMASK 是一个位掩码、应通过此掩码来更改 GPIO
//! 调用。
//! \param ui32LEDValue 是在之后应用到 LED 的新值
//! ui32LEDMASK。
//!
//! 第一个参数充当掩码。 仅限掩码中已设置的位
//! 将对应于可能发生变化的 LED。 掩码未设置的 LED
//! 不会改变。 这与 GPIOPinWrite 的工作方式相同。 在应用后
//! 屏蔽将每个未屏蔽的 LED 的设置写入相应的
//! 通过 GPIOPinWrite 的 LED 端口引脚。
//!
//! \无返回。
//
//
无效
LEDWrite (uint32_t ui32LEDMASK、uint32_t ui32LEDValue)

//
//检查掩码并按照指示设置或清除 LED。
//
if (ui32LEDDMASK 和 CLP_D1)

if (ui32LEDValue 和 CLP_D1)

GPIOPinWrite (CLP_D1_PORT、CLP_D1_PIN、CLP_D1_PIN);

其他

GPIOPinWrite (CLP_D1_PORT、CLP_D1_PIN、0);

if (ui32LEDDMASK 和 CLP_D2)

if (ui32LEDValue 和 CLP_D2)

GPIOPinWrite (CLP_D2_PORT、CLP_D2_PIN、CLP_D2_PIN);

其他

GPIOPinWrite (CLP_D2_PORT、CLP_D2_PIN、0);

if (ui32LEDDMASK 和 CLP_D3)

if (ui32LEDValue 和 CLP_D3)

GPIOPinWrite (CLP_D3_PORT、CLP_D3_PIN、CLP_D3_PIN);

其他

GPIOPinWrite (CLP_D3_PORT、CLP_D3_PIN、0);

if (ui32LEDDMASK 和 CLP_D4)

if (ui32LEDValue 和 CLP_D4)

GPIOPinWrite (CLP_D4_PORT、CLP_D4_PIN、CLP_D4_PIN);

其他

GPIOPinWrite (CLP_D4_PORT、CLP_D4_PIN、0);


//
//
//! 此函数将状态读取到 LED 组。
//!
//! \param pui32LEDValue 是一个指向 LED 值存储位置的指针。
//!
//! 此函数读取 CLP LED 的状态并存储该状态
//! pui32LEDValue 指向的变量中的信息。
//!
//! \无返回。
//
//
空 LEDRead (uint32_t * pui32LEDValue)

*pui32LEDValue=0;

//
//读取引脚状态并根据需要设置变量位。
//
if (GPIOPinRead (CLP_D4_port、CLP_D4_PIN))

*pui32LEDValue |= CLP_D4;

//
//读取引脚状态并根据需要设置变量位。
//
if (GPIOPinRead (CLP_D3_PORT、CLP_D3_PIN))

*pui32LEDValue |= CLP_D3;

//
//读取引脚状态并根据需要设置变量位。
//
if (GPIOPinRead (CLP_D2_PORT、CLP_D2_PIN))

*pui32LEDValue |= CLP_D2;

//
//读取引脚状态并根据需要设置变量位。
//
if (GPIOPinRead (CLP_D1_PORT、CLP_D1_PIN))

*pui32LEDValue |= CLP_D1;

//
//
//关闭 Doxygen 组。
//! @}
//
//

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的主题行(非常)有了很大的改进-很好。

    可能我建议您-而是-加载供应商的"简单、标准程序示例"-使其成功运行-然后(逐步和有条不紊)添加您所需的代码函数-"一次一个"。 这就是著名(和高效)技术"kiss"的例证、为您的持续学习和 MCU 掌握提供了出色的指导和基础...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的错误表示编译器找不到头文件。 这表明存在路径设置错误。

    CCS 在管理配置信息方面很糟糕、而且记录的也很糟糕。 CB1的建议可能是最有成效的建议(这是对 CCS 的起诉)。

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    回复:很棒/很有灵感(上面)标签:"管道很复杂、足以(接近)"自动停止"。

    在过去的一天里——回到纽约——“水驱动的,适当的。 散热器加热减少了"-我们"撞上管道!" (管道)。
    似乎(仅)今天需要"不同形式"的锤子...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但管道(也保持热)可能需要在 SW_ROOT 下找到丢失的(pinout.h)文件。