三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 369|回复: 0
打印 上一主题 下一主题

blink-blink.c源码分析

[复制链接]

1657

主题

1684

帖子

5684

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5684
跳转到指定楼层
楼主
发表于 2017-6-12 13:41:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件名称:blink.c测试平台:SM14Z2538DK1
源码分析:
1.头文件声明
系统api声明文件
  1. #include "contiki.h"
复制代码
驱动文件
  1. #include "dev/leds.h"
复制代码
2.进程
  1. PROCESS(blink_process, "Blink");
复制代码
3.在系统初始化的时候自动启动这个进程
  1. AUTOSTART_PROCESSES(&blink_process);
复制代码
4.进程实现
  1. PROCESS_THREAD(blink_process, ev, data)
复制代码
5.进程退出的时候执行这个进程
  1. PROCESS_EXITHANDLER(leds_off(LEDS_ALL););
复制代码
6.进程开始
  1. PROCESS_BEGIN();
复制代码
7.定义一个事件定时器对象
  1. static struct etimer et;
复制代码
8.设置事件定时器
  1. etimer_set(&et, CLOCK_SECOND);
复制代码
9.等待定时器事件,如果事件定时器发生,则程序往下执行
  1. PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
复制代码
10.复位定时器
  1. etimer_reset(&et);
复制代码
11.LED全部点亮
  1. leds_on(LEDS_ALL);
复制代码
12.等待定时器事件
  1. PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
复制代码
13.复位定时器
  1. etimer_reset(&et);
复制代码
14.熄灭所有LED
  1. leds_off(LEDS_ALL);
复制代码
15.整个过程使用while循环此过程,实现LED闪烁的功能
  1. while(1) {
  2.     PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
  3.     etimer_reset(&et);
  4.     leds_on(LEDS_ALL);

  5.     PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et));
  6.     etimer_reset(&et);
  7.     leds_off(LEDS_ALL);
  8.   }
复制代码
16.进程结束
  1. PROCESS_END();
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2026-3-13 00:04 , Processed in 0.026195 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表