[STM32H7] 【STM32H7S78-DK测评】-基础任务之开发环境与点灯

[复制链接]
 楼主| HuaWng 发表于 2024-10-12 12:38 | 显示全部楼层 |阅读模式
<
本帖最后由 HuaWng 于 2024-10-11 21:53 编辑

STM32H7S78-DK是目前ST比较新的一款高性能开发板,虽然自带的FLASH比较小,但是扩展了NOR Flash。启动在片内FLASH,然后通过BOOT跳转到片外FLASH运行。
板载了4个RGB小灯,一个复位按键,一个用户按键,还有WIFI扩展接口,一个800*480分辨率RGB接口屏幕;背面还扩展了Arduino Uno R3接口。总体来讲是功能非常丰富,主打的应用应该是人机交互与处理中枢的角色。

下面介绍一下开发环境:
STM32CubeIde,版本:1.16.0
STM32CubeMx, 版本:6.12.0
STM32CubeProgrammer,版本:2.17.0

推荐大家使用最新的版本,因为最新的板卡往往在最新的版本得到更好的支持,比如最新的bug修复以及更快的编译速度等。

在STM32CubeIde里面,选择New -> STME32 PROJECT
541036709260f70ddc.png

之后在Example Selector里面选择Example Selector,然后选择GPIO Toggle,选择保存位置即可。

对于驱动GPIO,首先需要进行引脚初始化:
  1. static void MX_GPIO_Init(void)
  2. {
  3.   GPIO_InitTypeDef GPIO_InitStruct = {0};
  4. /* USER CODE BEGIN MX_GPIO_Init_1 */
  5. /* USER CODE END MX_GPIO_Init_1 */

  6.   /* GPIO Ports Clock Enable */
  7.   __HAL_RCC_GPIOM_CLK_ENABLE();
  8.   __HAL_RCC_GPIOO_CLK_ENABLE();

  9.   /*Configure GPIO pin Output Level */
  10.   HAL_GPIO_WritePin(GPIOM, LD4_Pin|LD3_Pin, GPIO_PIN_RESET);

  11.   /*Configure GPIO pin Output Level */
  12.   HAL_GPIO_WritePin(GPIOO, LD1_Pin|LD2_Pin, GPIO_PIN_RESET);

  13.   /*Configure GPIO pins : LD4_Pin LD3_Pin */
  14.   GPIO_InitStruct.Pin = LD4_Pin|LD3_Pin;
  15.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  16.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  17.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  18.   HAL_GPIO_Init(GPIOM, &GPIO_InitStruct);

  19.   /*Configure GPIO pins : LD1_Pin LD2_Pin */
  20.   GPIO_InitStruct.Pin = LD1_Pin|LD2_Pin;
  21.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  22.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  23.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  24.   HAL_GPIO_Init(GPIOO, &GPIO_InitStruct);

  25. /* USER CODE BEGIN MX_GPIO_Init_2 */
  26. /* USER CODE END MX_GPIO_Init_2 */
  27. }

接下来可以可以调用HAL_GPIO_WritePin来控制引脚电平的高低,进而控制LED小灯的亮灭。
  1. /**
  2.   * [url=home.php?mod=space&uid=247401]@brief[/url]  Set or clear the selected data port bit.
  3.   * [url=home.php?mod=space&uid=536309]@NOTE[/url]   This function uses GPIOx_BSRR and GPIOx_BRR registers to allow atomic read/modify
  4.   *         accesses. In this way, there is no risk of an IRQ occurring between
  5.   *         the read and the modify access.
  6.   * @param  GPIOx where x can be (A..H and M..P) to select the GPIO peripheral for STM32H7RSxx family
  7.   * @param  GPIO_Pin specifies the port bit to be written.
  8.   *         This parameter can be any combination of GPIO_Pin_x where x can be (0..15).
  9.   * @param  PinState specifies the value to be written to the selected bit.
  10.   *         This parameter can be one of the GPIO_PinState enum values:
  11.   *            [url=home.php?mod=space&uid=2817080]@ARG[/url] GPIO_PIN_RESET: to clear the port pin
  12.   *            [url=home.php?mod=space&uid=2817080]@ARG[/url] GPIO_PIN_SET: to set the port pin
  13.   * @retval None
  14.   */
  15. void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
  16. {
  17.   /* Check the parameters */
  18.   assert_param(IS_GPIO_PIN(GPIO_Pin));
  19.   assert_param(IS_GPIO_PIN_ACTION(PinState));

  20.   if (PinState != GPIO_PIN_RESET)
  21.   {
  22.     GPIOx->BSRR = (uint32_t)GPIO_Pin;
  23.   }
  24.   else
  25.   {
  26.     GPIOx->BRR = (uint32_t)GPIO_Pin;
  27.   }
  28. }

本次实验在主循环中以此翻转小灯状态:
  1.   while (1)
  2.   {
  3.     /* USER CODE END WHILE */

  4.     /* USER CODE BEGIN 3 */
  5.     HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_Pin);
  6.     /* Insert delay 100 ms */
  7.     HAL_Delay(100);
  8.     HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
  9.     /* Insert delay 100 ms */
  10.     HAL_Delay(100);
  11.     HAL_GPIO_TogglePin(LD3_GPIO_PORT, LD3_PIN);
  12.     /* Insert delay 100 ms */
  13.     HAL_Delay(100);
  14.     HAL_GPIO_TogglePin(LD4_GPIO_PORT, LD4_PIN);
  15.     /* Insert delay 100 ms */
  16.     HAL_Delay(100);

  17.   }

编译使用的是arm-none-eabi-gcc工具链:
  1. arm-none-eabi-size  GPIO_IOToggle_Appli.elf
  2. arm-none-eabi-objdump -h -S GPIO_IOToggle_Appli.elf  > "GPIO_IOToggle_Appli.list"
  3.    text           data            bss            dec            hex        filename
  4.    4644             12           1568           6224           1850        GPIO_IOToggle_Appli.elf
  5. Finished building: default.size.stdout

  6. Finished building: GPIO_IOToggle_Appli.list


  7. 21:33:09 Build Finished. 0 errors, 0 warnings. (took 6s.118ms)

烧录,查看效果:
gpio.gif




  
micoccd 发表于 2024-10-12 16:48 | 显示全部楼层
越好的芯片,用STM32CubeIde越觉得好用
 楼主| HuaWng 发表于 2024-10-12 17:20 | 显示全部楼层
micoccd 发表于 2024-10-12 16:48
越好的芯片,用STM32CubeIde越觉得好用

是的,现在适配的越来越好了
Stahan 发表于 2024-10-13 19:41 | 显示全部楼层
新出的芯片适配都挺不错的
 楼主| HuaWng 发表于 2024-10-15 07:05 | 显示全部楼层
Stahan 发表于 2024-10-13 19:41
新出的芯片适配都挺不错的

是的,目前测试下来,CubeIDE, CubeMX, TouchGFX Designer三者完美结合!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

38

帖子

0

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

6

主题

38

帖子

0

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