[STM32H7] 【STM32H745I-DISCO试用】新建工程

[复制链接]
2020|1
 楼主| tlled 发表于 2025-2-19 00:04 | 显示全部楼层 |阅读模式
本帖最后由 tlled 于 2025-2-19 00:45 编辑

使用STM32CubeMX软件来创建项目工程

一、下载软件

开发板官网地址:https://www.st.com/en/evaluation-tools/stm32h745i-disco.html

1.1、下载STM32CubeMX软件

      STM32CubeMX是一种图形工具,可以非常简单地配置STM32微控制器和微处理器,并且可以生成ARM内核相应初始化C代码或相应初始化C代码,基于官网的开发板很容易创建项目工程模板。

下载地址:https://www.st.com/en/development-tools/stm32cubemx.html
101.png

1.2、下载keil的pack文件

下载地址:https://www.keil.arm.com/packs/stm32h7xx_dfp-keil/overview/
102.png

二、创建工程

2.1、选择开发板型号
001.png

2.2、配置时钟
002.png

2.3、选择项目生成的路径
003.png

2.4、生成项目文件
生成过程中提示安装SDK文件
004.png
确定后,下载安装。
005.png

三、硬件部分使用板卡上的LD7指示灯来测试程序运行,使用的端口是PJ2,在下面程序中配置此端口。
103.png
四、程序部分

main.c中添加代码

  1. #include "main.h"

  2. /* Private includes ----------------------------------------------------------*/
  3. /* USER CODE BEGIN Includes */

  4. /* USER CODE END Includes */

  5. /* Private typedef -----------------------------------------------------------*/
  6. /* USER CODE BEGIN PTD */
  7. GPIO_InitTypeDef  gpio_init_structure;
  8. /* USER CODE END PTD */

  9. /* Private define ------------------------------------------------------------*/
  10. /* USER CODE BEGIN PD */

  11. #ifndef HSEM_ID_0
  12. #define HSEM_ID_0 (0U) /* HW semaphore 0*/
  13. #endif

  14. /* USER CODE END PD */

  15. /* Private macro -------------------------------------------------------------*/
  16. /* USER CODE BEGIN PM */

  17. /* USER CODE END PM */

  18. /* Private variables ---------------------------------------------------------*/

  19. /* USER CODE BEGIN PV */

  20. /* USER CODE END PV */

  21. /* Private function prototypes -----------------------------------------------*/
  22. void SystemClock_Config(void);
  23. void PeriphCommonClock_Config(void);
  24. static void MX_GPIO_Init(void);
  25. /* USER CODE BEGIN PFP */

  26. /* USER CODE END PFP */

  27. /* Private user code ---------------------------------------------------------*/
  28. /* USER CODE BEGIN 0 */

  29. /* USER CODE END 0 */

  30. /**
  31.   * [url=home.php?mod=space&uid=247401]@brief[/url]  The application entry point.
  32.   * @retval int
  33.   */
  34. int main(void)
  35. {

  36.   /* USER CODE BEGIN 1 */

  37.   /* USER CODE END 1 */
  38. /* USER CODE BEGIN Boot_Mode_Sequence_0 */
  39.   int32_t timeout;
  40. /* USER CODE END Boot_Mode_Sequence_0 */

  41. /* USER CODE BEGIN Boot_Mode_Sequence_1 */
  42.   /* Wait until CPU2 boots and enters in stop mode or timeout*/
  43.   timeout = 0xFFFF;
  44.   while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) != RESET) && (timeout-- > 0));
  45.   if ( timeout < 0 )
  46.   {
  47.   Error_Handler();
  48.   }
  49. /* USER CODE END Boot_Mode_Sequence_1 */
  50.   /* MCU Configuration--------------------------------------------------------*/

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

  53.   /* USER CODE BEGIN Init */

  54.   /* USER CODE END Init */

  55.   /* Configure the system clock */
  56.   SystemClock_Config();

  57.   /* Configure the peripherals common clocks */
  58.   PeriphCommonClock_Config();
  59. /* USER CODE BEGIN Boot_Mode_Sequence_2 */
  60. /* When system initialization is finished, Cortex-M7 will release Cortex-M4 by means of
  61. HSEM notification */
  62. /*HW semaphore Clock enable*/
  63. __HAL_RCC_HSEM_CLK_ENABLE();
  64. /*Take HSEM */
  65. HAL_HSEM_FastTake(HSEM_ID_0);
  66. /*Release HSEM in order to notify the CPU2(CM4)*/
  67. HAL_HSEM_Release(HSEM_ID_0,0);
  68. /* wait until CPU2 wakes up from stop mode */
  69. timeout = 0xFFFF;
  70. while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) == RESET) && (timeout-- > 0));
  71. if ( timeout < 0 )
  72. {
  73. Error_Handler();
  74. }
  75. /* USER CODE END Boot_Mode_Sequence_2 */

  76.   /* USER CODE BEGIN SysInit */

  77.   /* USER CODE END SysInit */

  78.   /* Initialize all configured peripherals */
  79.   MX_GPIO_Init();
  80.   /* USER CODE BEGIN 2 */
  81.         __HAL_RCC_GPIOJ_CLK_ENABLE();
  82.         /* configure the GPIO_LED pin */
  83.   gpio_init_structure.Pin = GPIO_PIN_2;
  84.   gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;
  85.   gpio_init_structure.Pull = GPIO_PULLUP;
  86.   gpio_init_structure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  87.   HAL_GPIO_Init(GPIOJ, &gpio_init_structure);
  88.   /* USER CODE END 2 */

  89.   /* Infinite loop */
  90.   /* USER CODE BEGIN WHILE */
  91.   while (1)
  92.   {
  93.                 HAL_GPIO_WritePin(GPIOJ, GPIO_PIN_2, GPIO_PIN_RESET);
  94.                 HAL_Delay(500);
  95.                 HAL_GPIO_WritePin(GPIOJ, GPIO_PIN_2, GPIO_PIN_SET);
  96.                 HAL_Delay(500);
  97.     /* USER CODE END WHILE */

  98.     /* USER CODE BEGIN 3 */
  99.   }
  100.   /* USER CODE END 3 */
  101. }

五、程序运行

下载程序后,程序运行,LED闪烁,创建工程正常。
led.gif









yangjiaxu 发表于 2025-3-6 15:00 | 显示全部楼层
高级芯片是牛啊,时钟配置都这么麻烦,幸好有cubemx了,不然这芯片真的玩不转
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

701

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部