MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM

前言

今年芯片市场真是命运多舛,受到疫情的影响,上游晶圆短缺,直接导致今年芯片产能不足,连STM32这样的通用MCU也出现价格涨价甚至价格翻翻,但生活总得继续,STM32价格太贵也只能尝试使用国产的MCU,最受关注的当属兆易创新GD32,今年的产品基本就在这个平台上开发了,从习惯STM32的HAL库开发到GD32的类似标准库开发的转变总归还是有些不适应,而且还不能用STMStuido这样监控变量,既然要走破釜沉舟这条路,不如来个釜底抽薪,重新调研一下现在常用的IDE。
得知目前可以用JLINK的JScope来替换STMStudio来监控变量,而且还能达到超高速的记录数据,顿时对JLINK产生了好感,也关注到他们公司SEEGER也出了自己的IDE,不仅是跨平台的,而且运行速度均秒杀Keil和IAR,这一下提起了兴趣,因此写下这个系列专题,打算跟SES死磕到底啦!
该系列所需所有软件均同步到百度云,有需要可以自行下载

链接:https://pan.baidu.com/s/1KYtT8yJUIeFBpp3ed-9IFw
提取码:bggv

软件下载和安装

SEGGER Embedded Studio for ARM 最新的版本已经更新到V5.30,下载地址:https://www.segger.com/downloads/embedded-studio/
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第1张图片
不仅支持window,还支持mac和linux。

软件安装

下载安装包后,安装过程比较简单,基本上一直下一步就好
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第2张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第3张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第4张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第5张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第6张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第7张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第8张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第9张图片

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第10张图片

安装插件

安装完软件后,第一次打开会提示License,这个软件对个人和教育是免费使用的,直接点击Continue跳过

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第11张图片
会默认新建一个工程

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第12张图片
我们是准备开发GD32,这里需要安装一下支持的插件,和KEIL的PACK一样
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第13张图片
弹出一个更新的提示,选择Yes

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第14张图片
等待结束后,会列出现在适配的插件库,可以看到CMSIS的最新版本是5.0.4这个有点过时了,后面再写个博文来介绍如何使用最新的CMSIS库。下拉找到我们要使用的GD32的型号

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第15张图片
右击选择Install Selected Packages。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第16张图片
可以看到Action变成了Install。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第17张图片
点击下一步,列出了即将要安装的插件清单

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第18张图片
安装结束后会提示安装成功的提示,点击完成
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第19张图片

新建工程

这里开始新建一个工程
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第20张图片
这里提示是新建一个工程到新的解决方案中,还是将新建一个工程到现在的解决方案中,当有多个工程需要管理时,可以选择第二个,这里以第一个为示例。
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第21张图片
选择一个C/C++的工程,并配置好工程名和工程路径
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第22张图片
这里选择型号,编译器,输出格式,以及头文件路径和打印宏定义,堆栈空间等。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第23张图片
关于编译器的选择,可以参考SEEGER的编译器测试表,地址:
https://www.segger.com/products/development-tools/embedded-studio/technology/tools/segger-compiler/

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第24张图片
MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第25张图片

添加相关启动文件和脚本文件

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第26张图片

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第27张图片
点击完成后,可以得到一个默认工程,这个工程是打印Hello World,连上板子,编译F7运行F5可以得到调试效果
我用的板子是GD32F303的开发板以及JLINK

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第28张图片

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第29张图片
SES的特点是使用JLINK作为调试器后,会自动将printf重定向到JLINK_RTT里,这样可以节省一路串口来打印信息,非常方便。后来有时间还会介绍如何使用RTT配合SCOPE来监控变量。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第30张图片

第一个点灯程序

从工程目录里也可以看出,该工程里还没有GD32的外设库。
我们在源文件目录右键选择添加Add Existing Items

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第31张图片
在弹出的对话框中找到GD32的插件库安装目录:

C:\Users\ZhangHao\AppData\Local\SEGGER\SEGGER Embedded Studio\v3\packages\GD32F30x\CMSIS\Device\Source

添加必要的文件

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第32张图片
参考systick.cpp文件来配置对应的嘀嗒定时器参数。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第33张图片
从板子原理图上可以看到有两个LED分别接在了PB14和PB15上。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第34张图片
编写代码,让两个灯交替闪烁,同时打印计时时间。

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第35张图片

/*********************************************************************
*                    SEGGER Microcontroller GmbH                     *
*                        The Embedded Experts                        *
**********************************************************************

-------------------------- END-OF-HEADER -----------------------------

File    : main.c
Purpose : Generic application start

*/

#include 
#include 
#include 


static volatile int ticks = 0;

void SysTick_Handler(void) {
     
  ticks++;
}

static void delay(int n) {
     
  unsigned endTicks = ticks + n;
  while (ticks < endTicks);
}

/*********************************************************************
*
*       main()
*
*  Function description
*   Application entry point.
*/
int main(void) {
     
  // Enable SysTick timer interrupt
  SysTick->LOAD = (SystemCoreClock / 1000) - 1;
  SysTick->VAL = 0;
  SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;

  // Config led gpio
  rcu_periph_clock_enable(RCU_GPIOB);
  gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_14);
  gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_2MHZ,GPIO_PIN_15);
  while(1){
     
    printf("ticks = %d\n", ticks);
    gpio_bit_set(GPIOB,GPIO_PIN_14);
    gpio_bit_reset(GPIOB,GPIO_PIN_15);
    delay(200);
    gpio_bit_reset(GPIOB,GPIO_PIN_14);
    gpio_bit_set(GPIOB,GPIO_PIN_15);
    delay(200);
  }

  // Disable SysTick interrupt
  SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
  exit(EXIT_SUCCESS);
}

/*************************** End of file ****************************/

MCU开发 —— GD32篇:1.开发环境搭建之 SEGGER Embedded Studio for ARM_第36张图片
开发板上的两颗LED灯开始交替闪烁

结语

第一次体验到这里就结束了,SEGGER体验上比Keil和IAR要美观很多,而且调试界面功能非常丰富,当然也有一些适应的过程,后续为逐步改善我们的代码和参数。

你可能感兴趣的:(MCU,gd32,embedded,studio,SES)