用滴答定时器来计时,为什么总会有10000的跳变呢?void TimeCount_Init(void)
{
//SystemCoreClock / 1000 1ms中断一次
//SystemCoreClock / 100000 10us中断一次
//SystemCoreClock / 1000000 1us中断一次
if(SysTick_Config(SystemCoreClock / 1000))
{
while(1);
}
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
void SysTick_Handler(void)
{
MilliS++;
if(MilliS>=10000) MilliS=0; //此处10000ms 主要方便延时函数使用
if(MilliS%1000==0) {Second++;}
if(Second>=60) {Second=0;Min++;}
}
程序是每10ms取一次MilliS的数值。最大60000
Millis_TEMP=MilliS/10;
Second_TEMP=Second;
if(Millis_TEMP<Millis_TEMP_1)
{
TX_flag=0;
Millis_TEMP=Millis_TEMP_1;
}
else if (Millis_TEMP==Millis_TEMP_1)
{
Millis_TEMP+=1;
if((Millis_TEMP%100)==0)
Second_TEMP++;
if(Millis_TEMP==1000)
Millis_TEMP=0;
}
Dataframe[TIME_H] = (((Millis_TEMP*10)%1000 + Second_TEMP*1000)&0xFF00)>>8;//time high
Dataframe[TIME_L] = ((Millis_TEMP*10)%1000 + Second_TEMP*1000)&0x00FF;//time low
|