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.

[参考译文] CC2540:CC2540停止工作...

Guru**** 2535750 points
Other Parts Discussed in Thread: CC2540

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/596775/cc2540-cc2540-stops-working

器件型号:CC2540

我使用 CC2540制作了定制板。 该板具有多个外设和外部32kHz + 32MHz 晶体。
我从 BLE 1.4.1中修改了 SimpleBLEPeripheral 示例。
我将代码添加到每500ms 调用一次的 performPeriodicTask()函数中。
在该函数中、我读取了一些 ADC 值。
但有时我无法再使用 BLEScanner 等移动应用找到该器件。
因此、我在该函数中添加了一些代码来打印 ADC 值、但电路板会停止不定期打印 ADC 值、并且无法发现。
我找不到它停止的原因。 有人知道原因或解决方案吗?

谢谢、

Young-Geun Lim

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

    如果停止 performPeriodicTask(),它是否可以正常工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、
    如果我停止 performPeriodicTask(),我可以正常工作。 我可以使用移动应用找到该器件。

    在 performPeriodicTask()函数中,我在读取 ADC 值之前将所有与 ADC 相关的引脚设置为外设函数(ADC)/输入/,然后将所有引脚设置为 GPIO、输出和低电平状态以实现节能。
    它工作正常我可以正确读取 ADC 值、但当我长时间运行程序时、电路板停止工作。

    以下是我在 performPeriodicTask()中的代码

    静态空 performPeriodicTask( void )

    ENABLE();//启用与 ADC 相关的所有 GPIO (将所有引脚配置为外设功能(ADC)、方向配置为输入)
    (笑声)
    HalAdcSetReference (HAL_ADC_REF_AVDD);
    HalAdcSetReference (HAL_ADC_REF_AVDD);
    HalAdcSetReference (HAL_ADC_REF_AVDD);
    (笑声)
    disable();//启用与 ADC 相关的所有 GPIO (将所有引脚配置为 GPIO、方向配置为输出、状态设置为低电平)