zoukankan      html  css  js  c++  java
  • 实验三 CC2530平台上CC2530平台上定时器组件的

    实验 CC2530平台上CC2530平台上定时器组件的TinyOS编程

    实验目的:

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

    实验要求:

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

    实验内容:

    1. 开发一个新的应用,能够利用Timer1或者Timer3或者Timer4PWM功能,实现对LED灯亮暗的连续变化
      1. 首先使得LED灯可以周而复始的由暗变亮,再由亮变暗
      2. 然后在上述基础上加入按键功能实现按下逐渐变亮,放开逐渐变暗的功能。
    2. 在实验报告中分别给出上述两个阶段的源码

    实验代码:

    (1)配置文件PWMAppC.nc

    configuration PWMAppC

    { }

    implementation{

    components MainC;

    components PWMAppM as App;

    App.Boot->MainC.Boot;

    components LedsC;  //LED组件

    App.Leds -> LedsC.Leds;

    components HplCC2530GeneralIOC as GPIO;

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

    components new TimerMilliC() as Timer1;

    App.Timer1 -> Timer1;

    }

    (2)模块文件PWMM.nc

    module PWMAppM

    {

    uses interface Boot;

    uses interface Leds;

    uses interface Timer<TMilli> as Timer1;

    uses interface GeneralIO as OkKey;

    }

    implementation{

    int CNT=0;

    uint8_t OkValue;            //键值变量

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

    uint8_t OkState;           //按键状态变量

    task void test(){}

    event void Boot.booted()

    {

    P1SEL |= 0x01;

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

    call Leds.set(0);

    OkState=NoKey;

    OkValue=1;

    T4CC0=0xFF;

    T4CCTL0 |= BV(2);

    T4CCTL0 |=(0x5 << 3);

    T4CTL |= BV(2);

    call Timer1.startPeriodic(20);

    }

    event void Timer1.fired()

    {

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

    switch(OkState)

    {

    case NoKey:

    if(OkValue==0)

    OkState=KeyDown;

    break;

    case KeyDown:

    if(OkValue==1)

    OkState=KeyUp;

    else

    {

    if(CNT<100)

    CNT++;

    else

    CNT=100;

    }

    break;

    case KeyUp:

    if(OkValue==1)

    {

    if(CNT>0)

    CNT--;

    else

    CNT=0;

    }

    else{

    OkState=KeyDown;

    }

    break;

    }

    T4CC0=CNT;

    }

    }

    (3)makefile 编译文件

    COMPONENT=PWMAppC

    include $(MAKERULES)

    实验环境:

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

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

    event void Boot.booted()

    {

    call Leds.set(0xf);

    T4CC0=0xFF;

    T4CCTL0 |= BV(2);

    T4CCTL0 |=(0x5 << 3);

    T4CTL |=BV(2);

    T4CTL |=BV(CC2530_T34CPL_START);

    call Timer1.startPeriodic(50);

    }

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

     

  • 相关阅读:
    测试类型
    测试方法
    测试评估
    测试过程
    测试用例设计方法之等价类划分法
    笔记 asp.net (写给自己的。。。)
    笔记 php (写给自己的。。。)
    Session_Start和Session_End
    笔记 javascript 写给自己的(未完。。。)
    BUTTON标签和INPUT标签的区别
  • 原文地址:https://www.cnblogs.com/LeonNchu/p/10695773.html
Copyright © 2011-2022 走看看