我参考数据手册上的例子进行设置,可以进入中断(PD5接了一个发光二极管闪烁)
我是用来接收红外遥控6122码的,按手册上说的,设置每一次下降沿捕获到信号后便中断并记录计数器当前值的话,我应有头码+客户码/反码+数据/反码共33个数据,而我仿真时只能收到6个数据,我想请问大神们我这样的设置为什么会出现这样的问题,另我是用的内部时钟HSI 16分频,计数器的时基应是1us吧?但是我收到的数值62远远偏离头码数值13.5ms。
以下是定时器和中断设置
void TIME1_INIT(void)
{
TIM1_PSCRH=0x00;
TIM1_PSCRL=0x0f; //16分频
TIM1_CCMR1=0x01; //不采样无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获;选择通道1
TIM1_CCER1=0x03; //cc1配置为输入 低电平或下降沿触发
TIM1_IER=0x02; //使能捕获1中断
TIM1_Cmd(ENABLE);
}
#pragma vector=0xE
__interrupt void TIM1_CAP_COM_IRQHandler(void)
{
GPIO_WriteReverse(GPIOD, GPIO_PIN_6); //翻转PD5发光二极管看是否有中断
capturedata[num] = TIM1_GetCapture1(); // 获得捕获时间 ,取数组前两位相减得到头码
num++;
if(num==33) //共33位
{
num=0;
}
TIM1_ClearFlag(TIM1_FLAG_CC1); // 清标志位
} |