-
先找出问题的根源,然后根据具体现象找解决办法。
-
引用 1 楼 daifeijin 的回复:
用你的应用程序替换explorer.exe就可以了!
exeplorer.exe不能替换,我的应用程序依赖于exeplorer.exe
还有别的办法吗?
-
{6563AD6C-E71C-11D4-B892-0050FC049781}
-
继续期待
-
看看,了解一下
-
由4*64M SDRAM不好吧,ARM有那么多nGSC管脚吗
-
呵呵。很不幸,我试过了。。。发送数据不需要中断没问题的。。我这有块开发板。。。。
-
用白话说就是通过方向判断
看看移动物体是朝向哪个站点的方向前进
-
引用楼主 huangjinsheng726 的回复:
我定义了一个uchar[1]数组,其中uchar[0]保存一个汉字unicode编码值的高8位,uchar[1]保存这个汉字unicode编码值的低8位,
请问如何把这两个字节合并出一个完整的汉字unicode编码值?
语言基本的位移运算和逻辑运算
-
CPU接口屏的操作方式和LCD接口屏的一样吗?你有没有分别处理?
-
上拉电阻就是限流+高电平
-
折腾了两天,居然又变好了
我只是重装了下vs2005 开发环境
不知道为啥
可惜没搞清楚原因,不知道还会不会发生同样的错误!
麻烦各位大侠了
-
TCHAR buf1[3]=_T("7A");
CString str;
str.Format(_T("%d"),(buf1[0]-'0')+(buf1[1]-'0')*16);
SetDlgItemText(IDC_EDIT1,str);
测试是可以的。
-
放大和分块的方法都可以。
必须32*32 汉字 分成4个8*8;
对一个数组储存左上角的8*8,数组2储存右上角的8*8;
数组3储存左下角的8*8,数组4储存右下角的8*8
显示的时候依次显示 一块一块的显示既可以。
-
LS正解
-
。。。真笨,还没实现在FLASH 分区盘符。。。
努力中 ,大虾们有人做过吗?
-
static BYTE FindID(BYTE nID)
{
BYTE i = 0;
for(i = 0; i < MAX_TIMER_EVENT_NUM; i++)
{
if(TimerInfoArray.nID == nID)
return i;
}
static BOOL Remove(BYTE nID)
{
BYTE nIndex = FindID(nID);
BYTE nRest = g_nTimerInfoNum - nIndex - 1;
if(nIndex == MAX_TIMER_EVENT_NUM || nID == 0)
return FALSE;
if(nRest == 0) //已经是队列尾元素
{
memset(&TimerInfoArray[nIndex], 0, sizeof(TIMERINFO));
}
else
{//删除后,前移
memcpy(&TimerInfoArray[nIndex], &TimerInfoArray[nIndex + 1], sizeof(TIMERINFO) * nRest);
memset(&TimerInfoArray[nIndex + nRest], 0, sizeof(TIMERINFO) * (MAX_TIMER_EVENT_NUM - (nIndex + nRest) - 1));
}
g_nTimerInfoNum--;
return TRUE;
}
CT-->好象有点问题,但不能肯定,如果现在没有开你自己设定的软timer,此时应该有g_nTimerInfoNum为0,而程序调用了Remove(1),好象会把g_nTimerInfoNum减成0xFF
CT-->下面说几点我个人对你TIMER代码的观点(再次强调你的思路是好的)
1.可能是你习惯PC编程,程序中看不到你对单片机的RAM/ROM资源的珍贵性认识,你的代码在中断里面需要判断5个软timer,当然可以将其设为你所讲的2,但是即便是2也有循环控制语句,然后又有数组操作,你可以查看对应的汇编代码,并不是C语言看上去的一条,而是多条汇编指令,所以时间空间都有不良影响。
2.我看到你的代码的堆栈处理需要一定RAM,你好象没有重视这个问题。
KillTimer0(BYTE nID)
调用Remove(nID)
调用FindID(nID)
调用memcpy/memset,如果此时TIMER中断产生
调用Timer0ISR
调用(*g_pfnTimerFunc)(TimerInfoArray.nID) 自己注册的回调函数
初步算存在6级嵌套的可能,不能确认51的堆栈是不是放在通用寄存器区段的,如果是你计算一下这里需要多少字节的RAM,另外每一级函数也有自己的局部变量需要申请临时空间,也需要一定的RAM,会不会产生溢出?
3.小的单片机,是不建议在中断中调用函数的,有的单片机甚至明确禁止这样操作。
4.如果现在有一个2kROM/32BytesRAM的单片机,主频8MHz,系统时钟4分频,需要用软件模拟出一个频率固定为10kHz占空比可调的PWM波,调整步长越细越好,看你的方法是否适用?
10kHz=100us,指令周期为8MHz/4=0.5us,跳转指令需要2个指令周期,其它指令为单指令周期
5.对于TIMER的配置只是对你所用的51有用,其它的MCU配置方法可能完全不一样,就计数方式有的可以自动重载,可有的需要人工重载,有的是往上加,有的是往下减,有的还另外支持系统分频......
所以还是前面说到的,通用性不高,唯一能通用的只有思维方式。
6.感觉你写的代码是参考了用51实现RTOS,哈哈,如果猜错了别见怪。
-
load地址不对?应该有些设置的吧?
-
这么好的事情还有拒绝的啊,呵呵
-
能说的详细点吗