木子剑
生命不熄,学习不止!

大多数单片机程序员,使用MDK或IAR比较多,共同点是小公司或个人用是倒版的;无意中发现有个正版的Embedded Studio可以用,

使用感觉性能已超过了IAR !写个随记,让有需要的人快速入门。

 

下载软件

首先进入  https://www.segger.com/downloads/embedded-studio/  下载Embedded Studio,注意下载与pc系统对应版本。

 

 

 下载好后,下一步,下一步就安装完了。这里个人建议,同时安装Visual Studio 2019开发工具,可以写C/C++等等应用的,也会给PC装一些必要的依赖DLL文件,真香定律!!

 

 

安装支持包

先准备好STM32的官方固件库,可以通过各种方法下载到,我当前用的是:

 

 

 

打开embedded-studio;在Tools下安装支持包:

 

 

 

只要安装如下支持包就可以:

 

 

 

我手上有一块STM32F103VET6的核心板,所以找到ST的CPU接口文件包:

  好了,支持包安装完成。

 

创建STM32工程项目

打开Embedded Studio,左上角File-->New Project...后出现下图对话框:

 

 

 

点击Next,选择芯片型号或者相似型号(国产芯片很多是兼容芯片):如下图:

 

 

 点击Next,出现如下对话框:(如果要用printf调试窗口,下图设为Library I/O:    RTT)

 

 

  点击Next, 再点击Next,直到完成。

 

 

直接按F7,如上图所示发现是编译成功的!!这是最原始的建工程方法,只有一些关键的文件

 

 

增加STM32固件库信息

 

 

 

在工程中增加Libraries文件夹,并贴加Libraries内的相应文件:

 

 

 

下面来配置参数和路经:

 

 

 

继续,找到Preprocessor并点击它,在右边出现我们要设置的参数:

 

 

 

 

宏定义内容如下: 

 

 

 

 

用户路经如下,主要是固件库的Libraries内容:

 实际可以使用IDE自带的CMSIS包,只要使用固件库src和inc即可

 

 

然后在原官方固件库中,查找到stm32f10x_conf.h,复制作到我们工程中:

 这个xxxx_conf.h文件,可以按照个人习惯放置就好。

 

 

把main.c改成如下内容:

#include "stm32f10x.h"

//---------------------------------------------------------------------------
int main(void)
{  

  //SystemInit();

  /* GPIOD Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

  /* Configure PC6 in output pushpull mode */
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

// ESE test!
long aa;
while(1){
          /* Set PC6 */
          GPIOC->BSRR = 0x00000040;
          aa=0X1FFFFF;
          while(aa--);

          /* Reset PC6 */
          GPIOC->BRR  = 0x00000040; 
          aa=0X1FFFFF;
          while(aa--);
        }//while

        return 0;
}//main

 

 

最后进行Build编译,发现编译成功了。

 

 

 

在线仿真,点Debug --->go,也能正常进入仿真了,开发板上的LED灯闪亮起来,一闪一闪亮晶晶,你是我的小眼睛。

 到此为止,算是完成STM32的工程建立和测试了。

 

其它设置项目

 

 下图中Compiler的gcc,我觉得都改成clang,好像是比GCC强一点

 

 

 

 

 

 

 

 

关键文件的认知

SEGGER_THUMB_Startup.s     这个是IDE必备文件,但我发现同一内核的这文件,是一样一样的,所以什么M0  M4芯片的,只要能运行正常的。

就可以直接放在同核国产芯片使用。

 

Cortex_M_Startup.s    这个是通用的M启动文件, 包含了0-15号中断的标准内核中断信息;不包含外设的中断号,要用户跟据芯片自己在这个S文件写入;

 

STM32F1xx_Startup.s   这是专用XX芯片的启动文件,里面有个代码,调用了另一个S文件,这个文件包含了所有芯片的中断号;它的代码是:

 

STM32F103xx_Vectors.s 就是芯片厂家写好中断向量表,这是回应上面的代码的: 

STM32F1xx_Flash.icf  这个与IAR的ICF用的指令完全一模一样,所以呢?哈哈 

虽然不精通这些汇编,但我能感觉到,它的使用原理和方法。 

 

所以,有了上述信息后,只要是M0  ,M3 ,M4这些芯片,我们可以自己重写这些文件,来支持任何国产芯片了!!

 

Embedded Studio启动原理:在IDE中配置参数,会直接被ICF所使用,再执行通用CMx_startup启动文件,

最后执行SEGGER_THUMB_Startup.s文件,来到main()世界!!

 

 

时间:2022-01-22

最近发现,我们一般新建的工程都是C的;  如果想设计C++工程,怎么办泥??试了很久,感觉找到了

一些信息。

1 -- 》 先安装C++ STL 功能如下图:

  

2 -- 》 Embedded Studio包含了C++部份文件,有限的文件适合嵌入式的,位于\SEGGER Embedded Studio for ARM 5.68\include文件夹内:

  

3 -- 》然后新建工程把main.c改成main.cpp ,编译器把.c按C来处理;把.cpp按C++来处理.这好像是费话了---:如下图:

  

这时候没有硬件,可以进行在线软件仿真,调试一些算法或箩辑代码;

  

 4 -- 》补一下 Embedded Studio设置内容

  

C和C++版本,选高一点为好,至少要C++11以上:

 

 一些Embedded Studio的宏定义和用户的文件路经,前面已经提到过了,避免来回翻阅,再贴一次图片:

 

=== END ===

posted on 2021-12-10 23:47  木子剑  阅读(12223)  评论(0编辑  收藏  举报