zhongxueliang

    1. :handshake 我理解楼主,我也用过STM8S103F3P6芯片,PF6 - PF7引脚,当PF6输出为1时,PF7也为1 ,我怀疑是芯片出厂时根本就没有进行全部测试,或者说芯片设计就存在问题,最好的办法就是不用PF6、PF7二个引脚,最好换其它芯片了。
    2. :P 奖品不错,这样的活动多多支持
    3. :kiss: 自己顶一下,哈哈:lol
    4. :) C:\StellarisWare\boards\ek-lm3s8962 当然要在库路径下才能找到文件哦,我是放在C盘
    5. 我在这里要说明的是,前面的LED处理与PWM处理程序 只是改变了相关变量使 相关引脚反复切换状来控制LED的开/关,或者是改变切换的频率及占空比来控制PWM(即 蜂鸣器的驱动频率及占空比),这样可以改变 蜂鸣器的声音。 重点介绍的是红色部分程序:FS_ROOT 是一个 所有网页与图片数据 名称的结构体变量。 程序中 name 为要找的一个网页或者图片的 名称,然后程序中对 结构体变量中的所有的相关名称进行一一对比,如果name与相关名称相同,则把 FS_ROOT 结构体中的 子结构体变量的数据 赋值 给 ptFile 结构体变量。这样就达到了以名称name来寻找相关网页与图片数据的目的。 const struct fsdata_file file_block_htm[] = { {    file_family_htm,                 data_block_htm,                 data_block_htm + 11,                 sizeof(data_block_htm) - 11 }}; const struct fsdata_file file_404_htm[] = { {    file_block_htm,                 data_404_htm,                 data_404_htm + 9,                 sizeof(data_404_htm) - 9         }};     大家从上面的结构体中看出了什么?我们会发现这是一个嵌套的结构体,这样的目的也许是方便我们寻找相关文件及其相关数据。    系列三 就暂时讲述到这里了,如果上面表达不清楚或描述欠妥的地方请大家谅解,并回贴提出建议及改过方案。谢谢大家!
    6. // 设置PWM的占空比          io_pwm_dutycycle(ustrtoul(g_cSampleTextBuffer,NULL,10)); // Setup the file structure to return whatever.          ptFile->data = NULL;         ptFile->len = 0;         ptFile->index = 0;         ptFile->pextension = NULL; // 返回系统指针.          return(ptFile);     } //检查LED的开关状态?      if(strncmp(name, "/ledstate?id", 12) == 0)     {         static char pcBuf[4]; //获取LED的状态         io_get_ledstate(pcBuf, 4); ptFile->data = pcBuf;         ptFile->len = strlen(pcBuf);         ptFile->index = ptFile->len;         ptFile->pextension = NULL;         return(ptFile);     } // 检查PWM的频率状态?      if(strncmp(name, "/pwmstate?id", 12) == 0)     {         static char pcBuf[4];     // 获得PWM的状态         io_get_pwmstate(pcBuf, 4); ptFile->data = pcBuf;         ptFile->len = strlen(pcBuf);         ptFile->index = ptFile->len;         ptFile->pextension = NULL;         return(ptFile);     } // Request PWM Frequency?      if(strncmp(name, "/pwmfreqget?id", 14) == 0)     {         static char pcBuf[16]; // Get the frequency of the PWM         usprintf(pcBuf,"%d",io_get_pwmfreq()); ptFile->data = pcBuf;         ptFile->len = strlen(pcBuf);         ptFile->index = ptFile->len;         ptFile->pextension = NULL;         return(ptFile);     } // 检查PWM的占空比?      if(strncmp(name, "/pwmdutycycleget?id", 19) == 0)     {         static char pcBuf[16]; // 获得PWM的占空比         usprintf(pcBuf,"%d",io_get_pwmdutycycle()); ptFile->data = pcBuf;         ptFile->len = strlen(pcBuf);         ptFile->index = ptFile->len;         ptFile->pextension = NULL;         return(ptFile);     } else     {   /*00        把全部网页名称 都 赋值给  ptTree 变量 ,以便下面的   名称 比较*/                                                    ptTree = FS_ROOT; /*          检查  网页名称 不为 NULL  */                                                                                                                                         while(NULL != ptTree)         { /*01         当输入的  NAME  变量不是上面的任何一个情况时,则为一个网页名称. //   于是就和 网页名称 数组 进行全部比较,如果是其中一个网页名称则进入如下程序*/ if(strncmp(name, (char *)ptTree->name, ptTree->len) == 0)             {                ptFile->data = (char *)ptTree->data;                 ptFile->len = ptTree->len;                 ptFile->index = ptTree->len; ptFile->pextension = NULL; // 退出循环,返回系统文件. /* 02 执行完上面的程序后说明  NAME 的相关操作已经得到 数据处理          直接退出即可                */                 break; } /*01 否则就将下一个网页名称赋值给ptTree回到上面的while(NULL != ptTree) 进行比较是否相同*/            ptTree = ptTree->next; /*03     其中 next 就为网页 的  名称 指针,用 NEXT 来代替 名称 方便 编程             */         }     } /*        检查   通过 处理后(也有可能没有得到数据,也就没有进入过循环)  的数据 是否为空        */         if(NULL == ptTree)     {         mem_free(ptFile);         ptFile = NULL;     } /*                返回得到 数据 或 为 空的   ptFile 变量*/                                                                                                                                           return(ptFile); }
    7. // 处理PWM 频率更新 if(strncmp(name, "/pwm_freq?value=", 16) == 0)     {          // Get Frequency String          data = name;         data += 16;         i = 0;         do         {             switch(data)             {                 case 0:                 case '&':                     g_cSampleTextBuffer = 0;                     break;                 case '+':                     g_cSampleTextBuffer = ' ';                     break;                 default:                     g_cSampleTextBuffer = data;                     break;             }             if(g_cSampleTextBuffer == 0)             {                 break;             }             i++;         }while(i < sizeof(g_cSampleTextBuffer)); // 设置PWM频率          io_pwm_freq(ustrtoul(g_cSampleTextBuffer,NULL,10)); // Setup the file structure to return whatever.         ptFile->data = NULL;         ptFile->len = 0;         ptFile->index = 0;         ptFile->pextension = NULL; // 返回系统文件指针。          return(ptFile);     } // 处理PWM占空比的更新      if(strncmp(name, "/pwm_dutycycle?value=", 21) == 0)     {        // 得到占空比字符串         data = name;         data += 21;         i = 0;         do         {             switch(data)             {                 case 0:                 case '&':                     g_cSampleTextBuffer = 0;                     break;                 case '+':                     g_cSampleTextBuffer = ' ';                     break;                 default:                     g_cSampleTextBuffer = data;                     break;             }             if(g_cSampleTextBuffer == 0)             {                 break;             }             i++;         }while(i < sizeof(g_cSampleTextBuffer));
    8. 二、具体介绍   1、这个例程仿照了  enet_io 例程的过程,不过我在这里主要是讲述一下我自己的学习经验,以及如何进行类似的操作:      例程中同样采用了直接给     ulUser0=0x5555aaaa;ulUser1=0x5555aaaa;  赋值的办法      它的赋值规则在  Luminary Micro?Flash Programmer-Build 776 中也有介绍:    如果 MAC 地址是:00-1A-B6-00-02-74  话,则  ulUser0=0x00B61A00 ; ulUser1=0x00740200;             例程中:  lwIPInit(pucMACArray, 0xC0A80164, 0xffffff00, 0xC0A80101, IPADDR_USE_STATIC);    这条语句是设置 MAC 地址、子网掩码的、网关地址。其中网关地址  可设置为 0 也不会影响正常的网络通讯。关于电脑的本地连接上的设置,大家可以参考前面我写的《基于LM3S8962以太网的简单TFTP的服务器学习系列一》PDF 文档。         2、这里我具体分析一下 lmi_fs.c 这个C文件: struct fs_file * fs_open(char *name) {     char *data;     int i;     const struct fsdata_file *ptTree; struct fs_file *ptFile = NULL; /*分派内存给文件系统                                         */     ptFile = mem_malloc(sizeof(struct fs_file));     if(NULL == ptFile)     {         return(NULL);     } /* 19代表字符串长度*/      if(strncmp(name, "/cgi-bin/toggle_led", 19) == 0)     {         io_set_led(!io_is_led_on()); ptFile->data = NULL;         ptFile->len = 0;         ptFile->index = 0;         ptFile->pextension = NULL; return(ptFile);     }   // 处理PWM ON/OFF状态的请求 if(strncmp(name, "/cgi-bin/pwm_onoff", 18) == 0)     { io_set_pwm(!io_is_pwm_on()); ptFile->data = NULL;         ptFile->len = 0;         ptFile->index = 0;         ptFile->pextension = NULL; return(ptFile);    }
    9. 网络开发笔记2_第一张网页 22/14760 微控制器 MCU 2010-11-05
      :P 顶楼主
    10. LM3S8962串口输出hello word 5/3542 微控制器 MCU 2010-11-01
      :handshake 上传分享成果总值得赞扬,呵呵:congratulate:
    11. TI LM3S8962试用名单! 35/9106 微控制器 MCU 2010-11-01
      :D 我来顶一个,祝贺各位了:P :pleased:
    12. ;P GOOD,楼主太无私 了
    13. LM8962学习心得——查询方式控制按钮和灯 8/4998 微控制器 MCU 2010-10-20
      :time: 不错,呵呵,支持一下:D
    14. 魏坤第二版示波器试验资料(125Msps采样,双通道) 50/28572 DIY/开源硬件专区 2010-10-13
      楼主太佩服你了:congratulate:
    15. 传一些示波器资料 118/31896 DIY/开源硬件专区 2010-10-13
      :handshake
    16. 朋友“没有起点”贡献的示波器资料 180/52189 DIY/开源硬件专区 2010-10-13
      ;P 太强了,多谢了
    17. 示波器测量中的“热地”和“冷地”. 16/10644 DIY/开源硬件专区 2010-10-13
      :kiss: 这个概念我不懂,看一下了
    18. 清华大学-示波器测试原理 56/23228 DIY/开源硬件专区 2010-10-13
      :) 当然要支持了
    19. 03月07日 【EEWORLD带你DIY】示波器资料整理帖 144/42514 DIY/开源硬件专区 2010-10-13
      :funk: 太强了
    20. keil开发lm3s全部教程(打包) 122/36152 微控制器 MCU 2010-10-11
      谢谢分享,这个很强大:kiss:

最近访客

< 1/1 >

统计信息

已有1487人来访过

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

留言

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


现在还没有留言