本人用的是IAR编51核的模块,总是会碰到调试的时候某些函数里有几行设不了断点。然后我翻.s51文件发现目标函数压根就没编译进去!我明明没有用条件编译啊,也声明了函数,而且之前还好好的,自从该了一两句就变这样,怎么破?
下面就是最近碰到编不进去的代码,是在Z-stack里做去抖动的,因为要做旋转编码去抖和按键去抖,所以在定时器3中断和一个255us执行一次的任务里调了这个函数(但是汇编源码里也看不到调用这个函数的汇编语句)。
在.s51文件里这段只显示被注释的原c代码,看不到汇编啊。。。有没有大神?
[mw_shl_code=c,true]static void Ditherless_Process(struct_debounce_info temp)
{
switch(temp.keystate)
{
// case NO_KEY:
case 0:
if(temp.pre_key != temp.cnt_key)
{
temp.pre_key = temp.cnt_key;
temp.keystate = KEY_CONFIRM;
}
break;
// case KEY_CONFIRM:
case 1:
if(temp.pre_key == temp.cnt_key)
{
temp.key_count++;
if(temp.key_count > temp.debounce_times)
{
temp.keystate = KEY_PROCESS;
temp.key_count = 0;
}
}else
{
temp.pre_key = temp.cnt_key;
temp.keystate = NO_KEY;
}
break;
// case KEY_PROCESS:
case 2:
temp.FunctionCB();
temp.keystate = NO_KEY;
break;
default:;
}
}[/mw_shl_code]
弱弱说句。。第一次发帖。。表达不清的勿喷 |