zoukankan      html  css  js  c++  java
  • 第二次实验:CC2530平台上GPIO组件的TinyOS编程

    实验 CC2530平台上GPIO组件的TinyOS编程

    实验目的:

    1. 加深和巩固学生对于TinyOS编程方法的理解和掌握
    2. 让学生理解和掌握CC2530GPIO及外部中断,及其TinyOS编程方法
    3. 学生通过本实验能够初步的了解和掌握TinyOS编程的整个过程
    4. 高学生的上机和编程过程中处理具体问题的能力

    实验要求:

    1. 实验要求自己独立的完成
    2. 编写和调试过程中出现的问题记录,并事后总结到报告中
    3. 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
    4. 实验完成后,要上交实验报告

    实验内容:

    1. 开发一个新的应用,实现用一个按键对两个LED的控制。要求当按键按下时,LED1闪烁,按键松开时,LED1停止闪烁且关闭,LED2状态切换。以下述顺序完成这个新应用的开发。
      1. 首先采用轮询的方法实现上述功能;
      2. 然后采用外部中断的方法实现上述功能。
    2. 在实验报告中分别给出上述两个阶段的源码

    实验代码:

    (1)配置文件Test GPIOC.nc

    configuration TestGPIOC

    { }

    implementation

    {

    components MainC;

    components TestGPIOM as App;

    App.Boot->MainC.Boot;

    //CC2530 GPIO组件

    components HplCC2530GeneralIOC as GPIO;

    App.OkKey->GPIO.P0_Port[1];

    App.Led0->GPIO.P1_Port[1];

    App.Led1->GPIO.P1_Port[0];

    //定时器组件

    components new TimerMilliC() as Timer0;

    App.Timer0->Timer0;

    }

    (2)模块文件TestGPIOM.nc

    module TestGPIOM

    {

    uses interface Boot;

    uses interface Timer<TMilli> as Timer0; //定时器

    uses interface GeneralIO as OkKey; //GPIO接口

    uses interface GeneralIO as Led0;

    uses interface GeneralIO as Led1;

    }

    implementation

    {

    uint8_t OkValue;            //键值变量

    enum {NoKey,KeyDown,KeyUp};//按键状态

    uint8_t OkState;           //按键状态变量

    task void proKey() {}

    event void Boot.booted()

    {

    call OkKey.makeInput(); //设置为输入

    call Led0.makeOutput(); //设置为输出

    call Led1.makeOutput(); //设置为输出

    call Led0.clr(); //熄灭LED

    call Led1.clr();

    OkState=NoKey;

    OkValue=1;

    call Timer0.startPeriodic(100); //定时100ms

    }

    event void Timer0.fired()

    {

    OkValue=call OkKey.get();//获取键值

    switch(OkState)

    {

    case NoKey:

    if(OkValue==0)

    OkState=KeyDown;

    break;

    case KeyDown:

    if(OkValue==1)

    OkState=KeyUp;

    else

    call Led0.toggle();//切换LED状态

    break;

    case KeyUp:

    if(OkValue==1)

    {

    OkState=NoKey;

    call Led1.toggle();

    }

    else

    OkState=KeyDown;

    break;

    }

    }

    }

    (3)makefile 编译文件

    COMPONENT=TestGPIOC

    include $(MAKERULES)

    实验环境:

    1. 上位机操作系统为WindowsXP,在Cygwin环境下编译

    2. 集成开发环境为Notepad++ 

     

    实验报告人:木舟 报告时间2018.11.16

     

  • 相关阅读:
    RK3399之时钟
    C之{}注意点
    ARM之不用段寄存猜想
    linux驱动之入口
    android之HAL
    git
    消息中间之ActiveMQ
    Maven之阿里云镜像仓库配置
    清理Oracle临时表空间
    Tomcat控制台日志输出到本地文件
  • 原文地址:https://www.cnblogs.com/LeonNchu/p/10695758.html
Copyright © 2011-2022 走看看