当前位置 : 首页 > 技术 > 手工教程 > 打造自己的专属鼠标——鼠标DIY教程(二) > 全部评论

  • 会员头像
    quwei80  2017-03-22 16:35:26
    路过瞧瞧!
    点赞 (0) 回复
  • 会员头像
    zu7dao  2017-03-20 10:33:01
    路过帮顶
    点赞 (0) 回复
  • 会员头像
    mjg870923  2011-01-16 20:42:14
    顶啊 比我们专业课老师讲的好多了
    点赞 (0) 回复
  • 会员头像
    75657092  2011-01-16 10:30:48
    帮顶!
    点赞 (0) 回复
  • 会员头像
    zeroroyal  2011-01-16 03:21:22
    看题目头没看内容就知道这贴强大了…膜拜大神!
    点赞 (0) 回复
  • 会员头像
    budong  2011-01-15 23:32:18
    跟楼上几位一起看不懂。。。。。
    点赞 (0) 回复
  • 会员头像
    乖囝囝1019  2011-01-15 23:29:26
    学了C跟C++的毫无压力~
    点赞 (0) 回复
  • 会员头像
    izyzy  2011-01-15 11:16:04
    围观天书
    点赞 (0) 回复
  • 会员头像
    weiwei3278  2011-01-15 10:52:48
    我是分享看楼主最后的作品
    点赞 (0) 回复
  • 会员头像
    lijunsu27  2011-01-15 08:15:44
    速效睡眠神帖,顶了
    点赞 (0) 回复
  • 会员头像
    caomao202  2011-01-15 06:34:45
    写个测鼠标垫那个吧
    点赞 (0) 回复
  • 会员头像
    refire  2011-01-15 05:37:34
    强帖,留名
    点赞 (0) 回复
  • 会员头像
    玉米  2011-01-15 02:33:34
    高手~大神~膜拜~
    点赞 (0) 回复
  • 会员头像
    victorjeff  2011-01-14 21:02:02
    其实楼主可以自己弄个品牌了
    点赞 (0) 回复
  • 会员头像
    REDZENDIC  2011-01-14 20:59:12
    略懂略懂~
    点赞 (0) 回复
  • 会员头像
    a407450333  2011-01-14 20:57:58
    神马,不懂
    点赞 (0) 回复
  • 会员头像
    zsxh  2011-01-14 20:47:50
    继续看不懂
    点赞 (0) 回复
  • 会员头像
    气球  2011-01-14 20:27:48
    没看明白{:1_007:}
    点赞 (0) 回复
  • 会员头像
    TanKaFei  2011-01-14 20:21:19
    前排,哪怕看不懂~!
    点赞 (0) 回复
  • 会员头像
    zqgzq  2011-01-14 20:19:36
    强帖,留名
    点赞 (0) 回复
  • 会员头像
    超电磁侠  2011-01-14 20:03:45
    [i=s] 本帖最后由 超电磁侠 于 2011-1-14 20:08 编辑 [/i][size=4][font=宋体]3[font=宋体]、[/font][font=Times New Roman]RTOS[/font][font=宋体],实时操作系统[/font][/font][font=宋体][/font][/size][size=4][font=宋体][/font][/size][size=4][font=宋体] 首先我们来理解一下多任务,以电脑为例,我们现在在[font=Times New Roman]windows[/font][font=宋体]下同时打开好几个程序是习以为常的,每一个程序就对应一个“任务”,我们的[/font][font=Times New Roman]cpu[/font][font=宋体]只有一个,(虽然现在多核很常见,我们不扯远)所以[/font][font=Times New Roman]windows[/font][font=宋体]会将[/font][font=Times New Roman]cpu[/font][font=宋体]按一个时间来分配给各个任务, 让它们看起来是在“同时”运行一样。为什么我们会感觉不到延迟?电脑[/font][font=Times New Roman]CPU[/font][font=宋体]每秒数百万次以上的运算能力不是摆在那看的[/font][font=Times New Roman]....[/font][/font][font=宋体][/font][/size][size=4][font=宋体]说回单片机,虽然运算能力不像通用处理器那样强,但是也能实现多任务,一种办法是状态机([font=Times New Roman]state machine[/font][font=宋体]),什么是状态机? 有很多种解释,在编程上,可以说是根据条件进行筛选进入不同的任务循环。[/font][/font][font=宋体][/font][/size][size=4][font=宋体]第二种办法就是[font=Times New Roman]RTOS[/font][font=宋体],[/font][font=Times New Roman]real-time operating system[/font][font=宋体],比起状态机,[/font][font=Times New Roman]rtos[/font][font=宋体]能实现任务调度,任务间的信息交换,对于我们写鼠标固件来说,最重要的是能比较精确地控制每个任务的执行。[/font][font=Times New Roman]RTOS[/font][font=宋体]的任务调度有很多种,就[/font][font=Times New Roman]CCS[/font][font=宋体]提供的[/font][font=Times New Roman]RTOS[/font][font=宋体]来说,它是一个循环型的([/font][font=Times New Roman]round-robin[/font][font=宋体])的任务系统,每个任务预先指定一个执行时间,每个任务的运行时间都是相同的。一个任务执行完毕,就等待到执行另外一个任务的时刻。下面我们就来试一下用[/font][font=Times New Roman]CCS[/font][font=宋体]的[/font][font=Times New Roman]RTOS[/font][font=宋体]。[/font][/font][font=宋体][/font][/size][size=4][font=宋体] //[color=#FF0000] [font=宋体]上面那些依然是基本三件套,略[/font][/color][/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][size=4][font=宋体]#use rtos(timer=0, minor_cycle=100ms) // [font=宋体]使用[/font][font=Times New Roman]rtos[/font][font=宋体],使用[/font][font=Times New Roman]0[/font][font=宋体]号计时器,关于[/font][font=Times New Roman]18f14k50[/font][/font][font=宋体][/font][/size][size=4][font=宋体] //[font=宋体]的计时器有多少个请参考[/font][font=Times New Roman]PDF[/font][font=宋体], [/font][font=Times New Roman]minor_cycle, [/font][/font][font=宋体][/font][/size][size=4][font=宋体] //[font=宋体]将时间按多少秒来分段[/font][/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][size=4][font=宋体]#task(rate=1000ms, max=100ms) // [font=宋体]任务参数,[/font][font=Times New Roman]rate[/font][font=宋体]必须为[/font][font=Times New Roman]minor_cyle[/font][font=宋体]的整倍数每[/font][/font][font=宋体][/font][/size][size=4][font=宋体] void LED(); //1000ms[font=宋体]执行一次,[/font][font=Times New Roman]max[/font][font=宋体]最大执行时间,不超过上[/font][/font][font=宋体][/font][/size][size=4][font=宋体] //[font=宋体]面定义的[/font][font=Times New Roman]minor_cyle[/font][font=宋体]的值。 跟着指定这个任务的[/font][/font][font=宋体][/font][/size][size=4][font=宋体] //[font=宋体]函数名字[/font][/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][font=宋体][size=4][/size][/font][size=4][font=宋体]void LED() // [font=宋体]定义函数。[/font][/font][font=宋体][/font][/size][size=4][font=宋体]{[/font][font=宋体][/font][/size][size=4][font=宋体] output_toggle(PIN_C0); // output_toggle[font=宋体]()[/font][font=Times New Roman]CCS[/font][font=宋体]的函数,“开关”一个端口,上次[/font][/font][font=宋体][/font][/size][size=4][font=宋体] // [font=宋体]为开,则这次关上,上次为关,则这次打开。即端口输[/font][/font][font=宋体][/font][/size][size=4][font=宋体] //[font=宋体]出高低变化。[/font][/font][font=宋体][/font][/size][size=4][font=宋体]}[/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][font=宋体][size=4][/size][/font][size=4][font=宋体]void main(void) //[font=宋体]必备的保留节目[/font][/font][font=宋体][/font][/size][size=4][font=宋体]{[/font][font=宋体][/font][/size][size=4][font=宋体][/font][/size][size=4][font=宋体] rtos_run(); // rtos[font=宋体]运行的号角[/font][/font][font=宋体][/font][/size][size=4][font=宋体]}[/font][font=宋体][/font][/size][font=宋体][size=4][/size][/font][font=宋体][size=4][/size][/font][size=4][font=宋体]编译,运行,怎么样,[font=Times New Roman]LED[/font][font=宋体]也是一闪一闪的了。[/font][/font][font=宋体][/font][/size][font=宋体][/font][font=宋体][img]http://mdooxw.blu.livefilestore.com/y1pBGrz5u1_HIhY4tddTT1ITKQpsoQ19UH28SGxl_rhkqr_-tqmlhTvoU-DFS-k5eNySZh2G1O1obxHR4sWm-C1JF6mtVLNqC34/T21.jpg?psid=1[/img] [/font][font=宋体][font=宋体][font=宋体][size=4]本期先到这,因为动手的内容比较多,有兴趣[font=Times New Roman]DIY[/font][font=宋体]的不要怕麻烦,打完一盘[/font][font=Times New Roman]dota[/font][font=宋体]或者[/font][font=Times New Roman]CF[/font][font=宋体]歇歇的时间就可以用来去下载软件,运行运行例子了。[/font][/size][/font][font=宋体][size=10.5pt][/size][/font][/font][/font][font=宋体][/font]
    点赞 (0) 回复