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.

[参考译文] CC2640R2F:使用 GGS_SetParameter 函数时程序停止

Guru**** 2595780 points
Other Parts Discussed in Thread: CC2640R2F, CC2640, CC2650, CC1350

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/573937/cc2640r2f-program-halt-when-using-ggs_setparameter-function

器件型号:CC2640R2F
主题中讨论的其他器件: CC2640CC2650CC1350

尊敬的先生/女士:

我正在使用 CC2640R2F 进行开发。

我的程序在应用 GGS_SetParameter 函数时停止。

当我跟踪以下流程时:

(1)    GGS_SetParameter (GGS_DEVICE_NAME_ATT);              然后,

(2)    profileSetParameter (param、len、value、disping_gap_gatt_serv、 disping_profile_set_param、 matchGGSSetParamCS);        然后、

(3)     sendWaitMatchCS (iCall_getEntityId()、msg、matchCSFn);            然后、

(4)    errno = iCall_sendServiceMsg (src、ICALL_SERVICE_CLASS_BLE、 ICALL_MSG_FORMAT_3rd_char_task_ID、msg);              然后、

(5)    iCall_send (src、dstentity、format、msg);                然后、

(6)    iCall_MsgHdr *HDR =(iCall_MsgHdr *) msg -1;        然后,  --- > 迹线突然丢失、然后

如下反汇编显示中所示的程序停止:

0x37f8:0xbeab     BKPT    #0xab

我正在 从 simple_Peripheral 开发、并希望使用定制广播数据进行可连接广播。

请帮助。

谢谢、

KF

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

    您能否提供更多信息? 您对该项目进行了哪些其他修改?

    在我们的开箱即用示例中、您要使用的函数已就位。
    //设置间隙特性
    GGS_SetParameter (GGS_DEVICE_NAME_ATT、GAP_DEVICE_NAME_LEN、attDeviceName);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christin:

    我正在从 simple_peripheral 项目开发名为 fbt1的 BLE 应用。

    我的问题是:--- >当我从 static void simpleperipheralBLEPeripheral_init (void)中拉出一条语句以在其他位置进行处理时、我的程序暂停。

    错误显示在反汇编代码中:
    0x37f8:0xbeab BKPT ---- >程序在此处停止。

    语句 I pull out (函数内部静态 void simpleperipheralBLEPeripheral_init (void))为:
    //设置间隙
    GAP_SetParamValue (TGAP_CONN_PAUSE_PERUSTRUST、DEFAULT_CONN_PAUSE_PERUSTRUST);

    我在文件 GapProfileApp.c 中处理此语句,该文件是我创建的,位于:fbb_kF\fbubfunction src\app,void (void GapProfileApp_Init (void)):

    void GapProfileApp_Init (void)

    /*设置间隙*/
    GAP_SetParamValue (TGAP_CONN_PAUSE_PERUSTRUST、DEFAULT_CONN_PAUSE_PERUSTRUST);
    返回;


    其他流程与默认流程相同。 我已经运行它、然后程序停止。


    让我解释一下我的文件结构和问题:
    在 simple_peripheral.c 文件中:static void simpleperipheralBLEPeripheral_init (void),
    我已执行一条语句:GAP_SetParamValue (TGAP_CONN_PAUST_PERUSTRUST、DEFAULT_CONN_PAUSE_PERUST);
    并将其放入名为:void GapProfileApp_Init (void)的函数中。


    void GapProfileApp_Init (void)是我自己创建的一个函数,位于名为 GapProfleApp.c 的文件中。

    我正在使用 IAR IDE、所有代码(堆栈和应用)"Rebuild All"已成功。

    我的文件结构如下:

    在我的整个项目文件夹中:
    -->我有(1)我的项目(fb7)、(2) simplelink_cc2640r2_sdk_1_00_00_22和(3) xdctools_3_32_01_22_core。

    我已将我的项目(fbr7)从 simplelink_cc2640r2_sdk_1_00_00_22\examples\rtos\CC2640R2_LAUNCHXL\blestack 上的同一级别移动到 simplelink_cc2640r2_sdk_1_00_00_22外部。 我已将所有路径配置为正确并成功编译。
    在我的项目(fb1)中,结构与 simpleperipheral 相同。
    唯一的区别是、我已将产品功能的一些用户代码添加到项目(fbbine)文件夹内名为"Profiles"的文件夹中。 与"src"和"tirtos"的级别相同

    我还尝试了:
    void simpleperipheralBLEPeripheral_init (void)(无静态)、然后在.h 文件中添加 extern void simpleperipheralBLEPeripheral_init (void)。 它未通过相同的错误消息。


    请帮助。


    非常感谢。

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

    我正在对同一问题进行故障排除:

    在我的函数 GapProfileApp__Init()中,以下是:

    void GapProfileApp_Init (void)

    /*设置间隙*/
    GAP_SetParamValue (TGAP_CONN_PAUSE_PERUSTRUST、DEFAULT_CONN_PAUSE_PERUSTRUST);
    返回;


    我的调试如下:


    (1)我将 GapProfileApp__Init()置于 int main()内部,在 GAPRole_createTask()之间; 和 fbBriBLEPeripheral_createTask();
    ,它不会导致程序停止。


    (2)然后,我放置了 GapProfileApp_Init(); 在 void fbBriBLEPeripheral_createTask (void)内部、
    语句之前:Task_construct(&sbpTask, FoboBridgeBLEPeripheral_taskFxn,&taskParams, NULL ); 、
    ,它不会导致程序停止。


    (3)然后,我放置了 GapProfileApp_Init(); 在静态空 fbBriBLEPeripheral_taskFxn (UARg a0、UARg A1)内、before 语句:fbBriBLEPeripheral_init(); ,它不会导致程序停止。


    (3)然后将 GapProfileApp__Init()放入; 在 void fbBriBLEPeripheral_init (void)内,作为第一条语句,位于 iCall_registerApp (&selfEntity,&synctEvent)之前;它不会导致程序停止。

    (4)但当我将其放在 iCall_registerApp (&selfEntity、&synctEvent)之后;,程序在执行 GapProfileApp__Init()语句之后停止。


    请问您有什么建议吗? 请问根本原因是什么?




    非常感谢。

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

    我仍然不关注。 从 simple_peripheral 开始、SimpleBLEPeripheral_init 中使用了以下内容
    //设置间隙
    GAP_SetParamValue (TGAP_CONN_PAUSE_PERUSTRUST、DEFAULT_CONN_PAUSE_PERUSTRUST);

    您是否可以尝试不对工程执行任何修改(异常重新构造文件位置)并仅编译和运行工程、看看工程是否正常工作。 如果它按预期运行、则从那里获取它。

    您看到的问题对我来说并不太有意义、因为您使用的那些令人困扰的函数已经是我们开箱即用示例的一部分。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Christin。 我将根据您的建议从此处进行故障排除。

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

    您好、F Chng、

    对于您的大部分问题、请采纳 TI Christin 建议。 要获得一些了解,请阅读《CC2640和 CC2650 SimpleLinkTm低功耗 BluetoothRegistered软件栈2.2.1开发人员指南》

    [报价用户="F Chng"]我已将我的项目(fble)从 simpleperipheral 的相同级别移动到 simplelink_cc2640r2_sdk_1_00_00_22\examples\rtos\CC2640R2_LAUNCHXL\blestack 之外的 simplelink_cc2640r2_sdk_1_00_00_22\examples\cc2640r2_00_00_00_00_00_00_00_22]。[

    我已建议您不要这样做。 这就是我在下面所做的。 我在与 simple_peripheral 相同的级别添加了 sensortag 文件夹。

    Christin、我与 F Chng 一起工作。

    -克尔

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

    非常感谢您的建议。 我遵循您的开发方法。 从推荐位置重新启动所有功能。 分步执行和分层执行。 拉出、直至到达我所需的位置。 最后、我能够使它正常工作。 在我的项目要求范围内成功执行。 但是、先前故障的根本原因仍然未知。 因为我重做所有事情。 无论如何、它最终都能正常工作。 非常感谢。

    但是,每次单击“开始调试”时,我都会收到一条奇怪的消息:
    将出现两个对话框、标题为"Get Alternative File"(获取备用文件)。

    两者都有消息:

    找不到以下源文件:
    C:\Jenkins\Jobs\FWGroup-DriverLib\workspace\modules\output\cc26xx_CH2_1_0_ext\driverlib\chipinfo.c

    找不到以下源文件:
    C:\Jenkins\Jobs\FWGroup-DriverLib\workspace\modules\output\cc26xx_CH2_1_0_ext\driverlib\chipinfo.h

    两个对话框都有软按钮"跳过"。

    点击此按钮后、程序正常执行。

    请问这条消息是什么意思? 我搜索我的 C 驱动器。 它没有任何名字叫"Jenkins"的东西。
    此消息是否会影响我的程序的操作?

    此外、我还搜索了文件 chipinfo.c 和 chipinfo.h 它位于内部:
    simplelink_cc2640r2_sdk_1_00_00_22\source\ti\devices\cc26x0r2\driverlib 。
    此文件是关于硬件版本 waferID 的... 等 如果我选择“请勿再次提示我此消息”,是否会影响我的程序?

    我使用的是 IAR。 请问我如何指引 IAR 在每次开始调试时搜索这个文件? 因此、我不会再次提示此消息。

    非常感谢。

    请提供建议。


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

    再次感谢大家。 这个问题也得到了解决。
    不知道为什么 IAR 不会搜索该文件的正确目录。
    但是、在我在启动文件夹下添加 chipinfo.c 后、它不会弹出。

    谢谢你。

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

    再次感谢大家。 这个问题也得到了解决。
    不知道为什么 IAR 不会搜索该文件的正确目录。
    但是、在我在启动文件夹下添加 chipinfo.c 后、它不会弹出。

    谢谢你。

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

    我将 Buzzer IN 连接到 CC2640R2 Launchpad。 我使用 PWM 来驱动蜂鸣器的其中一个输入。
    目前、我正在 CC640R2中开发此 PWM。 我使用内部的就绪示例(pwmled.c):
    D:\Project\Bridges\Bridge_kfstocion\simplelink_cc2640r2_sdk_1_00_00_22\examples\rtos\CC2640R2_LAUNCHXL\drivers\pwmled

    我将 void *mainThread(void *arg0)重命名为 pwminit()。 临时 I 插槽的内部位置如图所示:

    int main()


    #if defined (use_fpga)
    HWREG (PRCM_BASE + PRCM_O_PDCTL0)&&=~PRCM_PDCTL0_RFC_ON;
    HWREG (PRCM_BASE + PRCM_O_PDCTL1)&=~PRCM_PDCTL1_RFC_ON;
    #endif // use_fpga

    /*注册应用程序回调到堆栈中发出的 TRAP 断言*/
    RegisterAssertCback (AssertHandler);

    PIN_init (BoardGpioInitTable);


    pwmInit();







    编译成功。 我现在在执行它时面临一个问题。

    执行时、两个 LED (红色和绿色)熄灭
    handle = handle->fxnTablePtr ->openFxn (handle、params);

    PWM_Handle PWM_open (uint_least8_t index、PWM_Params *参数)内部。 它位于 pwminit()内部。


    我检查其他参数、它们在逻辑上是正常的。


    我可以有你的建议吗?
    请问我应该如何从这里进行故障排除?


    非常感谢。

    谢谢、
    KF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我运行整个程序时、也没有 LED 闪烁(假设闪烁)。

    谢谢你。

    请尽快提供建议。
    谢谢、
    KF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在哪里调用 PWM open 并启动? 您应该等到 BIOS_start 函值被调用并将这些调用添加到您的定制 application_init 中
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christin:


    我在 PIN_init (BoardGpioInitTable)之后调用它,在 BIOS_start()之前调用它,如下所示:

    int main()

    uint8_t debug11;


    #if defined (use_fpga)
    HWREG (PRCM_BASE + PRCM_O_PDCTL0)&&=~PRCM_PDCTL0_RFC_ON;
    HWREG (PRCM_BASE + PRCM_O_PDCTL1)&=~PRCM_PDCTL1_RFC_ON;
    #endif // use_fpga

    /*注册应用程序回调到堆栈中发出的 TRAP 断言*/
    RegisterAssertCback (AssertHandler);

    PIN_init (BoardGpioInitTable);

    pwmInit();--------- >这里...、、、、、


    #ifdef CC1350_LAUNCHXL
    //启用2.4GHz 无线电
    radCtrlHandle = PIN_OPEN (&radCtrlState、radCtrlCfg);

    #ifdef power_saving
    power_registerNotify (&rFSwitchPowerNotifyObj、PowerCC26XX_entering_standby | PowerCC26XX_awarne_standby、(Power_NotifyFxn) rFSwitchNotifyCb、NULL);
    #endif //power_saving
    #endif // CC1350_LAUNCHXL

    #if defined (use_fpga)
    //设置 RFC 模式以支持 BLE
    //注意:这必须在 RF 内核从复位中释放之前完成!
    Set_RFC_BLE_MODE (RFC_MODE_BLE);
    #endif // use_fpga

    //启用 ICache 预取
    VIMSConfigure (VIMS_BASE、TRUE、TRUE);

    //启用缓存
    VIMSModeSet (VIMS_BASE、VIMS_MODE_ENABLED);

    #if !defined (power_saving)|| Defined (use_fpga)
    /*设置待机、断电和空闲模式的限制*/
    // PowerCC26XX_SB_disallow 可能是冗余的
    power_setConstraint (PowerCC26XX_SB_disallow);
    power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);
    #endif // power_saving | use_fpga

    #ifdef ICALL_JT
    /*更新堆栈的用户配置*/
    user0Cfg.appServiceInfo->timerTickPeriod = Clock_tickPeriod;
    user0Cfg.appServiceInfo->timerMaxMillisecond = iCall_getMaxMSecs();
    #endif /* ICALL_JT *
    /*初始化 iCall 模块*/
    iCall_init();

    /*启动外部映像的任务-优先级5 */
    iCall_createRemoteTasks();

    /*启动配置文件-优先级3 */
    GAPRole_createTask();

    BridgeblePeripheral_CreateTask();

    /*启用中断并启动 SYS/BIOS */
    BIOS_start();

    返回0;




    我把它放在那里只是为了查看它是如何工作的、然后再将它放入我的代码中。

    您是否会建议如何将其放入我的代码中?
    我还不熟悉 TI RTOS。 简而言之、我只需要创建一个任务、然后...、我仍然很模糊。

    请提供建议。


    非常感谢。

    谢谢、
    KF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请查看 TI-RTOS 附带的文档(TI-RTOS 内核用户指南),我们提供了涵盖 TI-RTOS 基础知识(software-dl.ti.com/.../overview.html)的 simplelink_academy 培训。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christin:

    非常感谢您的建议。

    由于我急于确定截止日期、在继续学习 TI RTOS 之前、我是否可以提出一些学前问题。

    以 sensortag 项目(D:\ti\simplelink\ble_sdk_2_02_01_18\src\examples\sensortag)为例。

    主要内容:

    int main()

    /*注册应用程序回调到堆栈中发出的 TRAP 断言*/
    RegisterAssertCback (AssertHandler);

    PIN_init (BoardGpioInitTable);

    #ifdef CC1350_LAUNCHXL
    //启用2.4GHz 无线电
    radCtrlHandle = PIN_OPEN (&radCtrlState、radCtrlCfg);

    #ifdef power_saving
    power_registerNotify (&rFSwitchPowerNotifyObj、
    PowerCC26XX_entering_standby | PowerCC26XX_awarK_STANDBY、
    (POWER_NotifyFxn) rFSwitchNotifyCb、NULL);
    #endif //power_saving
    #endif // CC1350_LAUNCHXL

    #ifndef power_saving
    /*设置待机和空闲模式的约束*/
    power_setConstraint (PowerCC26XX_SB_disallow);
    power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);
    #endif // power_saving

    /*初始化 iCall 模块*/
    iCall_init();

    /*启动外部映像的任务-优先级5 */
    iCall_createRemoteTasks();

    /*启动配置文件-优先级3 */
    GAPRole_createTask();

    /*启动应用程序-优先级1 */
    SensorTag_createTask();
    SensorTagTmp_createTask();
    SensorTagHum_createTask();
    SensorTagBar_createTask();

    BIOS_start(); /*启用中断并启动 SYS/BIOS */

    返回0;



    根据我的理解,----------------------------------------------------------------

    我们在 BIOS_start()之前创建所有任务。 在 SensorTag_createTask()内部,has 语句:
    Task_construct(&sensorTagTask, SensorTag_taskFxn,&taskParams, NULL);, 然后转到无限循环内部函数:
    静态空 SensorTag_taskFxn (UARg a0、UARg A1)。 在 SensorTag_taskFxn 中,有一个无限的应用程序主循环:
    用于(;.),其作用类似于轮询系统。 此 for (;;)与 while (1)非常相似;
    所有这些函数都位于 sensortag_lp.c 内,其中也包括所有其他函数。

    不幸的是,在 SensorTagTmp_createTask()、SensorTagHum_createTask()和 SensorTagBar_createTask()内部; 为空。 如果我要使这3个创建任务作为 SensorTag_createTask()工作,我还需要创建3个文件,即:
    SensorTagTmp.c、SensorTagHum.c 和 SensorTagBar.c 文件,哪些内容与 sensortag_lp.c 非常相似? 在这3个.c 文件中,它将具有自己的重要功能,如:
    Task_con构(&SensorTagTmpTask、SensorTagTmp_taskFxn、&taskParams、NULL);
    静态空 SensorTagTmp_taskFxn (UArg a0、UArg A1)

    Task_construction (&SensorTagHumTask、SensorTagHum_taskFxn、&taskParams、NULL);
    静态空 SensorTagHum_taskFxn (UARg a0、UARg A1)

    Task_construction (& SensorTagBarTask、SensorTagBar_taskFxn、&taskParams、NULL);
    静态空 SensorTagBar_taskFxn (UArg a0、UArg A1)

    最后、来自 BIOS_Start 的所有事件都将在 for (;;)循环内捕获。 我是对的吗?



    非常感谢。

    请尽快提供建议。


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

    我已在 BridgeBLEPeripheral__Init()中添加了我的 PwmLed_Init()。

    PwmLed_Init():
    void PwmLed_Init (PWM_Params 参数、PWM_Handle pwm1、PWM_Handle pwm2、uint16_t pwmPeriod)

    /*调用驱动程序初始化函数。 *
    PWM_init();
    PWM_PARAMS_INIT (params);
    params.dutyUnits = PWM_Duty_US;
    params.dutyValue = 0;
    params.periodUnits = PWM_PERIOD_US;
    params.periodValue = pwmPeriod;
    pwm1 = PWM_OPEN (Board_PWM0、params);
    if (pwm1 = NULL){
    /* Board_PWM0未打开*/
    while (1);

    PWM_START (pwm1);
    if (Board_PWM1!= Board_PWM0)

    pwm2 = PWM_OPEN (Board_PWM1、params);
    if (pwm2 =NULL){
    /* Board_PWM0未打开*/
    while (1);

    PWM_START (pwm2);

    返回;


    然后、在 BridgeBLEPeripheral_Init()内部:
    静态空 BridgeBLEPeripheral_Init (空)

    //
    //在调用 iCall_registerApp 之前可能会发生 N0栈 API 调用
    //
    //将当前线程注册为 iCall 调度应用程序
    //以便应用程序可以发送和接收消息。
    iCall_registerApp (&selfEntity、&synctoEvent);

    /*[KF]在此处插入 PwmLed_Init ()、仅用于测试。 *
    pwmLed_Init (params、pwm1、pwm2、pwmPeriod);---- >此处添加了。。。

    #ifdef USE_RCOSC
    RCOSC_enableCalibration();
    #endif // use_RCOSC

    然后,在静态空 BridgeBLEPeripheral_TaskFxn (UARg a0、UARg A1)内:
    静态空 BridgeBLEPeripheral_TaskFxn (UARg a0、UARg A1)

    /*[KF]请参阅 CC26...SimpleLink BLE... Developer's Guide.pdf、PG。 66、
    图4-3. SBP 任务流程图。 *

    //初始化应用程序
    BridgeBLEPeripheral__Init();--- >在此处初始化。 内部有 pwmled_init。

    //应用程序主循环
    对于(;)

    uint32_t 事件;

    //等待与调用线程关联的事件被发布。
    //请注意,与线程关联的事件在时发布
    //消息在线程的消息接收队列中排队
    事件= Event_pend (syncEvent、Event_ID_NONE、SBP_ALL_EVENGS、ICALL_TIMEOUT_FOREVE);

    IF (事件)

    iCall_EntityID dest;
    iCall_ServiceEnum src;
    iCall_HciExtEvt *pMsg =空;

    if (iCall_fetchServiceMsg (&src、&dest、(void **)&pMsg)=ICALL_errno_Success)

    uint8 safeToDealloc = true;

    IF (((src =ICALL_SERVICE_CLASS_BLE)&&(dest =self Entity))

    iCall_Stack_Event *pEvt =(iCall_Stack_Event *) pMsg;

    //首先检查 BLE 堆栈事件
    /*[KF]请参阅 CC2640和 CC2650 SimpleLink BLE Software Stack 2.2.1开发人员 Guide.pdf
    如果事件来自 BLE 协议栈,则 pEvt->signature=0xFFFF。 *
    if (pEvt->signature == 0xFFFF)

    if (pEvt->EVENT_FLAG & SBP_HCI_CONN_EVT_END_EVT)

    //尝试重新发送待处理的 ATT 响应(如果有)
    BridgeBLEPeripheral_SendAttRsp();


    其他

    //处理任务间消息
    SAFeToDealloc = BridgeBLEPeripheral_ProcessStackMsg (((iCall_HDR *) pMsg);



    if (pMsg && safeToDealloc)

    iCall_freeMsg (pMsg);

    }//关闭 if (iCall_fetchServiceMsg (&src、&dest、(void **)&pMsg)=ICALL_errno_Success)


    //如果 RTOS 队列不为空,则处理应用程序消息。
    IF (事件和 SBP_queue_EVT)

    /*[KF]执行 pwmled 应用程序任务。 *
    pwmLed_on (pwm1、pwm2、Duty、dutyInc、time、 pwmPeriod);

    while (!Queue_empty (appMsgQueue))

    sbpEvt_t *pMsg =(sbpEvt_t *) Util_dequeueMsg (appMsgQueue);
    if (pMsg)

    //处理消息。
    BridgeBLEPeripheral_ProcessAppMsg (pMsg);

    //从消息中释放空间。
    iCall_free (pMsg);





    IF (事件和 SBP_Periode_EVT)

    Util_startClock (周期时钟);

    //执行周期性应用任务
    BridgeblePeripheral_PerformPeriodicTask();


    /*[KF]添加了此事件以处理 pwmled */
    IF (事件和 SBP_PWMLED_EVT)

    /*[KF]执行 pwmled 应用程序任务。 *
    pwmLed_on (pwm1、pwm2、Duty、dutyInc、time、 pwmPeriod); ------ >在此处添加了 PwmLed_on。。。



    #ifdef Feature_OAD
    IF (事件和 SBP_queue_ping_EVT)

    while (!Queue_empty (hOadQ))

    oadTargetWrite_t * oadWriteEvt = Queue_get (hOadQ);

    //识别新图像。
    if (oadWriteEvt->event == OAD_WRITE_Identify_Req)

    OAD_imgIdentifyWrite (oadWriteEvt->connHandle、oadWriteEvt->pData);

    //写下一个块请求。
    否则(oadWriteEvt->event =OAD_WRITE_BLOCK_REQ)

    OAD_imgBlockWrite (oadWriteEvt->connHandle、oadWriteEvt->pData);


    //自由缓冲区。
    iCall_free (oadWriteEvt);


    #endif //feature_OAD

    }//关闭 IF (事件)

    }//close for (;);





    我希望在运行后,该 pwmled_on 灯将闪烁一次,因为 pwmled_on 为:
    void PwmLed_on (pwm_handle pwm1、pwm_handle pwm2、uint16_t Duty、uint16_t dutyInc、uint32_t time、 uint16_t pwmPeriod)

    /*循环永远递增 PWM 占空比*/
    //while (1){/*[KF}已注释出 TIRTOS 循环接管的原因。 *
    PWM_setDuty (pwm1、占空比);

    IF (pwm2)

    PWM_setDuty (pwm2、Duty);


    Duty =(Duty + dutyInc);

    IF (Duty =pwmPeriod ||(!Duty))

    dutyInc =- dutyInc;


    //usleep(time);/*[KF]临时注释,因为编译失败*/
    //}

    返回;



    在我的主 forsgram 中,main()是:
    int main()

    #if defined (use_fpga)
    HWREG (PRCM_BASE + PRCM_O_PDCTL0)&&=~PRCM_PDCTL0_RFC_ON;
    HWREG (PRCM_BASE + PRCM_O_PDCTL1)&=~PRCM_PDCTL1_RFC_ON;
    #endif // use_fpga

    /*注册应用程序回调到堆栈中发出的 TRAP 断言*/
    RegisterAssertCback (AssertHandler);

    PIN_init (BoardGpioInitTable);

    #ifdef CC1350_LAUNCHXL
    //启用2.4GHz 无线电
    radCtrlHandle = PIN_OPEN (&radCtrlState、radCtrlCfg);

    #ifdef power_saving
    power_registerNotify (&rFSwitchPowerNotifyObj、PowerCC26XX_entering_standby | PowerCC26XX_awarne_standby、(Power_NotifyFxn) rFSwitchNotifyCb、NULL);
    #endif //power_saving
    #endif // CC1350_LAUNCHXL

    #if defined (use_fpga)
    //设置 RFC 模式以支持 BLE
    //注意:这必须在 RF 内核从复位中释放之前完成!
    Set_RFC_BLE_MODE (RFC_MODE_BLE);
    #endif // use_fpga

    //启用 ICache 预取
    VIMSConfigure (VIMS_BASE、TRUE、TRUE);

    //启用缓存
    VIMSModeSet (VIMS_BASE、VIMS_MODE_ENABLED);

    #if !defined (power_saving)|| Defined (use_fpga)
    /*设置待机、断电和空闲模式的限制*/
    // PowerCC26XX_SB_disallow 可能是冗余的
    power_setConstraint (PowerCC26XX_SB_disallow);
    power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);
    #endif // power_saving | use_fpga

    #ifdef ICALL_JT
    /*更新堆栈的用户配置*/
    user0Cfg.appServiceInfo->timerTickPeriod = Clock_tickPeriod;
    user0Cfg.appServiceInfo->timerMaxMillisecond = iCall_getMaxMSecs();
    #endif /* ICALL_JT *
    /*初始化 iCall 模块*/
    iCall_init();

    /*启动外部映像的任务-优先级5 */
    iCall_createRemoteTasks();

    /*启动配置文件-优先级3 */
    GAPRole_createTask();

    BridgeBLEPeripheral_CreateTask();--- >在此处构建任务。

    /*启用中断并启动 SYS/BIOS */
    BIOS_start();

    返回0;




    但是、我的 LED 不闪烁。 它关闭。
    我已将 LED 默认设置为高电平。 但是、每当 prog 执行第二个处理程序时、LED 都会熄灭、
    如下所示:

    PWM_Handle PWM_OPEN (uint_least8_t 索引、PWM_Params *参数)

    PWM_Handle handle = NULL;

    if (isInitialized &&(索引< PWM_COUNT)){
    /*如果参数为 NULL,则使用默认值*/
    if (params =NULL){
    Params =(PWM_Params *)&PWM_defaultParams;


    /*获取此驱动程序实例的句柄*/
    Handle =(PWM_Handle)&(PWM_CONFIG[index]);

    Handle = handle->fxnTablePtr ->openFxn (handle、params);--- >此陈述后指示灯熄灭。


    返回(句柄);




    请提供建议。
    非常感谢。



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

    您好!

    很难阅读您发布的内容。 您是否可以使用丰富的格式并使用"使用 Syntax荧 光笔插入代码"选项发布代码...

    此外、还需要确保有资源分配给 PWM HW 属性。  

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

    非常感谢您迄今提供的帮助。 你是对的、我必须把它放在 BIOS_Start 前面、这样所有的定时器和任务都可以运行、从而使 PWM 工作。

    我已成功完成 PWM。
    我使用的文件由 pwmled 文件夹内的 CC2640R2 simplelink_cc2640r2_sdk_1_00_00_22提供。
    内部只有一个函数、它是任务函数。


    我已经学习了一些 TIRTOS、然后开始创建任务。 连接到它的 LED 会相应地闪烁。 我还使用范围进行了验证。

    非常感谢。

    我有另一个问题。 来计算占空比。 该软件提供了:

    uint32_t Duty =(PWM_Duty_Fraction _MAX / 2);占空比为50%。
    params.dutyUnits = PWM_Duty_Fraction;


    但是、我需要输入百分比而不是分数。 因此、我需要一个公式来计算它。
    我的公式为 PWM_Duty_Fraction _MAX /(100 / USER_INPUT_Percentage)。 但微控制器无法进行小数计算。 我对吗? 我是否可以使用任何 API 来执行此操作? 或任何其他替代方法?

    请帮助。

    谢谢、
    KF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alrgiht、我对布局感到抱歉。 我将使用丰富的文本嵌套时间。 我没有使用它、因为我仍然对这里的论坛环境不太熟悉。 非常感谢您的帮助:)

    谢谢、
    KF
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    支持的单位是小数、您不能在不修改驱动程序的情况下仅更改到所需的任何单位。
    我看不到使用百分比的原因、因为分次已受支持。 它只是数学、因此我建议您使用分数(这样您就不需要修改驱动程序)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christin:

    我更改了数学、它起作用。 谢谢你。

    现在我面临另一个问题。 最初,在 main 中有2个任务:
    GAPRole_createTask();//Origianlly 为优先级3。
    BridgeblePeripheral_CreateTask();//最初为1,我已将此任务的优先级更改为5,这是所有任务中最高的。

    然后添加一个新任务,即:
    PWM__CreateTask();//优先级为1。


    如果我只运行 PWM__CreateTask();,(通过注释掉其他2个任务来完成),它正在运行,并且我在其 for(;))循环中使用断点来观察它。


    但是,然后,我重新添加另外两个任务(,BridgeblePeripheral_CreateTask();和 GAPRole_createTask();),或者只添加其中一个任务。


    完成此操作后,我的另外两个任务(BridgeblePeripheral_CreateTask();和 GAPRole_createTask();)不运行。
    程序不会进入...Fxn 函数中(;)循环内的断点。


    是否还有其他代码需要更改才能添加更多任务?
    我已更改 iCall.c 中的常量 ICALL_MAX_NUM_TASks,但仍然存在相同的问题。


    TIRTOS 的运行方式是否与 FreeRTOS 非常相似?



    请提供建议。
    非常感谢。


    谢谢、

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

    尊敬的 Christin:

    我更改了数学、它起作用。  谢谢你。

    现在我面临另一个问题。  最初,在 main 中有2个任务:

    GAPRole_createTask(); //Origianlly 为优先级3。

    BridgeblePeripheral_CreateTask(); //最初为1, 我已将此任务的优先级更改为5,这是所有任务中最高的。

    然后添加一个新任务,即:  

    PWM__CreateTask(); //优先级为1。

    如果我只运行 PWM__CreateTask();, (通过注释掉其他2个任务来完成), 它正在运行,并且我在 其 for(;))循环中使用断点来观察它。

    但是,然后 ,我重新添加另外两个任务(,BridgeblePeripheral_CreateTask();  和 GAPRole_createTask();) ,  或者 只添加其中一个任务。

    完成此操作后,我的另外两个任务 (BridgeblePeripheral_CreateTask();  和 GAPRole_createTask();)  不运行。  

    程序不会进入...Fxn 函数中(;)循环内的断点。

     是否还有其他代码需要更改才能添加更多 任务?

    我已更改  iCall.c 中的常量 ICALL_MAX_NUM_TASks,但仍然存在相同的问题。

    TIRTOS 的运行方式是否与 FreeRTOS 非常相似?

    请提供建议。

    非常感谢。

    谢谢、

    KF  

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

    尊敬的 Christin:

    我更改了数学、它起作用。  谢谢你。

    现在我面临另一个问题。  最初,在 main 中有2个任务:

    GAPRole_createTask(); //Origianlly 为优先级3。

    BridgeblePeripheral_CreateTask(); //最初为1, 我已将此任务的优先级更改为5,这是所有任务中最高的。

    然后添加一个新任务,即:  

    PWM__CreateTask(); //优先级为1。

    如果我只运行 PWM__CreateTask();, (通过注释掉其他2个任务来完成), 它正在运行,并且我在 其 for(;))循环中使用断点来观察它。

    但是,然后 ,我重新添加另外两个任务(,BridgeblePeripheral_CreateTask();  和 GAPRole_createTask();) ,  或者 只添加其中一个任务。

    完成此操作后,我的另外两个任务 (BridgeblePeripheral_CreateTask();  和 GAPRole_createTask();)  不运行。  

    程序不会进入...Fxn 函数中(;)循环内的断点。

     是否还有其他代码需要更改才能添加更多 任务?

    我已更改  iCall.c 中的常量 ICALL_MAX_NUM_TASks,但仍然存在相同的问题。

    TIRTOS 的运行方式是否与 FreeRTOS 非常相似?

    请提供建议。

    非常感谢。

    谢谢、

    KF  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的应用任务不应高于 GAP 角色和 BLE 堆栈。 请确保您的应用的优先级为1或更低(0)、然后您可以使用 simpleBLEPeripheral.c 中的信标发布

    请查看我们的软件开发人员指南 TI-RTOS 部分。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christin:

    非常感谢您的建议。

    我将探讨在 TIRTOS 中使用信标并实现它。

    但是,我是否可以问,我是否必须使用信标?  如果我将我的2个示例任务(simple_peripheral 和 my_PWM)执行到优先级1,它是否起作用?

    原因是、对于优先级1、两个示例任务将分配相同的机会由 TIRTOS 执行。  

    由于它单独与 simple_peripheral 一起工作,它是否也应该与其他添加的任务(simple_peripheral 具有相同的优先级)一起工作?

    请提供建议。

    非常感谢。

    谢谢、

    KF

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

    如果您不使用信标来挂起事件(或事件挂起)、那么执行的第一个优先级为1的任务将永远运行、这意味着另一个任务将完全不会执行。

    我建议您花一天时间完成 simplelink_academy 培训。 您提出的大部分问题需要您超过1天的时间来解决、这些问题已在培训中进行了说明。

    完成培训将使您受益匪浅、而不仅仅是尝试和错误。  尽管本培训针对的是 R1器件、但结构和概念是相同的。

    您可以在此处下载 simplelink Academy 培训:
    software-dl.ti.com/.../overview.html

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

    尊敬的 Christin:

    非常感谢。

    我已经学习了一般的实时操作系统、但并非特定于 TIRTOS。
    在我现在进行调试时、 我将访问视频和内核文档、以了解有关 TIRTOS 的更多信息。

    现在、我已经向函数调用 EVENT_PEND 添加了一个信标、并将其添加到我的任务之一中、我从 pwmled.c 中修改了该任务:
    void PWM__taskFxn (UARg a0、UARg A1)




       for (;;)
       {
           uint32_t 事件;
           //事件= Event_pend (pwmLedSem、Event_ID_none、PWM_All_Events、ICALL_TIMEOUT_FOREVE);
           事件= Event_pend (pwmLedSem、Event_ID_none、PWM_ALL_Events、ICALL_TIMEOUT_PRefine);
           /*[KF]定义:int_fast16_t PWM_setDuty (PWM_Handle handle、uint32_t Duty)*/
           PWM_setDuty (pwm1、dutyU);
       }

    根据我的理解、Event_pend 将检查我的事件句柄" pwmLedSem"、它是一个信标。

    通过此设置、它将在每个 ICALL_TIMEOUT_PRefine 秒检查是否有任何可用的事件(PWM_ALL_EVENTs)、然后它将发布一个信标、然后该任务将被唤醒。

    通过将  ICALL_TIMEOUT_PRefine 的值更改为更长的时间、执行速度将变慢、正如我在 PWM_setDuty (...)处放入断点时观察到的那样。

    在等待 EVENT_PEND 发出信号量时、 另一个任务应能够调度以运行。  此任务为静态空 SimpleBLEPeripheral_TaskFxn (UARg a0、UARg A1)。

    静态空 BridgeBLEPeripheral_TaskFxn (UARg a0、UARg A1)

     /*[KF]请参阅 CC26...SimpleLink BLE... Developer's Guide.pdf、PG。 66、
        图4-3. SBP 任务流程图。 *

     //初始化应用程序
     BridgeBLEPeripheral__Init();/*[KF] original、仅为调试添加了注释*/

     //应用程序主循环
     对于(;)
     {

       uint32_t 事件;
       事件= Event_pend (syncEvent、Event_ID_none、SBP_ALL_Events、ICALL_TIMEOUT_PREdefine);






    但是,没有程序进入上述函数,因为我在 BridgeblePeripheral_Init()中使用断点进行观察; 。  我还将上述函数优先级更改为2。

    程序将进入静态空 gapRole_taskFxn (UARg a0、UARg A1)、正如我在函数内使用断点观察到的那样。

    程序似乎只进入最后创建的任务而不是所有任务。  它将继续执行最后一个创建任务、而不会给其他任务带来机会。

    这是否意味着最后创建的任务的任务控制块位于堆存储器的前面并且将首先执行?

    我当前的 main()描述如下:

     iCall_init();

     /*启动外部映像的任务-优先级5 */
     iCall_createRemoteTasks();

     /*启动配置文件-优先级3 */
     GAPRole_createTask();    /*[KF]没有其他任务比 GAPRole 任务具有高优先级*/


     SimpleBLEPeripheral_CreateTask();

     /*[KF]添加 PWM 任务进行调试*/
     PWM__CreateTask(); /*[KF]取消注释以排除无广播的故障*/

    当我将 SimpleBLEPeripheral 任务放置在最后创建的任务时、首先执行该任务、如 以下所示。

    然后、此任务 将接管整个 CPU、而不让其他任务执行。

     iCall_init();

     /*启动外部映像的任务-优先级5 */
     iCall_createRemoteTasks();

     /*启动配置文件-优先级3 */
     GAPRole_createTask();    /*[KF]没有其他任务比 GAPRole 任务具有高优先级*/

     /*[KF]添加 PWM 任务进行调试*/
     PWM__CreateTask(); /*[KF]取消注释以排除无广播的故障*/

    SimpleBLEPeripheral_CreateTask();

    请帮我解决这个问题。

    此外,我可否提出一个问题?  

    信标可与队列一起使用。  

    我是否可以知道什么是 EVENT_PEND?  它是否也是信标?  它是信标和队列的组合吗?  

    非常感谢。

    请提供建议。

    谢谢、

    KF

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

    您可以在我们的软件开发人员指南中找到问题的答案。 此外、您还可以使用 TI-RTOS ROV 查看器来检查您的任务是否被阻止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Christin:

    非常感谢您的回复。
    此工具仅适用于 CCS。 但我使用的是 IAR 7.80。

    我可以有你的建议吗?

    非常感谢。

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

    您可以通过单击 TI-RTOS 框来启用它

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

    尊敬的 Christin:

    非常感谢。   不幸的是、我 没有 CSPY。 此应用程序需要 CSPY,是吗?

    不过、非常感谢、我将深入探讨。

     非常感谢。

    谢谢、

    KF

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

    尊敬的 Christin:

    我正在为 CC2640R2项目开发按钮功能。  我使用的是 CC2640R2 LAUNCHXL 开发板。

    我的 button.c 代码基于 sensortag_keys.c 代码。  

    但是,我是否可以知道 为什么当我 输入 Semaphore_pend (ButtonSemaphore、BIOS_WAIT_Forever)时, 我的按钮中断将不起作用。

    如果没有 Semaphore_pend (ButtonSemaphore、BIOS_Wait_Forever);在我的静态 void button_TaskFxn (UArg0、UArg1)中、我的中断将起作用。

    这意味着,当按下按钮时,程序将转至回叫函数 --> void button__Callback (PIN_Handle handle,PIN_ID pinId) 。  

    这在 PIN_registerIntCb (ButtonInteruptPinHandle、button_Callback)中进行初始化。

    以下是我的代码

    int main()
    {
    .
    。
    。
    。
    。
    
    /*[KF]添加用于调试的按钮任务*/
    button_CreateTask();
    
    //启用中断并启动 SYS/BIOS */
    BIOS_start();
    
    返回0;
    }
    
    
    
    void button_taskTask (void)
    {
    Task_Params Params;
    
    Task_Params_init (&CreateParams);
    taskParams.stack = ButtonTask_params.stack
    
    = Button_params.stack;task_params.stack = Button_params.stack;task_params.stack = Task_size_task_params.task_params.stack;task.
    
    Task_construct(&ButtonTask, button_TaskFxn,&taskParams, NULL);
    }
    
    
    静态空 button_TaskFxn (UArg0,UArg1)
    {
    uint8_t debugButton2;
    /*{KF] Initialize Button */
    button_Init();
    
    //应用程序主循环
    对于(;)
    {
    uint32_t 事件;
    
    Semaphore_pend (ButtonSemaphore、BIOS_WAIT_Forever);
    
    debugButton2 = debugButton2 +1;
    }
    }
    
    
    void button_Init (void)
    {
    button__reset ();
    
    ButtonInteruptPinHandle = PIN_OPEN (&ButtonGpioState、ButtonPinTable);
    PIN_registerIntCb (ButtonInteruptPinHandle、button_Callback);
    
    Util_constructClock (周期时钟、button_clockHandler、
    100、1000、false、0);
    }
    
    
    void button__Callback (PIN_Handle handle、PIN_ID pinId)
    {
    switch (pinId)
    {
    
    案例 Board_BTN2:
    button__processKeyRight();
    中断;
    
    默认值:
    /*不执行任何操作*/
    break;
    }
    
    
    
    }void button__processKeyRight (void)
    {
    uint8_t debugButton;
    
    if (PIN_getInputValue (Board_key_right))
    {
    按键&=~SK_KEY_RIGHT;
    }
    其他
    {
    键|= SK_KEY_RIGHT;
    }
    
    Semaphore_post (ButtonSemaphore);
    
    debugRbutton = debugRbutton + debugRbutton;
    } 

    按下按钮时、程序不会使 button__processKeyRight (void)无效以处理其数据。

    请提供建议。

    非常感谢。

    谢谢、

    KF

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Christin 和其他人迄今提供的建议。 我犯了错误。 我忘记了创建信标。 它现在在工作。
    请问如何设置计数信标的最大计数?

    感谢你的建议。

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

    尊敬的 Christin:

    我还面临相同的"sendWaitMatchCS (iCall_getEntityId()、msg、matchGapSetParamCS);"


    我正在使用、

    CCS 版本- 7.1.0.00016

    BLE Stack 2.2.1

    中的示例代码  

    以测试两个板之间的最大吞吐量。 这里-我加载了外设堆栈和应用程序代码。


    我在此附上了一些图片、以帮助了解有关我的代码的更多信息。

    以上图片显示了程序的流程。

    被击中的是在第5个函数内发生的  

    此函数内部=静态 bStatus_t sendWaitMatchCS (iCall_EntityID src、void *msg、iCall_MsgMatchFn matchFn 匹配 CFn)

    "waitMatchCS (matchCSFn、(void **)&pCmdStatus";" 未提供任何返回响应。

    在 "WaitMatchCS" 函数内部、其在返回"ICALL_errno_unknown_thread;"时被敲入  

    现在请帮帮我。