问题描述:
1.我现在需要配置GPIOCC26XX_DIO_21为上升沿触发的中断,来接外部传感器的引法,传感引脚会每8us为一方波信号周其输出,我需要读有多少个脉冲。中断配置OK,调试可以进中断
2.我用同样的逻辑代码在stm32下实现功能OK,读脉冲数正常,因传感有个转换时间为20ms,也就是每20ms传感器会以8us方波信号输出脉冲,输出正常是1200左右,stm32下面实现OK,同样的逻辑移植到cc1310上,通过GPIOCC26XX_DIO_21中断读出的脉冲数只有290多个相差太多。
3.注意:怀疑是不是cc1310中断响应不够快????4.在裸机下调试,工程是由gpiointtrupt改过来的,还是配置不正确????5.还是说有别的东西打拢了????现在很迷惑,请求大神,指点!!!!!
6.代码如下:
int main(void)
{
/* Call driver init functions */
Board_init();
/* Start NoRTOS */
NoRTOS_start();
/* Call mainThread function */
mainThread(NULL);
while (1) {}
}
GPIO_setConfig(Board_GPIO_NST1001_P, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);
GPIO_setConfig(Board_GPIO_NST1001_DQ, GPIO_CFG_IN_NOPULL | GPIO_CFG_IN_INT_RISING);//DQ 上升沿中断
GPIO_write(Board_GPIO_NST1001_P, 1);//给NST001供电
/* install Button callback */
GPIO_setCallback(Board_GPIO_NST1001_DQ, NST1001_Int);
C_FLAG = 0; //
CPUdelay(1000); //
//usleep(1000);
/* Enable interrupts */
GPIO_enableInt(Board_GPIO_NST1001_DQ);
if(C_FLAG==1)
{
C_FLAG = 0;
//usleep(10000); //
CPUdelay(10000*48/4);//大约10000us
//Task_sleep(1000);//以10us为单位,延时
if(C_FLAG==0) //
{
GPIO_disableInt(Board_GPIO_NST1001_DQ); //
data_wendu[i] = (COUNT*0.0625f - 50.0625f); //
//printf("short = %2.1f---%d\n",data_wendu[i],COUNT);
data_wendu[i] = compensate_temp(data_wendu[i]);
sum_wd += data_wendu[i];
i++;
if(i>=10)
{
for(i=1,min=max=data_wendu[0];i<10;i++)
{
if(data_wendu[i]<min) min = data_wendu[i]; //
if(data_wendu[i]>max) max = data_wendu[i]; //
}
data_wendu_rul = (sum_wd-min-max)/(10-2); //
// printf("short = %2.1f---%d\n",data_wendu_rul,COUNT);
i = 0;
sum_wd = 0;
}
COUNT=0;
GPIO_enableInt(Board_GPIO_NST1001_DQ); //使能中断 CPUdelay
GPIO_toggle(Board_GPIO_LED0);
}
}