打印
[STM32H7]

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

[复制链接]
160|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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程序——流水灯程序。



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

int main(void) {

        /* USER CODE BEGIN 1 */
        static uint8_t led_state = 0;
        MPU_Config();
        /* USER CODE END 1 */

        /* Enable the CPU Cache */

        /* Enable I-Cache---------------------------------------------------------*/
        SCB_EnableICache();

        /* Enable D-Cache---------------------------------------------------------*/
        SCB_EnableDCache();

        /* MCU Configuration--------------------------------------------------------*/

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

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

        /* USER CODE BEGIN Init */

        /* USER CODE END Init */

        /* USER CODE BEGIN SysInit */

        /* USER CODE END SysInit */

        /* Initialize all configured peripherals */
        MX_GPIO_Init();
        /* USER CODE BEGIN 2 */

        /* USER CODE END 2 */

        /* Infinite loop */
        /* USER CODE BEGIN WHILE */
        while (1) {
                /* USER CODE END WHILE */

                /* USER CODE BEGIN 3 */

                switch (led_state) {
                case 0: {
                        HAL_GPIO_WritePin(GPIOO, GPIO_PIN_1, GPIO_PIN_RESET);
                        HAL_GPIO_WritePin(GPIOO, GPIO_PIN_5, GPIO_PIN_RESET);
                        HAL_GPIO_WritePin(GPIOM, GPIO_PIN_2, GPIO_PIN_SET);
                        HAL_GPIO_WritePin(GPIOM, GPIO_PIN_3, GPIO_PIN_SET);
                        led_state = 1;
                        break;
                }
                case 1: {
                        HAL_GPIO_WritePin(GPIOO, GPIO_PIN_1, GPIO_PIN_SET);
                        led_state = 2;
                        break;
                }
                case 2: {
                        HAL_GPIO_WritePin(GPIOO, GPIO_PIN_5, GPIO_PIN_SET);
                        led_state = 3;
                        break;
                }
                case 3: {
                        HAL_GPIO_WritePin(GPIOM, GPIO_PIN_2, GPIO_PIN_RESET);
                        led_state = 4;
                        break;
                }
                case 4: {
                        HAL_GPIO_WritePin(GPIOM, GPIO_PIN_3, GPIO_PIN_RESET);
                        led_state = 0;
                        break;
                }
                }
                HAL_Delay(200);

        }
        /* USER CODE END 3 */
}

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





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

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



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

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





使用特权

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

本版积分规则

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

16

主题

341

帖子

2

粉丝