前面有提到ST官方提供了几份芯片,顺带的还有其评估版。其中包含着STM32H563这块评估版。
其接口为TypeC(其他几款都是MicoUSB,所以就先试试这块)板载STlink,值得一提的是这块STlink是V3版本的,因此一开始还需要更新我的STlink驱动(我的是V2)。
评估板整体非常的漂亮,发现ST的风格是白色,相较于TI的红色风显得娇贵。不过可惜的是大部分IO的排针需要我自己进行焊接(这种加长排母还得单独买)。并且其字体都有点小,眼睛要看花了。
接上这块板子之后,最开始我是以为没有串口驱动的,因为我连进来的时候提示有未知设备(这时候没有意识到是STlink)我找遍了设备管理器没有找到STlink的设备提醒和串口的设备,折腾了好久才想到这个可能是V3,然后我就更新了一下驱动。
然后我发现串口也有了,这个串口居然是和STlink在一起的。不过好歹是知道了应该是有板载串口的。
然后之后就是用CubeMX去生成一下代码,这里又犯了一个经典错误,我 最开始是使用串口一进行通讯
。因为以前用的所有板子都是串口一来通讯的,不过发现串口一并没有效果,然后这时候我意识到有点不对劲了,就去找官网的原理图查看其原理图。
找到T_VCP_TX和RX看一下是使用了哪两个口子来通讯。
这里使用了USART3来通讯,但是使用的是PD8/9这里在CubeMX中打开后还需要手动的修改引脚。
while (1) { /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ HAL_GPIO_TogglePin(GPIOG,GPIO_PIN_4); HAL_Delay(1000); printf("Hello Worldrn"); }
加上串口重定向之后,利用串口打印输出,发现串口是可以正常输出的。
这块芯片的主频到达了250MHZ,而我之前常使用的F407ZG的主频才只有168MHZ,正常的F103C8才仅有72MHZ,因此这款芯片的性能可以说是非常高。
并且我在启动的时候有一个惊喜的地方。
其推荐我开启ICACHE,之前在F4系列上没有ICACHE即 ** 指令缓存 **
的功能。之前在H7上面也见到过,但是没怎么仔细的用过H7,说明自己还是用的少了。
并且其MPU也可以配置多种内存模式。
指令缓存是一种用于存储处理器指令的高速缓存,目的是提高程序执行速度。
** ICACHE缓存指令 **
ICACHE的主要功能是存储最常用的指令,以便处理器可以更快地访问它们,而不必每次都从较慢的存储器(如闪存或RAM)中读取。当处理器需要执行某个指令时,它首先检查指令缓存。如果该指令已经在缓存中,则可以直接从缓存中获取,而无需访问主存储器,这样可以
大大加快指令执行速度 。
ICACHE的大小和工作方式可能因STM32系列的具体型号而有所不同。通常,ICACHE的大小相对较小,以便在处理器内部容纳,因此它可能只能存储部分程序代码。选择何种指令存储在ICACHE中通常由硬件逻辑来决定,通常是根据指令的访问频率和程序的执行模式。
尽管ICACHE可以提高程序执行速度,但在某些情况下,它可能会引入一些额外的复杂性,例如缓存一致性问题(Cache Coherency)。
** 缓存一致性 **
缓存一致性问题,是涉及多个缓存的系统中的一个重要概念。在多核处理器或者多处理器系统中,每个处理器都可能有自己的缓存,用于存储最近使用的数据。当一个处理器修改了某个内存位置的数据时,其他处理器缓存中对应的数据可能会过时,这就导致了缓存不一致的问题。
** 后续会出一些探索这块芯片的文章。 **