大多数单片机程序员,使用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 ===