这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 体验STM32H755的双核启动,分享基础开发过程

共1条 1/1 1 跳转至

体验STM32H755的双核启动,分享基础开发过程

高工
2025-10-06 13:01:03     打赏

一:STM32H755的知识分享:

1.1 概述:

STM32H7x5系列微控制器集成了工作频率高达480 MHz的Arm® Cortex®-M7内核(具有双精度浮点单元)以及工作频率高达240 MHz的Arm® Cortex®-M4内核(具有单精度浮点单元)的卓越性能,可选的扩展环境温度高达125 °C。

1.2 性能:

工作于480 MHz的fCPU频率(Cortex-M7)以及240 MHz的CPU频率(Cortex-M4)下,从闪存执行程序时,能够提供3224 CoreMark / 1327 DMIPS的性能,利用其L1缓存实现了零等待执行。

L1缓存(16 KB的I-缓存 +16 KB的D-缓存)提高外部存储器的执行性能。

1.3 安全性:

STM32H755 MCU包含以下额外安全特性:

加密/哈希硬件加速

STM32H755还支持安全固件安装(SFI)嵌入式安全服务,可在执行初始程序时执行安全验证并保护软件IP。

安全启动和安全固件升级(SBSFU)

1.4 高能效

多电源域架构可实现将不同的电源域配置为低功耗模式,进而优化功耗效率。

内置SMPS,用于降低电源电压。还可用于为外部电路供电,以及特定应用情况下结合LDO共同使用。

USB调节器提供嵌入式物理接口层(PHY)。

在内核运行模式(外设外设关)和SMPS情况下,典型功耗为145 µA/MHz @VDD = 3.3 V和25 °C

低功耗待机模式下的典型功耗电流为2.43 µA

带RTC的VBAT模式(低功耗模式)下通常为460 nA

二:硬件平台:

 STM32cube MX  6.15.0版本

keil MDK5.38版本

三:STM32cube MX 软件配置:

3.1 中断向量的配置:

M7内核配置:

1007-1.png


M4内核配置如下:


1007-2.png

由于STM32H755内置了M7和M4内核,所以这里的配置很重要,而且即使我们想要单独使用M7,或者是M4的话,也需要使另外一个内核启动,否则单片机使不能正常运行的。

3.2 M7内核的串口配置:

1007-3.png

这里我们配置串口3在M7内核启动,就只能选择M7内核就可以了,注意同一引脚在同一时刻只能被一种内核调用。否则会出现问题;

3.3 外部中断的配置:

1007-4.png

这里我使能用户按键在M7内核调用;

四:软件代码编写:

MDK软件截图如下所示:

1007-6.png

1007-5.png

4.1  M7内核 串口3的数据回传功能:

static void MX_USART3_UART_Init(void)
{

  /* USER CODE BEGIN USART3_Init 0 */

  /* USER CODE END USART3_Init 0 */

  /* USER CODE BEGIN USART3_Init 1 */

  /* USER CODE END USART3_Init 1 */
  huart3.Instance = USART3;
  huart3.Init.BaudRate = 115200;
  huart3.Init.WordLength = UART_WORDLENGTH_8B;
  huart3.Init.StopBits = UART_STOPBITS_1;
  huart3.Init.Parity = UART_PARITY_NONE;
  huart3.Init.Mode = UART_MODE_TX_RX;
  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart3.Init.OverSampling = UART_OVERSAMPLING_16;
  huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  if (HAL_UART_Init(&huart3) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART3_Init 2 */
	__HAL_UART_ENABLE_IT(&huart3,UART_IT_IDLE);
	HAL_UARTEx_ReceiveToIdle_IT(&huart3,RecBuffer3,reclength3);	
  /* USER CODE END USART3_Init 2 */

}

串口中断回调函数如下所示:

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart->Instance==USART3)
	{
		//把收到的一包数据通过串口回传
		HAL_UART_Transmit(&huart3,RecBuffer3,Size,0xff);
		//再次开启空闲中断接收,不然只会接收一次数据
		HAL_UARTEx_ReceiveToIdle_IT(&huart3,RecBuffer3,reclength3);
	}
}

4.2 M7内核的外部中断:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  if (GPIO_Pin == GPIO_PIN_13)
  {
    	HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_14);
  }
}

直接翻转GPIO口就可以了。

4.3 M4内核:在主程序中使用hal_delay()实现翻转电平:

    /* USER CODE BEGIN 3 */
		HAL_Delay(100);
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
  }
  /* USER CODE END 3 */

五:演示视频如下所示:

https://www.bilibili.com/video/BV1eoxLzSEhy/




关键词: STM32H755     双核启动    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]