CH32V208GBU6 systick 問(wèn)題及數(shù)據(jù)類(lèi)型定義 int32_t int64_t導(dǎo)致結(jié)果異常 及函數(shù)返回值異常問(wèn)題

目前代碼如下定義


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;

}




熱門(mén)產(chǎn)品 : CH390:以太網(wǎng)控制器芯片

變量定義修改為無(wú)符號(hào)類(lèi)型,例如都定義為u64類(lèi)型。

systickdemo可以直接參考使用。


這個(gè)有試過(guò)?systickdemo修改?目前主頻是144mhz? 換成int64_t? 或者uint64_t? 計(jì)數(shù)值都是異常?只有int32_t? 值是正常的? 很奇怪


tick的默認(rèn)傳參就是u64類(lèi)型的。 如果需要進(jìn)入中斷中將打印的信息配置為u64,編譯器需要配置:

2773877-20220725141859845-863058166.jpg


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频