连接stlink调试的时候发现,485通信线上有大量数据,不是主机发的,不知道从哪里来的,然后单步调试运行一会,会卡在dummy == 0这里
void rt_assert_handler(const char *ex_string, const char *func, rt_size_t line)
{
if (rt_assert_hook == RT_NULL)
{
#ifdef RT_USING_MODULE
if (dlmodule_self())
{
/* close assertion module */
dlmodule_exit(-1);
}
else
#endif /*RT_USING_MODULE*/
{
rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line);
while (dummy == 0);
}
}
else
{
rt_assert_hook(ex_string, func, line);
}
}
看一下打印信息里的参数,提示是下面函数的断言失效,
问题一:在什么情况下,一个信号量的类型不是信号量呢?
rt_err_t rt_sem_release(rt_sem_t sem)
{
register rt_base_t temp;
register rt_bool_t need_schedule;
/* parameter check */
RT_ASSERT(sem != RT_NULL);
RT_ASSERT(rt_object_get_type(&sem->parent.parent) == RT_Object_Class_Semaphore);
问题二:有开门狗,平时打断点让代码停下,时间一长,看门狗会复位,但是现在死循环卡在上面dummy那里,为什么看门狗反而不起作用了呢。