完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用的是PC7作为CCP4的输入捕获功能,但是无论我PC7怎么变化,始终进不了中断函数,附上timer的设置程序
,请那位大侠指点下原因 我注册了中断并使能了中断函数。 程序死在 while (!CPP4_Flag) // 等待捕获输入脉冲 这里,经检查未进中断 /* IR_Din -- PC7 */ #include "IR_CPP4.h" #include "uartGetPut.h" #include volatile tBoolean CPP4_Flag; volatile tBoolean T2A_TimerOut; void Timer2A_ISR(void); // 定时器16位输入边沿定时捕获功能初始化 void timerInitCapTime(void) [ SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2); // 使能Timer模块 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // 使能CCP4所在的GPIO端口PC7/CCP4 GPIOPinTypeTimer(GPIO_PORTC_BASE,GPIO_PIN_7); // 配置CCP4管脚为脉冲输入 GPIOPadConfigSet(GPIO_PORTC_BASE,GPIO_PIN_7, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); TimerConfigure(TIMER2_BASE, TIMER_CFG_16_BIT_PAIR | // 配置Timer为16位事件定时器 TIMER_CFG_A_CAP_TIME); TimerControlEvent(TIMER2_BASE, // 控制TimerA捕获负边沿 TIMER_A, TIMER_EVENT_NEG_EDGE); TimerControlStall(TIMER2_BASE, TIMER_A, true); // 允许在调试时暂停定时器计数 TimerIntRegister(TIMER2_BASE, TIMER_A,Timer2A_ISR);//注册中断服务程序 TimerIntEnable(TIMER2_BASE, TIMER_CAPA_EVENT| TIMER_TIMA_TIMEOUT); // 使能TimerA事件捕获中断和超时中断 IntEnable(INT_TIMER2A); // 使能TimerA中断 IntMasterEnable(); // 使能处理器中断 ] // 测量输入脉冲频率并显示 extern void lcd_write_stringxy(unsigned char x,unsigned char y,unsigned char *p); void pulseMeasure(unsigned char* s) [ unsigned short i; unsigned short usVal[2]; char ss[40]; CPP4_Flag = false; T2A_TimerOut = false; TimerLoadSet(TIMER2_BASE, TIMER_A, 0xFFFF); // 设置计数器初值 TimerEnable(TIMER2_BASE, TIMER_A); // 使能Timer计数 uartPuts("into looprn"); for (i = 0; i < 2; i++) [ while (!CPP4_Flag) // 等待捕获输入脉冲 if(T2A_TimerOut) break; CPP4_Flag = false; // 清除捕获标志 usVal = TimerValueGet(TIMER2_BASE, TIMER_A); // 读取捕获值 uartPuts("get valuern"); ] TimerDisable(TIMER2_BASE, TIMER_A); // 禁止Timer计数 sprintf(ss, "%d msrn", (usVal[0] - usVal[1]) / 6); // 输出测定的脉冲频率 uartPuts(ss); //if(!T2A_TimerOut) lcd_write_stringxy(0,2,s); ] // Timer2的中断服务函数 void Timer2A_ISR(void) [ unsigned long ulStatus; ulStatus = TimerIntStatus(TIMER2_BASE, true); // 读取当前中断状态 TimerIntClear(TIMER2_BASE, ulStatus); // 清除中断状态,重要! if (ulStatus & TIMER_CAPA_EVENT) // 若是TimerA事件捕获中断 [ CPP4_Flag = true; // 置位捕获标志 ] if (ulStatus & TIMER_TIMA_TIMEOUT) // 若是TimerA计时溢出中断 [ T2A_TimerOut = true; // 置位捕获标志 ] ] |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
683 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
599 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1054 浏览 1 评论
740 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
524 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
163浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
127浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
170浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 03:21 , Processed in 1.132946 second(s), Total 64, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号