- 打卡等级:初来乍到
- 打卡总天数:4
- 最近打卡:2025-06-25 16:37:57
新手上路
- 积分
- 46
|
各位大侠请教一下,问题如下:高级定时器用来对信号进行捕获i,cc1进行信号捕获,高级定时器计数器的时钟用的是144mHz,对2KHz及以下的信号采集,会出现计时器多次溢出的情况,程序里面配置了溢出事件中断,但是程序不中断,捕获中断。请问问题出在哪里?程序设置如下:
EAXFR = 1;//扩展寄存器(XFR)访问使能
CKCON = 0;//提高访问XRAM速度
HSPWMA_CFG = 0x07; //使能PWMA相关寄存器异步访问功能m,并使能异步模式PWM中断
WritePWMA((char)&PWMA_CCER1, 0x00); //写 CCMRx 前必须先清零 CCxE 关闭通道
WritePWMA((char)&PWMA_CCMR1, 0x01); //CC1为输入模式,请映射到TI1FP1上,通道模式配置
WritePWMA((char)&PWMA_CCMR2, 0x02);//CC2为输入模式,请映射到TI1FP2上
WritePWMA((char)&PWMA_CCER1, 0x31); //使能CC1/CC2捕获功能,设置捕获机型为CC1的上升沿CC2的下降沿
WritePWMA((char)&PWMA_SMCR, 0x54);//上升沿复位模式
WritePWMA((char)&PWMA_CR1, 0x03); //开始计时,允许计时器溢出更新中断
WritePWMA((char)&PWMA_IER, 0x07);//使能CC1/CC2捕获中断,使能更新事件中断
EA = 1; //打开总中断
中断程序:
void PWMA_ISR() interrupt 26
{
u32 cnt;
u8 sta;
sta = ReadPWMA((char)&PWMA_SR1);
if(sta & 0X01)//计时器溢出事件中断
{
jishiyichunum++;
P06 = ~P06;
}
if(sta & 0X02)//CC1捕获中断
{
P07 = ~P07;
cnt = ReadPWMA((char)&PWMA_CCR1H);
cnt = (cnt<<8)+ReadPWMA((char)&PWMA_CCR1L)+jishiyichunum*0xffff;//CC1捕获周期宽度
zhuce_time_interval = cnt;
jishiyichunum = 0;
}
if(sta & 0X04)//CC2捕获中断
{
P07 = ~P07;
cnt = ReadPWMA((char)&PWMA_CCR2H);
cnt = (cnt<<8)+ReadPWMA((char)&PWMA_CCR2L);//CC2捕获占空比(高电平宽度)
}
WritePWMA((char)&PWMA_SR1, 0x00); //清除完成标志
}
|
|