使用STM32CUBEMX+Embedded Studio开发STM32

1.Segger Embedded Studio 简介

Segger Embedded Stadio 是segger公司新开发的嵌入式编译器环境(IDE),可以用于管理,构建,测试和部署嵌入式应用程序,Nordic 的SDK往后的只更新项目工程到SES开发环境,Keil和IAR不再支持。
主要特征:
1.适用于嵌入式C/C ++编程的专业IDE解决方案
2.跨平台:可在Windows,macOS和Linux上运行
3.包含Clang/LLVM和GCC C/C++编译器
4.高度优化的运行时库,可实现最佳性能和最小代码量
5.具有无缝J-Link集成的功能丰富的调试器
6.强大的项目管理器和源代码编辑器
7.基于软件包的项目生成器,适用于所有常见的微控制器
8.多线程构建可最大程度地减少构建时间
9.免费用于任何非商业用途,例如教育和评估目的,没有任何限制

2.开发环境

  1. STM32CUBEMX
  2. Embedded Studio(V5.40)
  3. STM32H743IITX小系统开发板

3.开始(以及会出现的问题)

1.使用STM32CubeMX配置一个点灯小Demo工程,我的开发板上配置的是PB1。
2.按照下图所示配置生成Keil工程
生成工程
3.打开Segger Embedded Studio 按照下图所示导入刚才生成的Keil工程
导入
4.选择使用外部编译链(下方选择KEIL的编译器位置)
在这里插入图片描述
5.编写一个简单的LED闪烁程序

/* USER CODE BEGIN 0 */
uint8_t count_num = 0;
/* USER CODE END 0 */

/**
 1. @brief  The application entry point.
 2. @retval int
  */
int main(void)
{
  /* Enable I-Cache---------------------------------------------------------*/
  SCB_EnableICache();

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

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

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* Configure the system clock */
  SystemClock_Config();
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    HAL_Delay(100);
    HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
    HAL_Delay(100);
    count_num++;
    if(count_num == 5)
    {
      count_num = 0;
    }
  }
}

6.点击DEBUG中的GO即可打开调试
在这里插入图片描述
在这里我们发现虽然我们的LED工程已经跑起来了,LED灯已经开始闪烁了。但是当我们查看右上角的变量窗体里面提示(Restricted memory range)意味着我们并没有追踪到这一个变量,在调试中是不可以接受的。那么我们应该怎么去解决这个问题呢,下面将继续介绍。

4.解决办法

经过我的高强度的网上冲浪,我在Segger官方的文档里找到了这个答案!其实导入到上面一步并没有完全完成所有的工作,我们还需要导入设备的内存映射,Flash配置等文件。(官方文档的连接会附在文后,有兴趣的兄弟可以自己阅读一下)。下面我将简单的演示一下如何完成全部工作。
1.在下图所示的位置下载相关芯片的支持包。
在这里插入图片描述
2.按照下图所示的位置,打开支持包的路径建立相关的芯片支持文件夹

3.建立芯片支持文件夹
将以下特定于设备的文件从包文件夹复制到一个新文件夹中。
启动代码 /Source/_Startup.s.
矢量表 /Source/_Vectors.s.
链接器脚本 /Scripts/_Flash.icf.
内存映射 /XML/<设备名称>_MemoryMap.xml。
寄存器文件 /XML/<设备名称>_Registers.xml。
均在文件内,仔细寻找便是
在这里插入图片描述
5.完成对相关内容的设置
打开项目设置切换至Comon设置
在这里插入图片描述

在 Code -> Linker -> Linker Script File 中添加 .icf 文件.
在 Code -> Linker -> Memory Map File 中添加 the *_MemoryMap-.xml 文件.
在 Debug -> Debugger -> Register Definition File 中添加 *_Registers.xml 文件.
在这里插入图片描述
在这里插入图片描述
重新构建后开启仿真
在这里插入图片描述
可以看见右上角的变量已经可以成功显示了,实验完成!!!

参考链接

Segger官方参考文档
Embedded Studio 下载地址

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值