打印
[STM32H7]

【STM32H745I-DISCO试用】首次体验双核MCU

[复制链接]
639|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
收到了ST非常不错的双核MCU开发板“STM32H745I-DISCO”双核为M7+M4的组合,其芯片内置2MB的flash、板载NORflash、128Mb的SDRAM和4Gb的emmc、4.3寸RGB触摸显示屏、Poe网络、还有SAI音频编解码、和一个MEMS数字麦克风、板载还带有STLINKV3方便用户可以快速调试,可以看出,该评估板主打就是音视频的应用。话不多说,先看看这个开发板的电路设计吧。



从图1至图3来看,板载真的是非常丰富,而且电路设计是按照模块化设计的。
接下来上电,这里注意板载有3个microUSB,建议接入在中间的microUSB上,该USB支持STlink调试仿真并且支持供电,非常方便。



上电可以看到,板载是有demo的,demo运行起来是有3个功能,第一是信号发生器,第二个是跑的coremark,第三个是开发板和芯片的信息介绍。
接下来就可以编写自己的程序了,首先ST的新款MCU基本都可以使用cubemx来开发了,也就是说,底层部分基本不需要自己来移植了,直接可以用cubemx来生成使用。


在cubemx中选择好开发板,然后选择创建工程即可。

由于第一次使用H7系列的芯片,所以创建工程的时候需要在线安装相应的支持包
安装好支持包之后,就可以正常的创建工程了,也就是可以可视化配置IO、时钟和外设等等功能了。

本次创建就先驱动个LED吧,LED在原理图上看到是M7内核使用的是GPIOJ-2,因此配置好之后,就可以生成工程了。

生成工程的时候需要注意,看你使用哪款编辑器,我这里使用的是keil MDK,所以我选择MDK-ARM,这里如果你选择其他的编辑器,这里需要对应选择才可以。

这里就生成好了关于keil-MDK的工程了,这个工程看起来是支持M4和M7两个内核的工程,但是我没有调试好如何联动,这里先就针对于M7内核来实现个点灯吧。
代码如下:
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
/* USER CODE BEGIN Boot_Mode_Sequence_0 */
  int32_t timeout;
/* USER CODE END Boot_Mode_Sequence_0 */

/* USER CODE BEGIN Boot_Mode_Sequence_1 */
  /* Wait until CPU2 boots and enters in stop mode or timeout*/
  timeout = 0xFFFF;
  while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) != RESET) && (timeout-- > 0));
  if ( timeout < 0 )
  {
  Error_Handler();
  }
/* USER CODE END Boot_Mode_Sequence_1 */
  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();
/* USER CODE BEGIN Boot_Mode_Sequence_2 */
/* When system initialization is finished, Cortex-M7 will release Cortex-M4 by means of
HSEM notification */
/*HW semaphore Clock enable*/
__HAL_RCC_HSEM_CLK_ENABLE();
/*Take HSEM */
HAL_HSEM_FastTake(HSEM_ID_0);
/*Release HSEM in order to notify the CPU2(CM4)*/
HAL_HSEM_Release(HSEM_ID_0,0);
/* wait until CPU2 wakes up from stop mode */
timeout = 0xFFFF;
while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) == RESET) && (timeout-- > 0));
if ( timeout < 0 )
{
Error_Handler();
}
/* USER CODE END Boot_Mode_Sequence_2 */

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
                 HAL_GPIO_TogglePin(GPIOJ, GPIO_PIN_2);
     HAL_Delay(500);

  }
  /* USER CODE END 3 */
}
其实重要且实现功能的代码就2句话,
     HAL_GPIO_TogglePin(GPIOJ, GPIO_PIN_2);
     HAL_Delay(500);

最后的效果如下:

可以看到LD7可以正常的闪烁,说明程序运行是正常的。
总结:其实从我这次使用来看,使用cubemx来配置工程并且使用keil进行自己的业务逻辑增加是比较方便的,而且开发起来也是非常的快速,只要是熟悉关于cubemx的话,是事半功倍的。接下来聊聊关于STM32H745,这款芯片性能强大,非常适合做HMI或者是简单一些的工控机,消费机这种产品,不过双核之间的通信还是比较麻烦一些,估计选型我可能会选择单核或者MPU,单核操作较为简单,MPU跑linux确实是不错的选择,不过H745的双核操作确实可以比MPU成本低,比单核MCU的性能高,我认为是属于一个过渡吧,不过看到ST的这么强悍的MCU真的是很开心,学无止境,又可以玩起来了。最后,感谢ST与21ic的活动,真的受益匪浅~

使用特权

评论回复
沙发
flycamelaaa| | 2025-6-5 17:15 | 只看该作者
恭喜你们这些得到开发板的

使用特权

评论回复
板凳
AdaMaYun| | 2025-6-8 22:10 | 只看该作者
双核MCU性能非常不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:擅长电路设计、物联网产品开发、射频产品开发,喜欢打篮球,技术交流,欢迎各位来聊~

761

主题

3259

帖子

10

粉丝