打印
[STM32H7]

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

[复制链接]
503|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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


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

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

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOM_CLK_ENABLE();
  __HAL_RCC_GPIOO_CLK_ENABLE();

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

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

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

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

/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}

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

  if (PinState != GPIO_PIN_RESET)
  {
    GPIOx->BSRR = (uint32_t)GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = (uint32_t)GPIO_Pin;
  }
}

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

    /* USER CODE BEGIN 3 */
    HAL_GPIO_TogglePin(LD1_GPIO_PORT, LD1_Pin);
    /* Insert delay 100 ms */
    HAL_Delay(100);
    HAL_GPIO_TogglePin(LD2_GPIO_PORT, LD2_PIN);
    /* Insert delay 100 ms */
    HAL_Delay(100);
    HAL_GPIO_TogglePin(LD3_GPIO_PORT, LD3_PIN);
    /* Insert delay 100 ms */
    HAL_Delay(100);
    HAL_GPIO_TogglePin(LD4_GPIO_PORT, LD4_PIN);
    /* Insert delay 100 ms */
    HAL_Delay(100);

  }

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

Finished building: GPIO_IOToggle_Appli.list


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

烧录,查看效果:





  

使用特权

评论回复
沙发
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 | 只看该作者
新出的芯片适配都挺不错的

使用特权

评论回复
5
HuaWng|  楼主 | 2024-10-15 07:05 | 只看该作者
Stahan 发表于 2024-10-13 19:41
新出的芯片适配都挺不错的

是的,目前测试下来,CubeIDE, CubeMX, TouchGFX Designer三者完美结合!

使用特权

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

本版积分规则

6

主题

35

帖子

0

粉丝