首页 > 其他分享 >ZigBee CC2530 定时器1中断

ZigBee CC2530 定时器1中断

时间:2023-04-21 16:32:46浏览次数:54  
标签:LED1 定时器 ZigBee void P1 CC2530 define


#ZigBee CC2530 定时器1中断

这段时间做一个智能家居的项目,用到ZigBee芯片,自然想到用CC2530。

今天分享一个很简单的,通过按键控制定时器开启关闭,定时器中断函数里控制LED闪烁。

#include <ioCC2530.h>
#define uint   unsigned  int
#define uchar  unsigned  char

#define LED1   P1_0	        //定义LED1为P10口控制
#define LED2   P1_1	        //定义LED2为P11口控制
#define LED3   P1_4	        //定义LED3为P14口控制 
#define KEY_S1   P0_1           // 

/****************************/  
//定时器1中断函数  
/****************************/  
#pragma vector = T1_VECTOR  
__interrupt void T1_ISR(void)  
{  
  LED1 = !LED1;  
}  

void Delay(uint n)
{
  uint i;
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
  for(i = 0;i<n;i++);
}

void TimerInit(void)
{
  
  CLKCONCMD &= ~0x40;         //选择外部石英晶振
  while(!(SLEEPSTA & 0x40));  //等待晶振稳定    
  CLKCONCMD &= ~0x47;         //TICHSPD二分频,CLKSPD不分频   
  SLEEPCMD |= 0x04;           //关闭RC振荡器   
  
  T1CTL = 0x0E;              //设置定时器T1,128分频,模模式,从0计数到T1CC0       
  T1CC0L = 62500%256;         //装入定时器初值(比较值)
  T1CC0H = 62500/256;         
  
  T1CCTL0 |= 0x04;            //设置捕获比较通道0为比较模式,用以触发中断
  T1IE = 1;                   //使能Timer1中断
  EA = 1;                     //开启总中断    
}
 
void LedInit(void)
{
  P1DIR = 0x13; 	         //P10 P11 P14为输出   
}

void KeyInit(void)
{
  P0SEL &= ~0X02;  
  P0DIR &= ~0X02;  
  P0INP |= 0x02;         
}



/***************************
//主函数
***************************/
void main()
{
  int isStop=0;
  LedInit();
  KeyInit();
  TimerInit(); 	  
  while(1)   	          
  {           
    if(KEY_S1 == 0)    
    {
      Delay(100);   
      if(KEY_S1 == 0) 
      {
        while(KEY_S1==0);   
        if(isStop)
        {
          isStop=0;
          T1CTL = 0x0C;  
        }else{ 
          isStop=1;
          T1CTL = 0x0E;
        }
      }
    }
  }
}



标签:LED1,定时器,ZigBee,void,P1,CC2530,define
From: https://blog.51cto.com/u_16081772/6213493

相关文章

  • STM32定时器的输出比较功能——输出PWM波形
    输出比较OC(OutputCompare)输入捕获IC(InputCapture)输入捕获和输出比较单元CC(Capture/Compare)输出比较模块的最主要功能:通过比较CNT(时基单元里的计数器,计数自增)和CCR寄存器(比较捕获寄存器,给定值)的关系,来对输出电平进行置1,置0或翻转的操作,用于输出一定频率和占空比的PWM波形......
  • 定时器外部时钟
    【硬件连接】 其中:对射式红外传感器DO数字输出接PA0接口,也是TIM2的ETR引脚可以在引脚定义图里找TIMx的etr引脚是哪个【定时器外部时钟初始化与内部时钟不一样的部分】1.//选择时基单元时钟,选择外部部时钟TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_Ext......
  • vue项目使用定时器每隔几秒运行一次某方法
    代码如下:data(){return{timer:null,//定时器名称};},created(){this.setTime();},beforeDestroy(){clearInterval(this.timer);//清除定时器this.timer=null;},methods:{setTime(){//每隔一分钟运行一次保存方法this.timer......
  • JMeter 逻辑控制器、定时器、分布式、报告、并发数计算方法、性能监控
    一、逻辑控制器可以按照设定的逻辑控制取样器的执行顺序1、IF控制器(没有else,如果有其他分支,则一直加IF控制器即可)控制它下面的测试元素是否运行位置:测试计划---线程组---(右键添加)逻辑控制器---如果(IF)控制器参数: 案例:(用......
  • 关于定时器ETR计数功能
    关于使用定时器计算外部脉冲的方式,除却使用输入捕获方式之外,还可以使用定时器的ETR计数方式。如下图,首先关于定时器的时钟输入来源,可以分为4类,如下图:当使用选择外部时钟源模式2时,可在外部时钟输入引脚的每一个上升沿或者下降沿计数,如下图介绍:关于使用ETR计数功能的初始化配置......
  • Tim定时器2【功能最强大结构最复杂的外设】
    【定时中断基本结构】 【预分频器时序】   重要前提:在改变预分频系数的时候,得等到下一次计数周期才能改变实际的频率预分频器的输入时钟CK_PSC:选内部时钟的话一般是72MHz计数器使能CNT_EN:高电平计数器正常运行,低电平计数器停止计数器时钟CK_CNT:既是预分频器的时钟输出......
  • day8 golang-chan-协程-定时器-锁-等待组
    packagemainimport( "fmt" "math/rand" "sync" "sync/atomic" "time")funcexample1(){ //不要这样写,阻塞就死无法解除,零值nil varc1chanint fmt.Printf("%d,%d,%v",len(c1),cap(c1),c1) //c1<-1......
  • Tim定时器【功能最强大结构最复杂的外设】
    【定时器基本定时的功能】:定一个时间,让定时器每隔这个时间产生一个中断,达到每隔一个固定时间执行一段程序的目的。定时器TIM(Timer)可以对输入的时钟进行计数,并在计数值达到设定值时触发中断可以理解为计数器,计时的过程是对基准时钟进行计数的功能。在STM32中,定时器的基准时钟一......
  • 2022山东高职Zigbee点对点开发
    2022山东高职Zigbee点对点开发题目3、ZigBee设备功能开发使用两个蓝色ZigBee节点盒进行组网通讯,并分别命名为节点端和控制端。节点端上安装双联继电器模块并外接风扇、照明灯。根据任务要求完成功能开发。任务要求:在控制端点击SW1键后,板上的LED1灯实现间隔0.5秒亮......
  • swagger2与定时器
    1.springboot整合swagger21.1什么是swagger2Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务的接口文档.接口:controller相应的路径方法1.2为什么是swagger2目前的项目基本都是前后端分离,后端为前端提供接口的同时,还需同时提供......