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/CC2650:SPI_Transfer Stuck。

Guru**** 2595805 points
Other Parts Discussed in Thread: SYSBIOS, CC2650

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/577049/rtos-cc2650-spi_transfer-stuck

器件型号:CC2650
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

嗨,人好:)。

我正在尝试使用 SPI 驱动程序连接到我的 SD 卡。

从我第一次尝试发送第一个字节(0xFF)开始、SPI_Transfer 就会卡住。

以下是我的代码:


int main (空)

/*呼叫板初始化函数*/
Board_initGeneral();
spi_init();

/*启动内核。 *
/*UART_init();
UartLog_init (UART_open (Board_UART、NULL));
iCall_init();*/

Task_handle myTsk;
Task_Params taskParams;
ERROR_Block eb2;
ERROR_INIT (&eb2);
/*创建1个优先级为15的任务*/
Task_Params_init (&taskParams);
taskParams.STACKSIZE = 512;
taskParams.priority = 2;
myTsk = Task_create (myTskFunc3、&taskParams、&eb2);
if (myTsk == NULL){
System_abort ("任务创建失败");

BIOS_start();

返回(0);


无效 myTskFunc3 (UArg arg0、UArg arg1)

System_printf ("任务开始\n");
system_flush();

ExtFlash_open();


/*有关说明,请参阅 ExtFlash.h 文件*/
bool ExtFlash_open (void)

bool f;

hFlashPin = PIN_OPEN (&pinState、BoardFlashPinTable);

if (hFlashPin ==空)

返回 false;

/*确保 SPI 可用*/
f = SPI_OPEN (SPI_BIT_RATE);

如果(f)

rxSPI();


静态内联 UChar rxSPI()

SDSPIDataType rcvdat;

const uint8_t wbuf[]={0xFF};
int ret = SPI_WRITE (wbuf、sizeof (wbuf));  

静态 int spi_write (const uint8_t * buf、size_t len)

SPI_Transaction masterTransaction;

masterTransaction.count = len;
masterTransaction.txBuf =(void*) buf;
masterTransaction.arg =空;
masterTransaction.rxBuf =空;

返回 SPI_transfer (spiHandle、&masterTransaction)? 0:-1;//此处是程序被卡住的位置

静态 bool SPI_open (uint32_t 比特率)

/*将 SPI 配置为主接口*/
SPI_Params_init (&spiParams);
spiParams.bitrate =比特率;
spiParams.mode = SPI_MASTER;
spiParams.transferMode = SPI_MODE_BLOCKING;

/*尝试打开 SPI。 *
spiHandle = SPI_open (Board_SPI0、&spiParams);

return spiHandle!=空;

当我调试并观察 RTOS 时-扫描错误

我一直都得到-  

错误:扫描挂起队列时出现问题:JavaException:java.lang.exception:target memory read failed at address:0xbebebe、length:8根据应用程序的段映射,此读取位于无效地址。 应用程序可能未初始化或已损坏。"

我有几个油炸玉米饼-  

1.显而易见的。。。。 为什么会发生这种情况? 我不认为它与 SD 卡有关.. 我想我滥用了一个驱动程序.. 但我不知道是哪一个。

2.为了初始化 SD 卡、我需要将 MOSI 和 CS 设置为高电平、并向 SCLK 发送至少74个时钟脉冲。 是否有人知道我是否需要 使用 GPIO 驱动器将 MOSI 设置为高电平?

如果是、我是否使用 SPI 驱动器发送时钟脉冲? 这是否意味着我将两个驱动器与同一个引脚同时使用? 这是可以的吗?

3. RTOS 错误是否与程序被卡住的事实有关?

如果有任何帮助,我将不胜感激:)

谢谢、

体层器。

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

    Tomer、您好!

    [引用用户="Tomer Ben Moshe ]1. 显而易见的... 为什么会发生这种情况? 我不认为它与 SD 卡有关.. 我想我滥用了一个驱动程序.. 但我无法确定是哪一个。[/引述]

    有些事情看起来很奇怪。

    • 完成 rxSPI 后、myTskFunc3立即退出。

    您的任务中没有无限 while (1)循环、因此任务完成后立即退出。
    这是您的唯一任务、因此当唯一任务完成时、SYSBIOS 停止执行(或永远空闲-我可能不确定具体行为)
    这实际上可能是您收到错误消息的原因。

    [引用用户="Tomer Ben Moshe ]3. RTOS 错误是否与程序被卡住的事实有关?

    RTOS 错误应在您修复问题后立即消失。

    [引用用户="Tomer Ben Moshe "]

    2.为了初始化 SD 卡、我需要将 MOSI 和 CS 设置为高电平、并向 SCLK 发送至少74个时钟脉冲。 是否有人知道我是否需要 使用 GPIO 驱动器将 MOSI 设置为高电平?

    如果是、我是否使用 SPI 驱动器发送时钟脉冲? 这是否意味着我将两个驱动器与同一个引脚同时使用? 这是可以的吗?

    [/报价]

    遗憾的是、我不知道 SD 卡有什么可回答的问题。

    如果您没有获得该特定问题的答案、您可以浏览论坛、如果您没有找到答案、请将其作为单独的问题发布。

    此致、

    米歇尔

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

    Tomer、

    尝试在 main()函数中添加 PIN_init(),并检查 ExtFlash_open()的返回

    Derrick

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

    您好、

    它卡在 SPI_Transfer 处。 所以 ExtFlash_open()没有完成,所以我无法检查返回的结果。

    和 Board_initGeneral()内部:   

    #define Board_initGeneral(){\
    power_init();\
    if (PIN_init (BoardGpioInitTable)!= PIN_SUCCESS)\
    {System_abort (" PIN_INIT\n"\n 错误);\
    }\

    const PIN_Config BoardGpioInitTable[]={

    Board_RLED | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX,/* LED 最初关闭*/
    Board_GLED | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX,/* LED 最初关闭*/
    Board_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_迟滞、/*按钮为低电平有效*/
    Board_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_迟滞、/*按钮为低电平有效*/
    BOARD_SPI_FLASH_CS | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MIN、/*外部闪存芯片选择*
    Board_UART_RX | PIN_INPUT_EN | PIN_PULLUP、//通过调试器反向通道进行 UART RX *
    Board_UART_TX | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、//通过调试器反向通道进行 UART TX *
    BOARD_SPI0_MOSI | PIN_INPUT_EN | PIN_PUL拉 电阻、/* SPI 主器件输出-从器件输入*
    BOARD_SPI0_MISO | PIN_INPUT_EN | PIN_PULLUP、/* SPI 主器件输入-从器件输出*
    Board_SPI0_CLK | PIN_INPUT_EN | PIN_PULLUP、/* SPI 时钟*

    PIN_TERMINATE
    };

    该引脚配置是否正常?

    体层器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该任务从未完成、因为它只是在 SPI_Transfer 命令中挂起而永不继续。

    因此它永远不会进入空闲任务。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    顺便说一下...

    当我暂停调试、同时程序停止并观察 RTOS 时、我得到的结果如下:

    它与信号量有关。 有人知道信标为什么会发出这样的消息吗?

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

    Tomer、

    您的 BoardGpioInitTable 看起来正常。

    我可以告诉您、在等待传输完成的信标上、SPI 驱动程序被阻止。 PC 是内核中没有可用源代码的某个位置、因此出现消息"No source available (无可用源代码)"。 您能否发布 CC2650_LAUNCHXL.c 文件的 SPI DMA 部分?

    此外、您能否在 SPICC26XXDMA.c 中的以下函数的开头设置断点:

    SPICC26XXDMA_hwiFxn ()

    SPICC26XXDMA_swifxn ()

    Derrick

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

    Derrick、

    1.您询问的代码:

    /*

    * ========================================= SPI DMA begin ================================================================

    *

    /*放入子段以允许 TI 链接器正确删除项目*/

    #if defined (__TI_Compiler_version__)

    #pragma DATA_SECTION (SPI_CONFIG、".CONST:SPI_CONFIG")

    #pragma DATA_SECTION (spiCC26XXDMAHWAttrs、".const:spiCC26XXDMAHWAttrs")

    #endif

    /*包含驱动程序*/

    #include

    /* SPI 对象*/

    SPICC26XXDMA_Object spiCC26XXDMAObjects[CC2650_LAUNCHXL_SPICOUNT];

    /* SPI 配置结构、描述要使用的引脚*/

    CONST SPICC26XXDMA_HWAttrsV1 spiCC26XXDMAHWAttrs[CC2650_LAUNCHXL_SPICOUNT]={

      {

        baseAddr      = SSI0_BASE、

        .intNum       = INT_SSI0_comb、

        .intPriority    =~0、

        .wiPriority    = 0、

        powerMngrId    = PowerCC26XX_Periph_SSI0、

        defaultTxBufValue = 0、

        .rxChannelBitMask = 1<<UDMA_CHAN_SSI0_RX,

        txChannelBitMask = 1<<UDMA_CHAN_SSI0_TX,

        MOSIPin       = Board_SPI0_MOSI、

        MISO 引脚       = Board_SPI0_MISO、

        clkPin       = Board_SPI0_CLK、

        .csn 引脚       = Board_SPI0_CSn

      }、

      {

        baseAddr      = SSI1_base、

        .intNum       = INT_SSI1_COMB、

        .intPriority    =~0、

        .wiPriority    = 0、

        powerMngrId    = PowerCC26XX_Periph_SSI1、

        defaultTxBufValue = 0、

        .rxChannelBitMask = 1<<UDMA_CHAN_SSI1_RX,

        txChannelBitMask = 1<<UDMA_CHAN_SSI1_TX,

        MOSIPin       = Board_SPI1_MOSI、

        MISO 引脚       = Board_SPI1_MISO、

        clkPin       = Board_SPI1_CLK、

        .csn 引脚       = Board_SPI1_CSn

      }

    };

    /* SPI 配置结构*/

    CONST SPI_Config SPI_CONFIG[]={

      {

        .fxnTablePtr =&SPICC26XXDMA_fxnTable、

        .object   =&spiCC26XXDMAObjects[0]、

        hwAttrs  =&spiCC26XXDMAHHWAttrs[0]

      }、

      {

        .fxnTablePtr =&SPICC26XXDMA_fxnTable、

        .object   =&spiCC26XXDMAObjects[1]、

        hwAttrs  =&spiCC26XXDMAHHWAttrs[1]

      }、

      {NULL、NULL、NULL}

    };

    /*

    * ========================================= SPI DMA End ================================================================

    *

    2. 当我尝试启用断点时,您要求我获得以下结果:

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

    您是否在项目中使用优化? 如果是、您能否关闭并重建它。

    我怀疑您的应用程序从未将其用于上述函数、但除非我们可以放置断点、否则我们将无法判断。

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

    嘿、Derrick、

    您能否告诉您需要检查哪些内容以确保我的项目未进行优化?

    我无法使这些断点正常工作。  

    体层器。

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

    在 Code Composer Studio 中右键单击您的项目、然后导航到"Build">"ARM Compiler">"optimization"。 您希望将优化设置为关闭。

    根据我在屏幕截图中观察到的内容、您每次构建项目时都要构建驱动程序。

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

    您好、

    我有几个新的事实。

    我已经检查了是否有时钟脉冲被发送到正确的引脚并且有... 因此硬化会执行它应该执行的操作。

    2、即使在唯一行的任务中也是如此

    无效 myTskFunc3 (UArg arg0、UArg arg1)

        ExtFlash_open();

    会发生同样的情况(程序被卡住、原因相同- SPI_Write)

    因此、SPI 设置错误。

    3.我将我的 CCS 更新为7.1.. 我认为放置断点可能会更好、但新版本会出现相同的问题。

    优化器:

    问题是:

    其中有任何一项有用吗?

    体层器。

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

    这只是一个疯狂的猜测(希望 TI 的某人能够确认或驳斥我的说法),但您是否尝试在 ExtFlash_open()之后插入一个无限 while (1)循环;

    您如何知道它卡在 SPI_TRANSTER 中? 您后面没有代码行 ExtFlash_open();(因此没有要中断的代码)

    这是我的想法。
    我没有使用 SPI TI-RTOS 驱动程序进行时序方面的工作、但我有 MCU、在该 MCU 中、当最后一个字节被压入缓冲器(尚未从引脚上推出)时、会触发 SPI 中断。
    如果是这种情况、您的代码会退出 SPI_transfer、同时也会退出所有函数。 在这种情况下、您的任务也会退出。
    如果您放置 while (1)循环、则会使任务保持"活动"状态。

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

    ExtFlash 驱动程序编写得很好、调试也很简单。

    在 ExtFlash_open 方法上、我可以看到它到达了
    extFlashPowerStandby、在这里我可以看到它会上升到 SPI_WRITE、在这里它会进入"阻止"状态、
    我可以看到原因是"信标"。

    正如我在先前的帖子中所描述的那样。

    体层器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否检查并确保 ExtFlash_open 中的信号量不为 NULL (即未初始化)? 我假设信标是一个 Semaphore_handle、因此它应该是一个指针。

    我只是在那里提出一些想法、希望它可能会帮助或激发一个想法、帮助您解决这个问题。

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

    您还可以共享 CC2650_LAUNCHXL.c 文件吗?

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

    您好、两个、

    再次感谢您的观看。

    Michel - ExtFlash 驱动程序中没有信号量.. 只有 SPI_Open 和 SPI_Write 调用。 信号量位于 SPI 驱动器中、该代码更难读取和理解(但 TI 网站上有一个有关该驱动器的良好文档。 但我不明白我做了什么错。 -文档上的内容看起来非常简单:(

    )

    Derrick -

    这是文件-

    e2e.ti.com/.../7230.CC2650_5F00_LAUNCHXL.c

    /*
    *版权所有(c) 2016、德州仪器(TI)公司
    *保留所有权利。
    *
    *以源代码和二进制形式重新分发和使用、有无
    *如果满足以下条件、则允许进行修改
    符合*:
    *
    **源代码的重新分发必须保留上述版权
    *注意、此条件列表和以下免责声明。
    *
    **二进制形式的再发行必须复制上述版权
    *请注意、中的此条件列表和以下免责声明
    *随分发提供的文档和/或其他材料。
    *
    **德州仪器公司的名称和名称均不相同
    *其贡献者可用于认可或推广衍生产品
    *未经特定的事先书面许可。
    *
    *本软件由版权所有者和贡献者"按原样"提供
    *以及任何明示或暗示的保证、包括但不限于:
    *特定适销性和适用性的隐含保证
    *不承认目的。 在任何情况下、版权所有者不得或
    *派遣国应对任何直接、间接、偶然、特殊、
    *典型或必然的损害(包括但不限于
    *采购替代货物或服务;丧失使用、数据或利润;
    *或业务中断)、无论原因是什么以及任何责任理论、
    *无论是合同、严格责任还是侵权行为(包括疏忽或)
    *否则)因使用本软件而以任何方式产生、
    *即使被告知可能会发生此类损坏。
    *

    /*
    *================================= CC2650_LAUNCHXL.c ================================================
    *此文件负责为设置特定于电路板的项目
    * CC2650 LaunchPad。
    *


    /*
    *================================= 包括================================================================================================================
    *
    #include
    #include

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    #include
    #include
    #include
    #include

    #include

    /*
    *========================================= IO 驱动程序初始化===========================
    *在 main 中、应调用 PIN_init (BoardGpioInitTable)以设置安全
    此板的*设置。
    *当分配引脚然后取消分配时、它将恢复到状态
    *在该表中配置。
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (BoardGpioInitTable、".const:BoardGpioInitTable")
    #pragma DATA_SECTION (PINCC26XX_hwAttrs、".const:PINCC26XX_hwAttrs")
    #endif

    const PIN_Config BoardGpioInitTable[]={

    Board_RLED | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX,/* LED 最初关闭*/
    Board_GLED | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX,/* LED 最初关闭*/
    Board_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_迟滞、/*按钮为低电平有效*/
    Board_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_迟滞、/*按钮为低电平有效*/
    BOARD_SPI_FLASH_CS | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MIN、/*外部闪存芯片选择*
    Board_UART_RX | PIN_INPUT_EN | PIN_PULLUP、//通过调试器反向通道进行 UART RX *
    Board_UART_TX | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、//通过调试器反向通道进行 UART TX *
    BOARD_SPI0_MOSI | PIN_INPUT_EN | PIN_PUL拉 电阻、/* SPI 主器件输出-从器件输入*
    BOARD_SPI0_MISO | PIN_INPUT_EN | PIN_PULLUP、/* SPI 主器件输入-从器件输出*
    Board_SPI0_CLK | PIN_INPUT_EN | PIN_PULLUP、/* SPI 时钟*

    PIN_TERMINATE
    };

    const PINCC26XX_HWAttrs PINCC26XX_hwAttrs ={
    .intPriority =~0、
    .wiPriority = 0
    };
    /==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== *

    /*
    *========================================= 电源开始===================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (PowerCC26XX_CONFIG、".CONST:PowerCC26XX_CONFIG")
    #endif
    CONST PowerCC26XX_Config PowerCC26XX_CONFIG ={
    .policyInitFxn =空、
    policyFxn =&PowerCC26XX_standbyPolicy、
    .calibrateFxn =&PowerCC26XX_calibrate、
    .enablePolicy = true、
    .calibrateRCOSC_LF = true、
    .calibrateRCOSC_HF = true、
    };
    /*
    *========================================= 电源端================================================
    *

    /*
    *========================================= UART BEGIN ================================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (UART_CONFIG、".CONST:UART_CONFIG")
    #pragma DATA_SECTION (uartCC26XXHWAttrs、".const:uartCC26XXHWAttrs")
    #endif

    /*包含驱动程序*/
    #include
    #include

    /* UART 对象*/
    UARTCC26XX_Object uartCC26XX Objects[CC2650_LAUNCHXL_UARTCOUNT];

    /* UART 硬件参数结构、也用于分配 UART 引脚*/
    CONST UARTCC26XX_HWAttrsV1 uartCC26XXHWAttrs[CC2650_LAUNCHXL_UARTCOUNT]={

    baseAddr = UART0_BASE、
    powerMngrId = PowerCC26XX_Periph_UART0、
    .intNum = INT_UART0_comb、
    .intPriority =~0、
    .wiPriority = 0、
    txPin = Board_UART_TX、
    rxPin = Board_UART_RX、
    ctsPin = PIN_Unassigned、
    rtsPin = PIN_Unassigned

    };

    /* UART 配置结构*/
    const UART_Config UART_config[]={

    .fxnTablePtr =&UARTCC26XX_fxnTable、
    .object = uartCC26XX 对象[0]、
    .hwAttrs = uartCC26XXXHWAttrs[0]
    }、
    {NULL、NULL、NULL}
    };
    /*
    *========================================= UART 结束========================================================
    *

    /*
    *========================================= uDMA begin ================================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (UDMACC26XX_CONFIG、".CONST:UDMACC26XX_CONFIG")
    #pragma DATA_SECTION (udmaHWAttrs、".const:udmaHWAttrs")
    #endif

    /*包含驱动程序*/
    #include

    /* uDMA 对象*/
    UDMACC26XX_Object udmaObjects[CC2650_LAUNCHXL_UDMACOUNT];

    /* uDMA 配置结构*/
    CONST UDMACC26XX_HWAttrs udmaHWAttrs[CC2650_LAUNCHXL_UDMACOUNT]={

    baseAddr = UDMA0_BASE、
    powerMngrId = PowerCC26XX_Periph_UDMA、
    .intNum = INT_DMA_ERR、
    .intPriority =~0

    };

    /* uDMA 配置结构*/
    CONST UDMACC26XX_Config UDMACC26XX_CONFIG[]={

    .object = udmaObjects[0]、
    hwAttrs =&udmaHWAttrs[0]
    }、
    {NULL、NULL}
    };
    /*
    *========================================= uDMA 结束========================================================
    *

    /*
    *========================================= SPI DMA begin ================================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (SPI_CONFIG、".CONST:SPI_CONFIG")
    #pragma DATA_SECTION (spiCC26XXDMAHWAttrs、".const:spiCC26XXDMAHWAttrs")
    #endif

    /*包含驱动程序*/
    #include

    /* SPI 对象*/
    SPICC26XXDMA_Object spiCC26XXDMAObjects[CC2650_LAUNCHXL_SPICOUNT];

    /* SPI 配置结构、描述要使用的引脚*/
    CONST SPICC26XXDMA_HWAttrsV1 spiCC26XXDMAHWAttrs[CC2650_LAUNCHXL_SPICOUNT]={

    baseAddr = SSI0_BASE、
    .intNum = INT_SSI0_comb、
    .intPriority =~0、
    .wiPriority = 0、
    powerMngrId = PowerCC26XX_Periph_SSI0、
    defaultTxBufValue = 0、
    .rxChannelBitMask = 1<<UDMA_CHAN_SSI0_RX,
    txChannelBitMask = 1<<UDMA_CHAN_SSI0_TX,
    .mosipin = Board_SPI0_MOSI、
    MISO 引脚= Board_SPI0_MISO、
    clkPin = Board_SPI0_CLK、
    csnPin = Board_SPI0_CSn
    }、

    baseAddr = SSI1_base、
    .intNum = INT_SSI1_comb、
    .intPriority =~0、
    .wiPriority = 0、
    powerMngrId = PowerCC26XX_Periph_SSI1、
    defaultTxBufValue = 0、
    .rxChannelBitMask = 1<<UDMA_CHAN_SSI1_RX,
    txChannelBitMask = 1<<UDMA_CHAN_SSI1_TX,
    .mosipin = Board_SPI1_MOSI、
    MISO 引脚= Board_SPI1_MISO、
    clkPin = Board_SPI1_CLK、
    csnPin = Board_SPI1_CSn

    };

    /* SPI 配置结构*/
    CONST SPI_Config SPI_CONFIG[]={

    .fxnTablePtr =&SPICC26XXDMA_fxnTable、
    .object =&spiCC26XXDMAObjects[0]、
    hwAttrs =&spiCC26XXDMAHHWAttrs[0]
    }、

    .fxnTablePtr =&SPICC26XXDMA_fxnTable、
    .object =&spiCC26XXDMAObjects[1]、
    hwAttrs =&spiCC26XXDMAHHWAttrs[1]
    }、
    {NULL、NULL、NULL}
    };
    /*
    *========================================= SPI DMA End ================================================================
    *


    /*
    *========================================= I2C BEGIN================================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (I2C_CONFIG、".CONST:I2C_CONFIG")
    #pragma DATA_SECTION (i2cCC26xxHWAttrs、".const:i2cCC26xxHWAttrs")
    #endif

    /*包含驱动程序*/
    #include

    /* I2C 对象*/
    I2CCC26XX_Object i2cCC26xx Objects[CC2650_LAUNCHXL_I2CCOUNT;

    /* I2C 配置结构,描述要使用的引脚*/
    CONST I2CCC26XX_HWAttrsV1 i2cCC26xxHWAttrs[CC2650_LAUNCHXL_I2CCOUNT ={

    baseAddr = I2C0_BASE、
    powerMngrId = PowerCC26XX_Periph_I2C0、
    .intNum = INT_I2C_IRQ、
    .intPriority =~0、
    .wiPriority = 0、
    sdaPin = Board_I2C0_SDA0、
    .sclPin = Board_I2C0_SCL0、

    };

    /* I2C 配置结构*/
    const I2C_Config I2C_CONFIG[]={

    .fxnTablePtr =&I2CCC26XX_fxnTable、
    .object =&i2cCC26xx 对象[0]、
    hwAttrs =&i2cCC26xxHWAttrs[0]
    }、
    {NULL、NULL、NULL}
    };
    /*
    *========================================= I2C 结束========================================================
    *

    /*
    *========================================= 加密开始========================================================
    *注意:Crypto 实现应视为实验
    *未经验证!
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (CryptoCC26XX_config、".const:CryptoCC26XX_config")
    #pragma DATA_SECTION (cryptoCC26XXHWAttrs、".const:cryptoCC26XHWAttrs")
    #endif

    /*包含驱动程序*/
    #include

    /* Crypto 对象*/
    CryptoCC26XX_Object cryptoCC26XX Objects[CC2650_LAUNCHXL_CRYPTOCOUNT];

    /* Crypto 配置结构,描述要使用的引脚*/
    const CryptoCC26XX_HWAttrs cryptoCC26XXXXHWAttrs[CC2650_LAUNCHXL_CRYPTOCOUNT]={

    baseAddr = crypto_BASE、
    powerMngrId = PowerCC26XX_Periph_crypto、
    .intNum = INT_crypto_result_ave_IRQ、
    .intPriority =~0、

    };

    /* Crypto 配置结构*/
    const CryptoCC26XX_Config CryptoCC26XX_config[]={

    .object =加密 CC26XX 对象[0]、
    hwAttrs =加密 CC26XXXHWAttrs[0]
    }、
    {NULL、NULL}
    };
    /*
    *========================================= 加密结束========================================================
    *


    /*
    *========================================= 射频驱动程序 begin ========================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (RFCC26XX_hwAttrs、".const:RFCC26XX_hwAttrs")
    #endif

    /*包含驱动程序*/
    #include

    /*射频 hwi 和 swi 优先级*/
    const RFCC26XX_HWAttrs RFCC26XX_hwAttrs ={
    .hwiCpe0Priority =~0、
    .hwihwPriority =~0、
    .wiCpe0Priority = 0、
    .wswiPriority = 0、
    };

    /*
    *========================================= 射频驱动程序结束========================================================
    *

    /*
    *========================================= 显示开始===========================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (Display_CONFIG、".CONST:Display_CONFIG")
    #pragma DATA_SECTION (displaySharpHWattrs、".const:displaySharpHWattrs")
    #pragma DATA_SECTION (displayUartHWAttrs、".const:displayUartHWAttrs")
    #endif

    #include
    #include
    #include

    /*用于 UartPlain 阻塞的结构*/
    DisplayUart_Object displayUartObject;

    #ifndef Board_display_uart_stRBUF_size
    #define BOARD_DISPLAY_UART_STRBUF_SIZE 128
    #endif
    静态字符 uartStringBuf[Board_display_UART_STRBUF_SIZE];

    const DisplayUart_HWAttrs displayUartHWAttrs ={
    uartIdx = Board_UART、
    .budrate = 115200、
    .mutexTimeout = BIOS_wait_forever、
    .strBuf = uartStringBuf、
    strBufLen = Board_display_UART_STRBUF_size、
    };

    /*锋利的结构*/
    DisplaySharp 对象显示对象;

    #ifndef Board_display_share_size
    #define Board_display_shared_size 96 // 96->96x96是最常见的板,替代方案是128->128x128。
    #endif
    静态 uint8_sharpDisplayBuf[Board_display_sharp_size * Board_display_sharp_size / 8];

    const DisplaySharp HWAttrs displaySharpHWattrs ={
    spiIndex = Board_SPI0、
    csPin = Board_LCD_CS、
    extcominPin = Board_LCD_EXTCOMIN、
    powerPin = Board_LCD_POWER、
    .enablePin = Board_LCD_ENABLE、
    像素宽度= Board_display_sharp_size、
    像素高度= Board_display_sharp_size、
    .displayBuf = sharpDisplayBuf、
    };

    /*显示数组*/
    const Display_Config Display_config[]={
    #if!defined (Board_display_exclude_UART)

    .fxnTablePtr =&DisplayUart_fxnTable、
    .object =显示 UartObject (&D)、
    hwAttrs =&displayUartHWAttrs、
    }、
    #endif
    #if!defined (Board_display_exclude_LCD)

    .fxnTablePtr =&DisplaySharp_fxnTable、
    .object =显示共享对象(&D)、
    hwAttrs =&displaySharpHWattrs
    }、
    #endif
    { NULL、NULL、NULL }//终端器
    };

    /*
    *========================================= 显示结束=================================================
    *

    /*
    *========================================= GPTimer 开始========================================================
    *删除 Board.c 和 Board.h 中未使用的条目以减少闪存的使用
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (GPTimerCC26XX_CONFIG、".CONST:GPTimerCC26XX_CONFIG")
    #pragma DATA_SECTION (gptimerCC26xxHWAttrs、".const:gptimerCC26xxHWAttrs")
    #endif

    /* GPTimer 硬件属性,每个计时器部件一个(计时器0A、0B、1A、1B..) *
    CONST GPTimerCC26XX_HWAttrs gptimerCC26xxHWAttrs[CC2650_LAUNCHXL_GPTIMERPARTSCOUNT]={
    {.baseAddr = GPT0_BASE、.intNum = INT_GPT0A、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT0、.pinMux = GPT_PIN_0A、 }、
    {.baseAddr = GPT0_BASE、.intNum = INT_GPT0B、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT0、.pinMux = GPT_PIN_0B、 }、
    {.baseAddr = gp1_BASE、.intNum = INT_GPT1A、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT1、.pinMux = GPT_PIN_1A、 }、
    {.baseAddr = gp1_BASE、.intNum = INT_GPT1B、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT1、.pinMux = GPT_PIN_1B、 }、
    {.baseAddr = GPT2_base、.intNum = INT_GPT2A、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT2、.pinMux = GPT_PIN_2A、 }、
    {.baseAddr = GPT2_base、.intNum = INT_GPT2B、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT2、.pinMux = GPT_PIN_2B、 }、
    {.baseAddr = GPT3_base、.intNum = INT_GPT3A、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT3、.pinMux = GPT_PIN_3A、 }、
    {.baseAddr = GPT3_base、.intNum = INT_GPT3B、.intPriority =(~0)、.powerMngrId = PowerCC26XX_Periph_GPT3、.pinMux = GPT_PIN_3B、 }、
    };

    /* GPTimer 对象、每个全宽定时器(A+B)一个(定时器0、定时器1) *
    GPTimerCC26XX_Object gptimerCC26XX 对象[CC2650_LAUNCHXL_GPTIMERCOUNT];

    /* GPTimer 配置(被驱动程序和应用程序用作 GPTimer_handle)*/
    CONST GPTimerCC26XX_Config GPTimerCC26XX_CONFIG[CC2650_LAUNCHXL_GPTIMERPARTSCOUNT]={
    {&gptimerCC26XX 对象[0]、&gptimerCC26xxHWAttrs[0]、GPT_A}、
    {&gptimerCC26XX 对象[0]、&gptimerCC26xxHWAttrs[1]、GPT_B}、
    {&gptimerCC26XX 对象[1]、&gptimerCC26xxHWAttrs[2]、GPT_A}、
    {&gptimerCC26XX 对象[1]、&gptimerCC26xxHWAttrs[3]、GPT_B}、
    {&gptimerCC26XX 对象[2]、&gptimerCC26xxHWAttrs[4]、GPT_A}、
    {&gptimerCC26XX 对象[2]、&gptimerCC26xxHWAttrs[5]、GPT_B}、
    {&gptimerCC26XX 对象[3]、&gptimerCC26xxHWAttrs[6]、GPT_A}、
    {&gptimerCC26XX 对象[3]、&gptimerCC26xxHWAttrs[7]、GPT_B}、
    };

    /*
    *========================================= GPTimer 结束========================================================
    *

    /*
    *========================================= PWM 开始========================================================
    *删除 Board.c 和 Board.h 中未使用的条目以减少闪存的使用
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (PWM_CONFIG、".CONST:PWM_CONFIG")
    #pragma DATA_SECTION (pwmtimerCC26xxHWAttrs、".const:pwmtimerCC26xxHWAttrs")
    #endif

    /* PWM 配置、每个 PWM 输出一个。 *
    PWMTimerCC26XX_HwAttrs pwmtimerCC26xxHWAttrs[CC2650_LAUNCHXL_PWMCOUNT ={
    {.pwmPin = Board_PWMPIN0、.gpTimerUnit = Board_GPTIMER0A}、
    {.pwmPin = Board_PWMPIN1、.gpTimerUnit = Board_GPTIMER0B}、
    {.pwmPin = Board_PWMPIN2、.gpTimerUnit = Board_GPTIMER1A}、
    {.pwmPin = Board_PWMPIN3、.gpTimerUnit = Board_GPTIMER1B}、
    {.pwmPin = Board_PWMPIN4、.gpTimerUnit = Board_GPTIMER2A}、
    {.pwmPin = Board_PWMPIN5、.gpTimerUnit = Board_GPTIMER2B}、
    {.pwmPin = Board_PWMPIN6、.gpTimerUnit = Board_GPTIMER3A}、
    {.pwmPin = Board_PWMPIN7、.gpTimerUnit = Board_GPTIMER3B}、
    };

    /* PWM 对象、每个 PWM 输出一个*/
    PWMTimerCC26XX_Object pwmtimerCC26xx 对象[CC2650_LAUNCHXL_PWMCOUNT;

    extern const PWM_FxnTable PWMTimerCC26XX_fxnTable;

    /* PWM 配置(由驱动程序和应用程序用作 PWM_Handle)*/
    CONST PWM_Config PWM_CONFIG[CC2650_LAUNCHXL_PWMCOUNT + 1]={
    {&PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[0]、&pwmtimerCC26xxHWAttrs[0]}、
    {PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[1]、&pwmtimerCC26xxHWAttrs[1]}、
    {&PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[2]、&pwmtimerCC26xxHWAttrs[2]}、
    {&PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[3]、&pwmtimerCC26xxHWAttrs[3]}、
    {&PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[4]、&pwmtimerCC26xxHWAttrs[4]}、
    {PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[5]、&pwmtimerCC26xxHWAttrs[5]}、
    {&PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[6]、&pwmtimerCC26xxHWAttrs[6]}、
    {&PWMTimerCC26XX_fxnTable、&pwmtimerCC26xxObjects[7]、&pwmtimerCC26xxHWAttrs[7]}、
    { NULL、NULL、NULL }
    };


    /*
    *========================================= PWM 结束========================================================
    *

    /*
    *========================================= ADCBuf BEGIN ================================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (ADCBuf_config、".const:ADCBuf_config")
    #pragma DATA_SECTION (adcBufCC26xxHWAttrs、".const:adcBufCC26xxHWAttrs")
    #pragma DATA_SECTION (ADCBufCC26XX_adcChannelLut、".const:ADCBufCC26XX_adcChannelLut")
    #endif

    /*包含驱动程序*/
    #include
    #include

    /* ADCBuf 对象*/
    ADCBufCC26XX_Object adcBufCC26xxObjects[CC2650_LAUNCHXL_ADCBufCOUNT;

    /*
    *此表将虚拟 ADC 通道转换为 dio 和内部模拟输入信号。
    *此表是 adcBuf 驱动程序运行所必需的。
    *注释掉未使用的条目以保存闪存。
    * DIO 和内部信号对通过硬接线连接。 不要在表中重新映射它们。 不过,您可以对整个条目重新排序。
    * dio 和内部信号的映射取决于封装。
    *
    const ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLutt[]={
    {PIN_Unassigned、ADC_COMPB_IN_VDDS}、
    {PIN_Unassigned、ADC_COMPB_IN_DCOUPL}、
    {PIN_Unassigned、ADC_COMPB_IN_VSS}、
    {Board_DIO23_ANALOG、ADC_COMPB_IN_AUXIO7}、
    {Board_DIO24_ANALOG、ADC_COMPB_IN_AUXIO6}、
    {Board_DIO25_ANALOG、ADC_COMPB_IN_AUXIO5}、
    {Board_DIO26_ANALOG、ADC_COMPB_IN_AUXIO4}、
    {Board_DIO27_ANALOG、ADC_COMPB_IN_AUXIO3}、
    {Board_DIO28_ANALOG、ADC_COMPB_IN_AUXIO2}、
    {Board_DIO29_ANALOG、ADC_COMPB_IN_AUXIO1}、
    {Board_DIO30_ANALOG、ADC_COMPB_IN_AUXIO0}、
    };

    CONST ADCBufCC26XX_HWAttrs adcBufCC26xxHWAttrs[CC2650_LAUNCHXL_ADCBufCOUNT ={

    .intPriority =~0、
    .wiPriority = 0、
    .adcChannelLut = ADCBufCC26XX_adcChannelLut、
    .gpTimerUnit = Board_GPTIMER0A、
    .gptDMAChannelMask = 1 << UDMA_CHAN_TIMER0_A、

    };

    CONST ADCBuf_Config ADCBuf_config[]={
    {&ADCBufCC26XX_fxnTable、&adcBufCC26xxObjects[0]、&adcBufCC26xxHWAttrs[0]}、
    {NULL、NULL、NULL}、
    };
    /*
    *========================================= ADCBuf End ================================================================
    *

    /*
    *========================================= ADC 开始================================================================
    *
    /*放入子段以允许 TI 链接器正确删除项目*/
    #if defined (__TI_Compiler_version__)
    #pragma DATA_SECTION (ADC_CONFIG、".CONST:ADC_CONFIG")
    #pragma DATA_SECTION (adcCC26xxHWAttrs、".const:adcCC26xxHWAttrs")
    #endif

    /*包含驱动程序*/
    #include
    #include

    /* ADC 对象*/
    ADCCC26XX_Object adcCC26xxObjects[CC2650_LAUNCHXL_ADCCOUNT];


    const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[CC2650_LAUNCHXL_ADCCOUNT]={

    .adcDIO = Board_DIO23_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO7、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO24_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO6、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO25_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO5、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO26_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO4、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO27_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO3、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO28_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO2、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO29_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO1、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = Board_DIO30_ANALOG、
    .adcCompBInput = ADC_COMPB_IN_AUXIO0、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_10P9_MS、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = PIN_Unassigned、
    .adcCompBInput = ADC_COMPB_IN_DCOUPL、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = PIN_Unassigned、
    .adcCompBInput = ADC_COMPB_IN_VSS、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL
    }、

    .adcDIO = PIN_Unassigned、
    .adcCompBInput = ADC_COMPB_IN_VDDS、
    .refSource = ADCCC26XX_fixed_reference、
    .samplingDuration = ADCCC26XX_SAMPLING_DURAY_2P7_US、
    .inputScalingEnabled = true、
    triggerSource = ADCCC26XX_TRIGGER_MANUAL

    };

    const ADC_Config ADC_CONFIG[]={
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[0]、&adcCC26xxHWAttrs[0]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[1]、&adcCC26xxHWAttrs[1]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[2]、&adcCC26xxHWAttrs[2]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[3]、&adcCC26xxHWAttrs[3]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[4]、&adcCC26xxHWAttrs[4]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[5]、&adcCC26xxHWAttrs[5]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[6]、&adcCC26xxHWAttrs[6]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[7]、&adcCC26xxHWAttrs[7]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[8]、&adcCC26xxHWAttrs[8]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[9]、&adcCC26xxHWAttrs[9]}、
    {&ADCCC26XX_fxnTable、&adcCC26xxObjects[10]、&adcCC26xxHWAttrs[10]}、
    {NULL、NULL、NULL}、
    };

    /*
    *========================================= ADC 结束========================================================
    *

    体层器。

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

    我已经尝试了以下功能:
    空心跳 Fxn (UARg arg0、UARg arg1)


    while (1){
    PIN_setOutputValue (hFlashPin、Board_SPI_FLASH_CS、Board_FLASH_CS_ON);
    SPI_transfer (spiHandle、&RDID);
    SPI_transfer (spiHandle、读取);
    PIN_setOutputValue (hFlashPin、Board_SPI_FLASH_CS、Board_FLASH_CS_OFF);
    //printf ("manId:%x、memType:%x、memDens:%x "、wbufAns[0]、wbufAns[1]、 wbufAns[2]);

    PIN_setOutputValue (hFlashPin、Board_SPI_FLASH_CS、Board_FLASH_CS_ON);
    SPI_transfer (spiHandle、&RMS);
    SPI_transfer (spiHandle、读取);
    PIN_setOutputValue (hFlashPin、Board_SPI_FLASH_CS、Board_FLASH_CS_OFF);
    //printf ("DevID:%x \n"、wbufAns[1]);
    Task_sleep ((UINT) arg0);
    PIN_setOutputValue (ledPinHandle、Board_LED0、
    !PIN_getOutputValue (Board_LED0));



    当我进行调试时、代码在 SPI_transfer 上像往常一样卡住。

    但接下来发生了一些令人难以动的事情。 当我停止程序时-指示灯闪烁、因为代码执行了它应该执行的操作!

    这意味着只有在调试时它才会卡住。 当我退出调试时、芯片会执行它应该执行的操作。

    我可以修复调试模式吗? 这将真正帮助我


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

    您能否确认 PIN_init()不会被多次调用? 如果是,请删除所有重复的呼叫。

    一种快速检查的方法是在 PIN_init()中放置一个断点,并确保您不会在那里中断多次。

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

    只为未来几代更新您的所有内容。

    我有2个问题:调试器使程序卡住、任务中内存不足。

    因为一开始我以为它可能是内存、我增加了内存并对其进行了调试、但它仍然被卡住(我没有想到调试器本身会出现问题)、  

    然后我意识到它不是内存。

    现在我无法进行调试、因此我使用调试打印。 我不知道为什么调试器会使它卡住。

    我使我的程序正常工作、但是如果有人认为他们知道调试器为什么这样做、我仍然有兴趣知道。

    体层器。

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

    调试器和 SPI 存在已知问题。

    e2e.ti.com/.../454284

    我建议您升级到最新的 Debug DevPack XDS110固件(版本2.3.0.1)。

    Derrick
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于原始海报中没有活动、我将关闭此功能。