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.

[参考译文] RTOS/TM4C123GH6PM:RTOS/TM4C123GH6PM:

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/608506/rtos-tm4c123gh6pm-rtos-tm4c123gh6pm

器件型号:TM4C123GH6PM

工具/软件:TI-RTOS

我正在使用 TM4C123GH6PM 开发 TIRTOS 平台。 我想使用类和对象的概念创建使用 C++的 LED 切换。 下面是我使用一个 IDLE 函数并尝试切换 LED 的代码。 我的代码位于.cpp 扩展名上。 我已从编译中排除 empty.c 文件、因为它不支持类和对象。  

#include //mand强制-对于 BIOS 类型
#include、必须首先包含 //mandedis-如果您调用诸如 BIOS_start()
#include 之类的 API //needed 用于任何 Log_info()调用
#include 用于静态定义的对象/句柄
#include 的//头文件 
#include 

#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "driverlib/timer.h"

void hardware_init (void);
void ledToggle1 (void);
void main (void)
{
hardware_init (); //通过 Xware
BIOS_start()初始化硬件; //启动 BIOS 调度程序(从不返回)
类 LED_Status
{

public:
int on;
int off;
};
LED_Status;
status.on=8;
status.off=0;

}

void hardware_init (void)
{
//将 CPU 时钟设置为40MHz。 400MHz PLL/2 = 200 DIV 5 = 40MHz
SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTAL_16MHz|SYSCTL_MAIN);
//添加 Tiva-C GPIO 设置-启用端口、为输出








设置引脚1-3 (SysCtl)引脚、以输出状态为1 (GPIO_P0_GPIOPTF);// GPIOPTL (P0_IN_IN_IN_IN_IN_TOP0_INL);// GPIOPTL (P0_IN_IN_IN_IN_IN_IN_IN_TOP0_IN_IN_IN_IN_IN_IN_INL);GPIOPTL (IN_IN_IN_IN_IN_IN_TOP0_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_INTRL (IN_IN_IN_INTRL


编译.cp 文件时出现以下错误。

说明资源路径位置类型
#10010链接期间遇到错误;"rtos1.out"未构建 rtos1 C/C++问题
#10234-D 未解析的符号仍然是 rtos1 C/C++问题
未解析的符号 ledToggle1、首先在 E:\DG\rtos1\Debug\configPkg\package\cg\empty_pem4f.oem4f rtos1 C/C++ problem 中引用
未解析的符号 main、首先在 C:\ti\ccsv6\tools\compiler\ti-cgt-arm_5.2.5\lib\rtsv7M4_T_le_v4SPD16_eabi.lib 中引用 rtos1 C/C++问题

如何解决这个问题。 我必须使用 C++概念、如类和对象。  

此代码在非 RTOS .cpp 文件上运行正常、但在这里不起作用

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

    您刚才提到的编译器告诉您错误的地方。

    [引用 USER="Madhusudan Kumar"]未解析的符号 ledToggle1,首先在 E:\DG\rtos1\Debug\configPkg\package\cg\empty_pem4f.oem4f rtos1[/quot]中引用

    因此、您的程序无法找到 ledToggle、但您不会向我们显示它引用的文件。 有多种可能、函数类型 mismatcn、C/C++不匹配、或者您未将文件包含在链接中。

    [引用 USER="Madhusudan Kumar"]未解析的符号 main、首先在 C:\ti\ccsv6\tools\compiler\ti-cgT-arm_5.2.5\lib\rtsv7M4_T_le_v4SPD16_eabi.lib中引用

    这一个比较微妙。 您尚未针对 C++正确声明 main。 例如、请参阅 https://stackoverflow.com/questions/4207134/what-is-the-proper-declaration-of-main

    您也可能没有正确设置链接。

    最后、您的编译器应该抱怨 ledToggle1中没有状态定义。 这并不会导致我认为您不是在编译 C++文件

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Robert。 我听取了您的建议并进行了纠正。 我还使用了 extern "C"并在其中定义了函数。 非常感谢。