[STM32H7] 【STM32H7S78-DK测评】基础开发环境搭建——流水灯

[复制链接]
1588|4
 楼主| jobszheng 发表于 2024-10-13 18:13 | 显示全部楼层 |阅读模式
本帖最后由 jobszheng 于 2024-10-14 01:46 编辑

【STM32H7S78-DK测评】基础开发环境搭建——流水灯

在上一个帖子,我们分享了STM32H7S78评估板的开箱,今天我们就来感受一下他的基础开发环境的搭建。

在开始正经评测前,我们首先要搭建开发环境,综合考虑了一下,我将在本次评测过程中尝试一下使用ST公司的STM32CubeIDE集成编译开发环境,以应对越来越严格的正版版权要求。所以,我的整套开发环境将按如下安排使用:

  • 基础外设代码示例生成,使用STM32CubeMX图形化的方式生成;
  • 代码编辑器,使用VSCode来编写应用代码;
  • 编译与调试,使用STM32CubeIDE免授权的官方开发IDE;
  • 在线调试器,使用板载ST-Link V3来下载与在线调试代码;

好了!计划安排妥当,我们开始行动!

下载ST的这套软件还是花掉了我不少时间。唉,国内开发啊~~

通过阅读产品手册,我们知道STM32H7Sx产品系列均采用"boot flash“的产品flash设计架构,即MCU中仅包含一块很小的flash,用于系统初始化启动的阶段,而我们终端应用开发的App等业务逻辑代码实现则保存在片外flash中。

分成两个分区,其实就是需要编写两套程序而已。对于Boot分区来说,其主要功能是初始化扩展SRAM,扩展Flash等硬件外设接口,为加载片外扩展Flash中的App程序提供基础。也是因为Boot程序是初始化自己的外设,所以程序在产品生命周期之中几乎不会变更。

我们本次DIY过程主要利用STM32H7S78来做原型验证,因此,我们先不去研究Boot的实现,而是使用官方的方案来辅助我们自己的App程序——流水灯程序。

LED.png


阅读原理图,我们可以看到本次STM32H7S78-DK提供了4颗LED灯,我们将其实现流水灯效果。流水灯的效果代码如下:

  1. int main(void) {

  2.         /* USER CODE BEGIN 1 */
  3.         static uint8_t led_state = 0;
  4.         MPU_Config();
  5.         /* USER CODE END 1 */

  6.         /* Enable the CPU Cache */

  7.         /* Enable I-Cache---------------------------------------------------------*/
  8.         SCB_EnableICache();

  9.         /* Enable D-Cache---------------------------------------------------------*/
  10.         SCB_EnableDCache();

  11.         /* MCU Configuration--------------------------------------------------------*/

  12.         /* Update SystemCoreClock variable according to RCC registers values. */
  13.         SystemCoreClockUpdate();

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

  16.         /* USER CODE BEGIN Init */

  17.         /* USER CODE END Init */

  18.         /* USER CODE BEGIN SysInit */

  19.         /* USER CODE END SysInit */

  20.         /* Initialize all configured peripherals */
  21.         MX_GPIO_Init();
  22.         /* USER CODE BEGIN 2 */

  23.         /* USER CODE END 2 */

  24.         /* Infinite loop */
  25.         /* USER CODE BEGIN WHILE */
  26.         while (1) {
  27.                 /* USER CODE END WHILE */

  28.                 /* USER CODE BEGIN 3 */

  29.                 switch (led_state) {
  30.                 case 0: {
  31.                         HAL_GPIO_WritePin(GPIOO, GPIO_PIN_1, GPIO_PIN_RESET);
  32.                         HAL_GPIO_WritePin(GPIOO, GPIO_PIN_5, GPIO_PIN_RESET);
  33.                         HAL_GPIO_WritePin(GPIOM, GPIO_PIN_2, GPIO_PIN_SET);
  34.                         HAL_GPIO_WritePin(GPIOM, GPIO_PIN_3, GPIO_PIN_SET);
  35.                         led_state = 1;
  36.                         break;
  37.                 }
  38.                 case 1: {
  39.                         HAL_GPIO_WritePin(GPIOO, GPIO_PIN_1, GPIO_PIN_SET);
  40.                         led_state = 2;
  41.                         break;
  42.                 }
  43.                 case 2: {
  44.                         HAL_GPIO_WritePin(GPIOO, GPIO_PIN_5, GPIO_PIN_SET);
  45.                         led_state = 3;
  46.                         break;
  47.                 }
  48.                 case 3: {
  49.                         HAL_GPIO_WritePin(GPIOM, GPIO_PIN_2, GPIO_PIN_RESET);
  50.                         led_state = 4;
  51.                         break;
  52.                 }
  53.                 case 4: {
  54.                         HAL_GPIO_WritePin(GPIOM, GPIO_PIN_3, GPIO_PIN_RESET);
  55.                         led_state = 0;
  56.                         break;
  57.                 }
  58.                 }
  59.                 HAL_Delay(200);

  60.         }
  61.         /* USER CODE END 3 */
  62. }

编译完成后,这里STM32CubeIDE还需要进行如下配置才能在下载的时候同步烧录Boot程序。

config_01.png


config_02.png


以上两步必须完成!这里也提示一下:加载Boot_xip.bin时需要手动在文本框里输入".*"并回车才可以选择Boot_xip.bin文件。单纯地选择扩展名,居然不行!

我们来看看我实现的流水灯效果吧!

stm32h7rs-dk_led.gif


强大的STM32H7RS7的开发环境搭建的确实比其它MCU要复杂一些!——谁让它是宇宙第一性能的MCU呢!

好了!本次点灯的实验就到这里了!欢迎大家继续关注我,期待下一篇串口输出实验吧!





Amazingxixixi 发表于 2024-10-31 16:19 | 显示全部楼层
环境监测必须要的点灯步骤。
suncat0504 发表于 2024-10-31 17:28 | 显示全部楼层
点亮LED是熟悉GPIO口操作的最基本,另一个是串口。良好的开端!
地瓜patch 发表于 2024-10-31 18:48 来自手机 | 显示全部楼层
建议把led指示灯改为呼吸灯
欢乐家园 发表于 2024-12-31 23:32 | 显示全部楼层
发送和接收数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:热爱开源,乐于分享。在嵌入式技术领域里面,主攻通讯协议,Modbus,TCP/IP以及虚拟化和RTOS

31

主题

746

帖子

23

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