jfive

    1. stm中断问题 3/2861 stm32/stm8 2010-07-06
                                       先找出问题的根源,然后根据具体现象找解决办法。
    2. 请教wince 任务栏的问题 14/8679 嵌入式系统 2010-06-21
      引用 1 楼 daifeijin 的回复: 用你的应用程序替换explorer.exe就可以了!
      exeplorer.exe不能替换,我的应用程序依赖于exeplorer.exe 还有别的办法吗?
    3. WinCE5中的CEC文件如何做出Choose 1的效果 4/3682 嵌入式系统 2010-05-28
      {6563AD6C-E71C-11D4-B892-0050FC049781}
    4.                                  继续期待
    5. arm指令mrc的疑惑 4/6286 ARM技术 2010-05-18
      看看,了解一下
    6. 由4*64M SDRAM不好吧,ARM有那么多nGSC管脚吗
    7. 呵呵。很不幸,我试过了。。。发送数据不需要中断没问题的。。我这有块开发板。。。。
    8. 很苦恼的GPS座标比对 8/3660 嵌入式系统 2010-03-23
      用白话说就是通过方向判断 看看移动物体是朝向哪个站点的方向前进
    9. 关于unsigned char和unicode转换的问题 4/4742 嵌入式系统 2010-03-02
      引用楼主 huangjinsheng726 的回复: 我定义了一个uchar[1]数组,其中uchar[0]保存一个汉字unicode编码值的高8位,uchar[1]保存这个汉字unicode编码值的低8位, 请问如何把这两个字节合并出一个完整的汉字unicode编码值?
      语言基本的位移运算和逻辑运算
    10. CPU接口屏的操作方式和LCD接口屏的一样吗?你有没有分别处理?
    11. 上拉电阻就是限流+高电平
    12. wince 下字符类型转换问题 23/8563 嵌入式系统 2010-01-06
      折腾了两天,居然又变好了 我只是重装了下vs2005 开发环境 不知道为啥 可惜没搞清楚原因,不知道还会不会发生同样的错误! 麻烦各位大侠了
    13. tchar字符串转换为十进制的方法 10/4284 嵌入式系统 2009-12-14
      TCHAR buf1[3]=_T("7A"); CString str; str.Format(_T("%d"),(buf1[0]-'0')+(buf1[1]-'0')*16); SetDlgItemText(IDC_EDIT1,str); 测试是可以的。
    14. 点阵字库如何放大显示? 9/4661 嵌入式系统 2009-12-03
      放大和分块的方法都可以。 必须32*32 汉字 分成4个8*8; 对一个数组储存左上角的8*8,数组2储存右上角的8*8; 数组3储存左下角的8*8,数组4储存右下角的8*8 显示的时候依次显示 一块一块的显示既可以。
    15. 驱动程序是顺序执行的吗 7/4427 嵌入式系统 2009-12-02
      LS正解
    16. SOS,wince 5.0 Flash做U盘UsbMsFn!STORE_Init: fail... 34/12456 嵌入式系统 2009-11-26
      。。。真笨,还没实现在FLASH 分区盘符。。。 努力中 ,大虾们有人做过吗?
    17. 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,哈哈,如果猜错了别见怪。
    18. 关于使用axd加仿真器调试bootrom的问题 8/4003 嵌入式系统 2009-11-11
      load地址不对?应该有些设置的吧?
    19. 恭喜一下STM8S 3/3565 stm32/stm8 2009-10-30
                                       这么好的事情还有拒绝的啊,呵呵
    20. IEEE 754标准 3/3617 嵌入式系统 2009-10-29
      能说的详细点吗

最近访客

< 1/1 >

统计信息

已有91人来访过

  • 芯积分:--
  • 好友:--
  • 主题:9
  • 回复:53

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言