CC2530定时器3通道1输入捕获中断
2015-07-30 14:42
351 查看
CC2530定时器3通道1输入捕获中断
使用的是tim3的通道1的输入捕获P1_7口。
//GPIO配置成复用功能,同时设置P1_7为输入。
使用的是tim3的通道1的输入捕获P1_7口。
//GPIO配置成复用功能,同时设置P1_7为输入。
//Capture.c static void Init_CaptureGPIO(void) { P1SEL |= (1<<7); //复用功能 P1DIR &= ~(1<<7); //设置 GPIO 口为输入 P1_7 = 1; PERCFG |= (1<<5); //定时器3的备用位置2,必须设置 P2SEL |= (1<<5); //定时器3优先 } static void Init_Timer3(void) { T3CTL = 0X00; //T3溢出中断屏蔽 T3CTL |= (1<<7); //16分频 - 1MHz T3CTL |= (1<<2); //清除计数器 T3CTL |= (1<<3); //溢出中断使能 T3CTL |= (1<<4); //启动定时器 T3 T3CCTL1 &= ~(1<<2); //捕获模式 T3CCTL1 |= 0X03; //两个下降沿都捕获 T3CCTL1 |= (1<<6); //使能通道1中断 IRCON = 0; //清除中断标志 T3IE = 1; //使能定时器3中断 } void Init_Timer3Caputure(void) { Init_CaptureGPIO(); Init_Timer3(); } //main.c #pragma vector = T3_VECTOR //定时器3 __interrupt void T3_ISR(void) { unsigned char a; if(TIMIF & (~0xFB)) //边沿触发中断 { a = T3CC1; if(a > 18 && a < 40) { rec1[signle++] = T3CC1; setFlag = 1; } T3CC1 = 0; IRCON = 0x00; //清中断标志,也可由硬件自动完成 } if(TIMIF & (~0xFE)) //溢出中断 { if(setFlag) { signle = 0; setFlag = 0; } IRCON = 0x00; //清中断标志,也可由硬件自动完成 } }
相关文章推荐
- 使用TextureView setTransform(Matrix)方法,解决Camera显示变形问题
- atom
- dialog.setCancelable(true);
- 视频显示
- Java获取客户端IP
- 微软发布独立Android模拟器 为开发者提供测试
- 代码审查的5点经验教训总结
- dos 命令——切换盘符与切换工作目录
- 预防肾脏病
- Core Animaiton - 8
- Openstack部署工具总结
- day14
- day15
- MATLAB符号运算
- 高级位操作技巧
- unity, surface shader access world position and localposition
- 网站设计
- javascript深入理解js闭包
- php 时间戳比较
- CheckBoxList 值写入与显示绑定