目前代碼如下定義
void SysTick_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
vs32 counter;
void SYSTICK_Init_Config(u64 ticks)
{
? ? SysTick->CTLR = 0x00000000;? ? ? ? ? ? ?//控制寄存器復(fù)位
? ? SysTick->SR = 0x00000000;? ? ? ? ? ? ? ?//狀態(tài)寄存器復(fù)位
? ? SysTick->CNT = 0x00000000;? ? ? ? ? ? ? //計(jì)數(shù)器復(fù)位,設(shè)置初始值為0
? ? SysTick->CMP = ticks;? ? ? ? ? ? ? ? ? ?//給重加載寄存器賦值
? ? NVIC_SetPriority(SysTicK_IRQn, 15);? ? ?//設(shè)置SysTick中斷優(yōu)先級(jí)
? ? NVIC_EnableIRQ(SysTicK_IRQn);? ? ? ? ? ?//使能開(kāi)啟Systick中斷
? ? SysTick->CTLR |= 0x0000000F;? ? ? ? ? ? //啟動(dòng)系統(tǒng)計(jì)數(shù)器STK(HCLK/8時(shí)基)
}
void SysTick_Handler(void)
{
? ? SysTick->SR = 0;
? ? counter ++;
}
void main(){
?.......省略其他
? ?SYSTICK_Init_Config((SystemCoreClock)/144000);
}
while(1){
? printf("%d\r\n",counter);
}
1.發(fā)現(xiàn)定義為vs32 counter正常輸出值? 定義vs64 counter輸出值就異常了?
//? int64_t arm_2d_helper_get_system_timestamp(void)
u64 get_system_timestamp(void)
{
? ? ?u64? ?ticks = counter;
? ? ?//printf("qixin %d %d\r\n",ticks,counter);
? ? return ticks;
}
// uint32_t arm_2d_helper_get_reference_clock_frequency(void)
uint32_t get_reference_clock_frequency(void)
{
? ? return SystemCoreClock;
}