如题,我想在一个传感器第一次传来信号时,启动sys
tick,然后在第二次传来信号时,关闭systick,然后计算两次时间的差值获取其中间隔时间。但是现在碰到的问题是,在两次相同的外部中断传来时要产生两种不同的反应。我设计了一个n,由n%2控制进入某一个函数,但是无法正常获取数据。求指教。贴出部分程序、。
if(EXTI_Status == 1 && n%2 == 0)
{
count=0;
delay_ms(1);
t1=time();
EXTI_Status=0;
n++;
}
else if(EXTI_Status == 1 && n%2 ==1)
{
T=time();
T=T-t1;
mile=PI*D*3.6;
Speed=mile/T;
sprintf(string,"%3.1fKm/h Time:%dms",Speed,T);
LCD_ClearLine(Line4);
LCD_DisplayStringLine(Line4,string);
n++;
}
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms;
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器
count++; //标志位加一
SysTick->VAL =0X00; //清空计数器
}
这里我不明白楼主systick开启和关闭是想做什么用?想记时,可以通过RTC或者2个计数器,一个是systick计数器,一个秒计数器,当systick>=1秒时,秒+1。从而得到更精确的时间。
一周热门 更多>