-
华东地区需要ST样片的可以邮件给我bill.lee@moly-tech.com.
-
没有想到, IAR 这么强大, 也有这等短板?
这是因为优化能力强才这样。
比如说:
int i;
i=1;
i=2;
i=3;
i=4;
i=5;
i=6;
i=7;
i=8;
i=9;
i=10;
编译器能帮你优化成
i=10;
前面的9此赋值没有意义。
如果后面没有使用到i;
那么本身i这个变量就没有意义,编译器帮你把i直接删除掉。
int i;
for(i=1;i<10;i++)
{
}
这个循环,编译器直接帮你优化成
i=10;
因为前面9次循环没有意义。
如果后面没有使用到i;
那么本身i这个变量就没有意义,编译器帮你把i直接删除掉。
楼主的程序也是这个原因。
-
我是在写一个键盘过滤程序,用了两个缓冲区,每一次击键写一个字符到第一个缓冲,这个缓冲满后再把它中的数据复制到第二个缓冲区,再创建一个线程从第二个缓冲区中复制数据到文件。
调试信息如下:
ATTEMPTED_SWITCH_FROM_DPC (b8)
A wait operation, attach process, or yield was attempted from a DPC routine.
This is an illegal operation and the stack track will lead to the offending
code and original DPC routine.
Arguments:
Arg1: 00000000, Original thread which is the cause of the failure
Arg2: 00000000, New thread
Arg3: 00000000, Stack address of the original thread
Arg4: 00000000
Debugging Details:
------------------
DEFAULT_BUCKET_ID: DRIVER_FAULT
BUGCHECK_STR: 0xB8
PROCESS_NAME: System
LAST_CONTROL_TRANSFER: from 804f8bad to 80528bec
STACK_TEXT:
8054a2a0 804f8bad 00000003 8054a5fc 00000000 nt!RtlpBreakWithStatusInstruction
8054a2ec 804f979a 00000003 805537c0 81bbb3c8 nt!KiBugCheckDebugBreak+0x19
8054a6cc 804f9ca0 000000b8 00000000 00000000 nt!KeBugCheck2+0x574
8054a6ec 80542a47 000000b8 ffffffff 00000202 nt!KeBugCheck+0x14
8054a6fc 805428bf 8054a714 806d3753 0000003d nt!SwapContext+0x157
8054a70c 806d3a86 8054a7e0 806d3753 badb0d00 nt!KiDispatchInterrupt+0x7f
8054a70c 806d3753 8054a7e0 806d3753 badb0d00 hal!HalpDispatchInterrupt+0xba
8054a784 805463ed 00000000 8054a8c8 00000000 hal!ExAcquireFastMutex+0xf
8054a7e0 805dc9a8 00000001 00000001 63416553 nt!ExAllocatePoolWithTag+0x4ed
8054a808 805dcdb7 00000000 00000000 00000000 nt!RtlpInheritAcl+0x28
8054a8e4 805e819f 00000000 e1110c40 8054a93c nt!RtlpNewSecurityObject+0x387
8054a910 805b69a1 00000000 00000000 8054a93c nt!SeAssignSecurity+0x4f
8054a940 805b9fd7 8054aa54 00000000 816868c0 nt!ObAssignSecurity+0x35
8054aa28 805c796c 816868c0 8054aa54 00000000 nt!ObInsertObject+0x473
8054ab80 805c83ed 8054abdc 00000000 00000000 nt!PspCreateThread+0x618
8054abb4 f09a5e46 8054abdc 00000000 00000000 nt!PsCreateSystemThread+0x33
8054abfc 804f16ae 81b08b70 8175d118 81b08b70 KbdFilter!kbdfReadComplete+0x1c6 [g:\code\kernel\kbdfilter\kbd_filter.c @ 440]
8054ac2c f9c4d314 00000000 8187f950 80542320 nt!IopfCompleteRequest+0xa2
8054ac48 f9a1c712 0000000c 81751f0c 8175d218 kbdclass!KeyboardClassServiceCallback+0x182
8054acac 80542b9d 8187fafc 0187f898 00000000 i8042prt!I8042KeyboardIsrDpc+0xf0
8054acd0 80542b16 00000000 0000000e 00000000 nt!KiRetireDpcList+0x46
8054acd4 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x26
STACK_COMMAND: kb
FOLLOWUP_IP:
KbdFilter!kbdfReadComplete+1c6 [g:\code\kernel\kbdfilter\kbd_filter.c @ 440]
f09a5e46 8945e8 mov dword ptr [ebp-18h],eax
FAULTING_SOURCE_CODE:
436: NULL,
437: NULL,
438: NULL,
439: kbdFlush,
> 440: &FlushBuffer);
441: if (!NT_SUCCESS(status))
442: {
443: goto ERROR;
444: }
445:
SYMBOL_STACK_INDEX: 10
SYMBOL_NAME: KbdFilter!kbdfReadComplete+1c6
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: KbdFilter
IMAGE_NAME: KbdFilter.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4c1132f3
FAILURE_BUCKET_ID: 0xB8_KbdFilter!kbdfReadComplete+1c6
BUCKET_ID: 0xB8_KbdFilter!kbdfReadComplete+1c6
Followup: MachineOwner
-
堆栈溢出的可能性最大.
-
图太小了 我不知道怎么能贴个大点的。
就是一个10uF的电容和一个100欧姆的电阻,一个开关和一个2针的插口连接起来的。(应该能隐约的看出来)
看下这个行不行
-
我的程序是可以在液晶上显示的,问题就出在。
void main(void)
{
Initialize();//初始化液晶
WriteChar(5,1,'A');//在第液晶第1行第6个位置会显示一个“A”
Delay(500);//延时500ms
WriteChar(5,2,''B');//如果没有执行上面那条500ms延时的语句,在第液晶第2行第6个位置会显示一个“B”
//如果执行了上面那条500ms延时的语句,在第液晶第2行第6个位置不会有任何反应,第1行第6个位置显示的“A”还是正常的,不会发生变化。
//我试过,如果改为200ms的延时,是可以正常在第液晶第2行第6个位置会显示一个“B”的
while(1);
}
-
reset一直为高,那么你的mcu不是一直复位么?假如我没记错的话,51单片机是高电平复位的。
-
中断向量表本就是0x8000到0x807F范围,和Code不冲突啊。
-
的确,最好把对应的信息 贴出来看看,
MARK. 帮顶下
-
引用 1 楼 kyzf 的回复:
实现开机开机,关机 ,休眠 ,唤醒,
首先在硬件 一般都必须需要一个POWER按键 和一个GPIO,
单独一个POWER按键 仅可实现开机 和唤醒,但是要是实现 休眠和开机判断和操作,除了这个POWER按键,还必须借助一个GPIO来实现。
正解
-
我还在用V2.
-
哎,最期待的20x系列和带外部总线的107还是莫有出现,失望
-
我认为是你的接收没有处理好,我也是遇到过这样的问题,修改了接收函数就好了
-
eboot文件夹里面有一个叫bitmap.c存放的就是在boot完成后,显示的图片信息
-
这个帖子我会再等几天再结,希望大家多发言,我请教过友善的售后了,唉,真是的,什么都不会,一问三不知,没办法。请大家继续顶上去。
-
NK的实际大小超出了最大允许大小
第一个boot.nb0的大小应该是00050000
EBOOTNAND 87E00000 00050000 RAMIMAGE
ROMSIZE=50000
把这两个改大10倍或者20倍。
不要编译什么debug版本,否则,这个size会导致生成两个的。
学习了,嘎嘎。
————————————————————————————
JOYZML(菜鸟朱铭雷)
-
为什么要用串口,用wince socket UDP.好象不太需要理会包的大小.收齐一个完整的包才触发事件...
-
模拟器不能使用摄像头的。
-
USB无线网卡供应商也许会给你DEMO代码,你的任务就是把它做成虚拟的网卡,就是把自己的数据按照网卡的协议格式上传到PC端,默认情况下,PC的windows操作系统会发现这些假的网卡数据,你可以用过滤驱动的方式,获取这些数据。并向下发送自己的PC端指令给网卡。
-
关键学校没有这方面的实验!怎么才能自学呢?