[STM32H7]【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呢!
 
好了!本次点灯的实验就到这里了!欢迎大家继续关注我,期待下一篇串口输出实验吧!。
---------------------
作者:jobszheng
链接:https://bbs.21ic.com/icview-3407070-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值