首先感谢ST公司和21IC搞的本次活动, 这次板载的STM32F767ZI-144应该是STM32 Nucleo-144板中MCU功能最强大的,
该CORTEX-M7内核提供了指令cache和数据cache, 还有ITCM和DTCM。
下面就是一个简单的闪灯程序来测试下指令执行速度, 具体步骤如下:
1. 安装mdk5软件, 下载 stm32cube_fw_f7_v140.zip固件包, 下载地址ST论坛之前有网友评测时提供了,请自行查看.
2. 解压stm32cube_fw_f7_v140.zip包内的STM32Cube_FW_F7_V1.4.0\Drivers
和STM32Cube_FW_F7_V1.4.0\Projects\STM32F767ZI-Nucleo下面所有内容.
3. 用mdk软件打开STM32Cube_FW_F7_V1.4.0\Projects\STM32F767ZI-Nucleo\Examples
\GPIO\GPIO_IOToggle\MDK-ARM\Project.uvprojx 下工程.
4. 把main.c文件HAL_Delay(100);延迟修改为下面函数.
/* -3- Toggle IO in an infinite loop */
while (1)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
/* Insert delay 100 ms */
//HAL_Delay(100);
delay();
}
void delay(void){
unsigned int i,j;
for(i=1000;i>0;i--)
for(j=216000;j>0;j--);
}
5. 编译下载到NucleoF767ZI板上可以看到大概2秒钟闪一次,
按时钟216M计算时间差不多调用一次延迟函数的时间为1秒的。
6. 修改STM32F7xx_HAL_CONFIG.H文件中下面两项
#define PREFETCH_ENABLE 0U
#define ART_ACCLERATOR_ENABLE 0U /* To enable instruction cache and prefetch */
7. 编译下载到NucleoF767ZI板上可以看到大概2秒钟闪一次, 发现速度没有明显变化, 不解中。
8. 使用Keil 自定义sct分散加载文件, 我们把延迟函数定义到ITCM, 如下图示: