延時效率問題
在應用程序中可能存在死等延時的處理函數(shù)(用for或者do…while)。對比ST同樣的函數(shù)HK的芯片出現(xiàn)延時比ST慢,是因為HK的芯片在cpu和flash之間有一個4個word大小(編號為00,04,08,0c)的指令緩存,工程編譯之后,如果函數(shù)被存放到flash的地址的尾地址沒有從0開始的話,(比如函數(shù)的入口地址為0x08000004,會被放到編號04的字中,而不是編號0中),就會出現(xiàn)執(zhí)行效率低的問題。
如何避免這種問題呢?
HK030/031/04A的應用筆記中有指導說明,今天在這里用一個例子詳細說明修改方法:
比如用戶使用uint32_tGItimer=1000000;voidDelayTimer(void){uint32_t
i;for(i=0;i
修改如下:voidDelayTimer(void){ uint32_t i; FLASH->ACR&= ~(0x00000010);
for(i=0;i
這樣修改后,就可以使調用函數(shù)延時指令執(zhí)行效率與ST一樣。因此用戶在使用030/031/04A做開發(fā)時如果程序中存在這樣死等待的延時函數(shù),如果在時效上想與ST接近,建議采用這種方式修改。