大多數單片機程序員,使用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 ===