在线时间18 小时
UID1679091
注册时间2016-11-17
NXP金币0
TA的每日心情 | 难过 2017-2-9 09:58 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
注册会员

- 积分
- 143
- 最后登录
- 2018-6-29
|

楼主 |
发表于 2018-3-9 09:15:45
|
显示全部楼层
多谢您的解答!
问题综述:用输入捕获的方式测量方波信号上升沿和下降沿之间的时间,需要考虑此期间定时器溢出的问题(溢出是肯定存在的),计数值=通道2值+65536*溢出次数-通道1值。
问题解决思路:上升沿(通道1)来临时,进中断(开启溢出中断,开启下降沿中断);
每次溢出时,变量++,直到下降沿(通道2)来临;
读取数据,计算值
实际困难:CPU能够响应通道1中断,同时开启溢出中断和通道2下降沿中断后,程序只进一次溢出中断,无法继续执行。
疑问:是不是对于一个定时器,不能同时开启两个中断(即溢出中断和通道2下降沿中断)??
FTM_EnableInterrupts(DEMO_FTM_BASEADDR, FTM_CHANNEL_A_INTERRUPT_ENABLE);//开启通道1中断
EnableIRQ(FTM_INTERRUPT_NUMBER);
/ * 检测通道1中断*/
while (ftmIsrFlagCha != true)
{
}
FTM_DisableInterrupts(DEMO_FTM_BASEADDR,FTM_CHANNEL_A_INTERRUPT_ENABLE);//禁止通道1中断
FTM_EnableInterrupts(DEMO_FTM_BASEADDR,FTM_TIMEOVER_INTERRUPT_ENABLE);//使能溢出中断
FTM_EnableInterrupts(DEMO_FTM_BASEADDR,FTM_CHANNEL_B_INTERRUPT_ENABLE);//使能通道2中断
EnableIRQ(FTM_INTERRUPT_NUMBER);
/ * 检测定时器溢出中断,直到通道2下降沿中断来临*/
while(ftmIsrFlagChb != true)
{
while (ftmIsrFlagTimeover != true)
{
}
timeoverCount++;
ftmIsrFlagTimeover=false;
}
|
|