本帖最后由 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呢!
好了!本次点灯的实验就到这里了!欢迎大家继续关注我,期待下一篇串口输出实验吧!
|