跳到主要内容

Platform_Reset_Func在SDK6.

DA14585.

2个月前

Platform_Reset_Func在SDK6.

张贴了绿茶140点 3回复
0旋转

你好

下面的代码会导致platform_reset_func()函数。

如何避免上面的重置函数调用?

我所做的只是打电话来调用Arch_puts()。

我知道我不需要打印“计时器停止”多次,但这样做会使重置函数调用。

我想测量通过i2c从传感器设备读取少数数据的总时间,并使用ADC读取模拟输入。

user_peripheral_setup.c.

void start_timer(void)
{
ARCH_PUTS(“计时器启动\ r \ n”);
// systick_start(100,0);
}
void stop_timer(void)
{
// uint32_t time = systick_value();
// systick_stop();
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
ARCH_PUTS(“计时器停止\ r \ n”);
// ARCH_PRINTF(“经过时间= 0x%x \ r \ n \ r \ n”,时间);
// ARCH_PRINTF(“SYSTICK值= 0x%x \ r \ n”,systick_value());
}

void periph_init(空白)

{

start_timer();
stop_timer();
start_timer();
stop_timer();
start_timer();
stop_timer();
start_timer();
stop_timer();

}

接受答案!

2个月前

PM_DIALOG.

嗨格林斯,

谢谢你的问题在线。此断言意味着平台复位发生。perform_reset()调用τheplatform_reset_func(),该平台()在ROM代码中实现。此断言的最可能原因是由于内存不足,因为您正在分配从未消耗的消息。例如,如果要分配通知消息,并且您有一个小的连接间隔,则邮件堆叠堆积,直到连接事件到达,但在连接事件到达之前,使用大的连接间隔耗尽内存。

关于附加代码,UART上的邮件可能永远不会消耗,这会产生某种内存泄漏。

最初,我建议不要打印periph_init()函数 - 您可以在应用程序级别中发作到应用程序级别(所有从User_ *开头的文件)。

除此之外,请尝试增加MSG堆大小 - 请参阅本教程:http://lpccs-docs.dialog-semicondiond.com/tutorial_sdk6/heap_usage.html.

谢谢,PM_DIALOG.

1个月前

绿茶 140点

你好

感谢您的答复。

我看到platform_reset()函数如何调用。

将消息打印到UART的Stop_Timer()函数不会调用平台在尝试打印一行时重置。

尝试调用heripheral_init()函数中的start_timer()函数和stop_timer()函数,其中包含许多打印消息,在调用start_timer(),stop_timer()函数的耦合后,调用平台重置函数。(不显示我的串行通信终端上的任何消息,这意味着在连接事件到达之前它会耗尽内存)

谢谢你的推荐。

我尝试使用start_timer()函数和stop_timer()函数在user_ * function中只使用打印所需的消息,它正在没有调用平台重置功能。

并感谢您的教程。

1个月前

PM_DIALOG.

嗨格林斯,

很高兴你解决了这个并感谢您接受我的答案。如果您有任何其他问题,请提出新的论坛票。

谢谢,PM_DIALOG.