Platform_Reset_Func在SDK6.
DA14585.
2个月前
Platform_Reset_Func在SDK6.
张贴了绿茶140点 3回复你好
下面的代码会导致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();
}
1个月前
你好
感谢您的答复。
我看到platform_reset()函数如何调用。
将消息打印到UART的Stop_Timer()函数不会调用平台在尝试打印一行时重置。
尝试调用heripheral_init()函数中的start_timer()函数和stop_timer()函数,其中包含许多打印消息,在调用start_timer(),stop_timer()函数的耦合后,调用平台重置函数。(不显示我的串行通信终端上的任何消息,这意味着在连接事件到达之前它会耗尽内存)
谢谢你的推荐。
我尝试使用start_timer()函数和stop_timer()函数在user_ * function中只使用打印所需的消息,它正在没有调用平台重置功能。
并感谢您的教程。
2个月前
嗨格林斯,
谢谢你的问题在线。此断言意味着平台复位发生。perform_reset()调用τheplatform_reset_func(),该平台()在ROM代码中实现。此断言的最可能原因是由于内存不足,因为您正在分配从未消耗的消息。例如,如果要分配通知消息,并且您有一个小的连接间隔,则邮件堆叠堆积,直到连接事件到达,但在连接事件到达之前,使用大的连接间隔耗尽内存。
关于附加代码,UART上的邮件可能永远不会消耗,这会产生某种内存泄漏。
最初,我建议不要打印periph_init()函数 - 您可以在应用程序级别中发作到应用程序级别(所有从User_ *开头的文件)。
除此之外,请尝试增加MSG堆大小 - 请参阅本教程:http://lpccs-docs.dialog-semicondiond.com/tutorial_sdk6/heap_usage.html.
谢谢,PM_DIALOG.