硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1242|回复: 6
收起左侧

[开发工具] cubeMX生成STM32H7S3工程HAL_init后不带有SystemClock_Config

[复制链接]

10

主题

53

回帖

83

积分

初级会员

积分
83
发表于 2024-6-21 22:18:45 | 显示全部楼层 |阅读模式
最近使用nucleo H7S3L8H6 跑了一个threadx 发现 tx_thread_sleep(1000),系统每秒节拍数也是1000 但这个任务却10s左右执行一次。一开始以为是cubeMX生成的threadx有问题,但后面发现输出PWM波形也不准。最后发现原因是cubeMX里面虽然选择了HSE并且设置了sysclk600MHz,但cubeMX配置的项目并不会生成systemclock_config函数,因此,需要自己配置。

配置如下(使用的软件包版本是STM32Cube_FW_H7RS_V1.0.0):

static void SystemClockHSE_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};

    HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
  /** Configure the main internal regulator output voltage
  */
  if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE0) != HAL_OK)
  {
    Error_Handler();
  }
  /* -2- Enable HSE  Oscillator, select it as PLL source and finally activate the PLL */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL1.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL1.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL1.PLLM = 2;
  RCC_OscInitStruct.PLL1.PLLN = 50;
  RCC_OscInitStruct.PLL1.PLLP = 1;
  RCC_OscInitStruct.PLL1.PLLQ = 2; /* NOT USED */
  RCC_OscInitStruct.PLL1.PLLR = 2; /* NOT USED */
  RCC_OscInitStruct.PLL1.PLLS = 2; /* NOT USED */
  RCC_OscInitStruct.PLL1.PLLT = 2; /* NOT USED */
  RCC_OscInitStruct.PLL1.PLLFractional = 0;
  RCC_OscInitStruct.PLL2.PLLState = RCC_PLL_NONE;
  RCC_OscInitStruct.PLL3.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  
  /* -3- Select the PLL as system clock source and configure the HCLK, PCLK1 , PCLK2  and PCLK3 clocks dividers */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
      |RCC_CLOCKTYPE_PCLK4|RCC_CLOCKTYPE_PCLK5;
  RCC_ClkInitStruct.SYSCLKSource    = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider   = RCC_SYSCLK_DIV2;
  RCC_ClkInitStruct.APB1CLKDivider  = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider  = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB4CLKDivider  = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB5CLKDivider  = RCC_HCLK_DIV2;
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK)
  {
    /* Initialization Error */
    Error_Handler();
  }
  
  /*  -4- Optional: Disable CSI Oscillator (if the CSI is no more needed by the application)*/
  RCC_OscInitStruct.OscillatorType  = RCC_OSCILLATORTYPE_CSI;
  RCC_OscInitStruct.CSIState        = RCC_CSI_OFF;
  RCC_OscInitStruct.PLL1.PLLState    = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    /* Initialization Error */
    Error_Handler();
  }
}

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 很给力!

查看全部评分

回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2024-11-4 11:58:30 | 显示全部楼层
通过百度网盘分享的文件:base_6_filex.zip
链接:https://pan.baidu.com/s/1MGQrX2U_mh-H72DrjKsE5Q
提取码:7777
--来自百度网盘超级会员V6的分享
这是一个STM32H7S78-DK板子上的例子
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-6-22 09:35:59 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2024-10-11 08:52:03 | 显示全部楼层
H7S3-1.jpg


STM32H7S3  使用CubeMX进行开发时,有新的选项,默认就开启了Boot、Application模式。估计是内部Flash只有64K的缘故,这怎么创建工程,还真一头雾水。 论坛哪位小伙伴搞过,还请指点一二,谢谢!!
回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2024-11-3 15:14:28 | 显示全部楼层
morning_enr6U 发表于 2024-10-11 08:52
STM32H7S3  使用CubeMX进行开发时,有新的选项,默认就开启了Boot、Application模式。估计是内部Flas ...

不好意思才看到,目前我自己在H7S7上已经配置了threadx usbx filex touchGFX 。boot 和 app就是两个工程,boot的任务就是初始化一些外设 比如 H7S7板子上有外部的PSRAM以及外部FLash 就在boot里面进行内存映射,而APP烧录时候就把烧录地址就直接设置成外部flash地址以及可以直接使用外部psram作为ram。
回复

使用道具 举报

4

主题

1459

回帖

1471

积分

至尊会员

积分
1471
发表于 2024-11-4 10:35:51 | 显示全部楼层
jet1999 发表于 2024-11-3 15:14
不好意思才看到,目前我自己在H7S7上已经配置了threadx usbx filex touchGFX 。boot 和 app就是两个工程 ...

他的Boot工程貌似生成的不能用,看代码里面也没啥实质的内容。 你能否把你的Boot工程发一下,就是用在H7S3L8的官方开发板上面。
回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2024-11-4 11:55:58 | 显示全部楼层
morning_enr6U 发表于 2024-11-4 10:35
他的Boot工程貌似生成的不能用,看代码里面也没啥实质的内容。 你能否把你的Boot工程发一下,就是用在H7S ...

通过百度网盘分享的文件:base_6_filex.zip
链接:https://pan.baidu.com/s/1rhUxiJtMpqe-7g2SwPRxlA
提取码:7777
--来自百度网盘超级会员V6的分享

这是一个之前测试的例子,你可以看看。用的是STM32H7S78-DK的板子,要注意 cubemx配置中的flash 与 sbs选项,XSPI配置,中间件那边的EXTMEM配置
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 17:35 , Processed in 0.045810 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表