电子说
用户在应用程序中可能存在死等延时的处理函数(用for或者do…while)。 对比ST同样的函数HK的芯片出现延时比ST慢,是因为HK的芯片在cpu和flash之间有一个4个word大小(编号为00,04,08,0c)的指令缓存,工程编译之后,如果函数被存放到flash的地址的尾地址没有从0开始的话,(比如函数的入口地址为0x08000004,会被放到编号04的字中,而不是编号0中),就会出现执行效率低的问题。
如何避免这种问题呢?
我们的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;iACR |= 0x00000010; }这样修改后,就可以使调用函数延时指令执行效率与ST一样。因此用户在使用030/031/04A做开发时如果程序中存在这样死等待的延时函数,如果在时效上想与ST接近,建议采用这种方式修改。
来源:航顺芯片
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !