工具与软件:
您好!
我正在开发一个代码、希望在定义的间隔上执行特定任务。 这意味着我需要一个同样适用于低功耗状态的计时器中断。 当任务未运行时、器件将进入低功耗状态。 有人可以帮我解决这个问题吗?
。 我使用的是数据流代码示例。 除此之外、我想在每个定义的时间间隔内切换 LED、以显示案例中的器件状态。 这项任务的方法是什么。 我认为计时器中断可行、但 欢迎大家提出其他更好的建议。
谢谢
Bhavik
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.
工具与软件:
您好!
我正在开发一个代码、希望在定义的间隔上执行特定任务。 这意味着我需要一个同样适用于低功耗状态的计时器中断。 当任务未运行时、器件将进入低功耗状态。 有人可以帮我解决这个问题吗?
。 我使用的是数据流代码示例。 除此之外、我想在每个定义的时间间隔内切换 LED、以显示案例中的器件状态。 这项任务的方法是什么。 我认为计时器中断可行、但 欢迎大家提出其他更好的建议。
谢谢
Bhavik
您好、Bhavik、
请参阅 BLE5-Stack 用户指南的"计时器"部分。 我建议使用 ClockP 模块、因为它可以通过待机模式提供、并且包括回调操作。 此 SLA 中甚至有一个使用示例。
此致、
Ryan
我正在使用数据流代码示例、其中我集成了一个传感器、希望从该传感器获取每 x 分钟的数据并通过 BLE 发送数据。
如何 通过考虑低功耗实现这一点。
如果您在低功耗计时器之外寻求建议、请发布新的 E2E 问题、原始问题已得到解答。 您应该执行初始开发评估并针对遇到的问题提供具体问题。
仅供参考页上的计算器不工作、也未给出公式。
此致、
Ryan
如果您在低功耗计时器之外寻求建议、请发布新的 E2E 问题、原始问题已得到解答。 您应该执行初始开发评估并针对遇到的问题提供具体问题。
[报价]
我认为它仅用于低功耗计时器、因为最终需要计时器中断、而且因为该时间 MCU 可以处于任何状态、这意味着也需要 LP 计时器。
我正在使用数据流代码示例、其中我集成了一个传感器、希望从该传感器获取每 x 分钟的数据并通过 BLE 发送数据。
如何 通过考虑低功耗实现这一点。
此信息旨在让您了解我所寻找的正确方案、以及您可以如何在此方面提供帮助。
在 BLE SLA 页面计算器中、会隐藏不起作用的值、并尝试报告页面上的问题。
是的、库文件和路径是正确的。
我使用 data_stream 代码示例进行测试。
在以下代码添加的 app_main.c 文件起始处。
#include <ti/drivers/dpl/ClockP.h> #include <ti/bleapp/ble_app_util/inc/bleapputil_internal.h> #define SP_PERIODIC_EVT_PERIOD 5000 #define CLOCK_MS 2000 #define auto_read_time 5 /* For Timer Interrupt */ static ClockP_Struct clkPeriodic; ClockP_Params clockpParams; ClockP_Handle clockHandle; char t_led = 0; char spend_ms_counter = 0; /* For Timer Interrupt */
将上述内容 添加到 void appMain (void)函数的下面
void Peripheral_AppEventHandler()
{
spend_ms_counter++;
if(spend_ms_counter == auto_read_time)
{
GPIO_write( CONFIG_GPIO_LED_BLUE, !t_led );
t_led = !t_led;
spend_ms_counter = 0;
}
}
在 void appMain (void)中的 app_main.c 中 BLEAppUtil_init ()函数之前、我添加了以下代码。
/* For Timer Interrupt */
// Setup parameters.
ClockP_Params_init(&clockpParams);
// Convert clockDuration in milliseconds to ticks.
uint64_t clockTicks = SP_PERIODIC_EVT_PERIOD * (CLOCK_MS/ 1);
// If period is 0, this is a one-shot timer. If not 0, the it’s a periodic clock.
clockpParams.period = 1; //clockTicks;
// Starts immediately after construction if true, otherwise wait for a call
// to start.
clockpParams.startFlag = true;
clockpParams.arg = (uintptr_t)Peripheral_AppEventHandler;
// Initialize clock instance.
clockHandle = ClockP_construct(&clkPeriodic, (void *)BLEAppUtil_invokeFunctionNoData, clockTicks, &clockpParams);
/* For Timer Interrupt */
/* For Timer Interrupt */
预期的行为是每10秒切换一次 LED。 但它不起作用。 您能检查并帮助解决方案吗?