#每日话题# #技术资源#今天给大家分享以下如何提高代码在flash中的执行效率  
 
  
在电机控制算法、加密算法等应用场景,会希望代码可以高效率执行。一般提高代码执行效率有以下几种方法: 
- 代码编写优化。编码时注意代码简洁高效,需要高效率的地方使用汇编编写。
 - 编译器优化。编译器优化等级设置最大优化,同时选择优化代码执行时间。
 -  提高芯片系统主频。
 -  使用芯片提高代码执行效率的功能。
 
 
  
前三种是比较通用的方法,现在介绍一下第四种方法:使用N32G45x的内置功能,提高代码在flash中的执行效率 
实现这种方式用到的功能有: 
其中指令预取主要适用于:程序中地址连续执行,程序无间断运行,中间未发生子程序调用、跳转等情形;而指令缓存器iCache主要适用于主程序循环执行,代码量小于iCache的容量; 
 
接下来就是重点了,在不同应用场景下指令预取和iCache该如何组合使用呢? 
      使用场景:代码量大于iCache容量,有较多反复执行的字段,跳转指令多,函数内连续指令执行多 
   2. 除能指令预取,使能iCache 
      使用场景:主程序小于iCache容量,程序反复执行 
 
   3. 使能指令预取,除能iCache 
      使用场景:程序中地址连续运行,中间无跳转或很少跳转 
在系统初始化中一般都是默认打开了指令预取和iCache 
FLASH->AC |= (uint32_t)(FLASH_AC_ICAHEN | FLASH_AC_PRFTBFEN); 
 
 |