我写了这样一段程序来使用JN5139的
timer capture功能,功能正常;
问题是如果在timer中断程序中使用了
vAHI_TimerDisable(E_AHI_TIMER_1);
在主程序循环中增加了:vAHI_TimerEnable(E_AHI_TIMER_1, 0x00, FALSE, TRUE, FALSE);
程序就会出现问题,UART端口就不能将采集的数据显示到电脑上(程序有没有执行也不知道)
求高手指导一下问题出在什么地方?
我的邮箱:
wxh_190211@163.com
程序:
//主程序中的一部分:
vAHI_TimerEnable(E_AHI_TIMER_1, 0x00, FALSE, TRUE, FALSE);
vAHI_TimerDIOControl(E_AHI_TIMER_1,TRUE);
vAHI_Timer1RegisterCallback(vTimer1CallBack);
while(1)
{
vAHI_DioSetOutput(E_AHI_DIO20_INT, 0);
vAHI_TimerStartCapture(E_AHI_TIMER_1);
vDelay(0x0ff0000);//延时
}
//timer中断程序
PRIVATE void vTimer1CallBack(uint32 u32Device, uint32 u32ItemBitmap)
{
static int8 m=0;
vAHI_TimerReadCaptureFreeRunning(E_AHI_TIMER_1, &u16Timer1H[m], &u16Timer1L[m]);
if( m++==4)
{
vAHI_TimerStop(E_AHI_TIMER_1);
//vAHI_TimerDisable(E_AHI_TIMER_1);
//vAHI_TimerDIOControl(E_AHI_TIMER_1,FALSE);
vAHI_DioSetOutput(0, E_AHI_DIO20_INT);
for(m=4;m>0;m--)
{
vPrintf("
%x",u16Timer1H[m]);
vPrintf("
%x",u16Timer1L[m]);
}
m=0;
vPrintf("
");
}
}
vAHI_TimerDIOControl(E_AHI_TIMER_1,TRUE);
vAHI_TimerDIOControl(E_AHI_TIMER_1,FALSE);
也就是程序必须一直将timer对应的3个管脚定义成timer方式
一旦将这三个管脚定义成GPIO之后再定义成timer就不行了
有没有高手知道什么原因啊?
一周热门 更多>