其他程序我就不放了,主要就是一个测量脉宽的实验。
一次更新就是1s,arr是10000,下面我打印了一个计数的总值,然后两种换算成秒的方式。
但是换算秒的公式放在前面和后面的值读出来完全不一样,有点懵逼,求高手指点。
int main()
{
u32 time,time1,time2;
USART_Config();
tim1ic_init();
printf ( "
按下K1,测试K1按下的时间
" );
while(1)
{
if (tim1initstruct.icfinishflag==1)
{
time1=tim1initstruct.icupdate;
time2=tim1initstruct.icccr;
time=tim1initstruct.icupdate*10000+tim1initstruct.icccr;
printf("高电平时间为: %.4f s
",(float)(time1)+((float)time2)/10000);
printf("高电平时间为: %d s
",time);
printf("高电平时间为: %.4lf s
",(double)(time)/(double)(10000));
time=tim1initstruct.icupdate*10000+tim1initstruct.icccr;
printf("高电平时间为: %.4lf s
",(double)(time)/(double)(10000)); //很奇怪 后面在读这个数的时候数值变了
tim1initstruct.icfinishflag=0;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
tim1initstuct.icupdate这个变量是全局变量吧,他一直在++
不好意思,我以为没人回复我了呢,我仿真看了一下,应该是因为更新中断的数值在自加,导致数值不一样,但我还是不太明白,即使数值不一样,不是也应该是大一点吗,为什么有时候会是0
一周热门 更多>