當前位置:首頁 » 編程軟體 » stm32編譯環境安裝教程

stm32編譯環境安裝教程

發布時間: 2022-02-23 09:55:35

❶ 如何使用Eclipse和GCC搭建STM32環境

現在Eclipse已經有stm32的開發環境了,有開發包,但是還是不方便,很多東西要自己去設置相對比較麻煩,最最主要的是在線調試,現在很多都是自己寫,沒有現成的在線調試。

❷ 誰給個MDK環境的C語言stm32單片機開發教程啊,或者給我講講怎麼組織工程,謝謝了!

我 不太懂C語言

❸ Linux下怎樣搭建stm32開發環境

你可以搜索一下eclipse開發環境的搭建,我試過可以搭起來,也可以編譯,就是後來沒時間弄jlink這塊;還有就是eclipse環境下的開發包與STM32CUBE環境下的開發包是一樣的,多了一層硬體描述層,我用不慣,這也是為什麼我沒有繼續用的原因。

❹ stm32 用什麼編譯器好

應該IAR好很多。
同樣的ucosII本家的移植代碼Micrium-ST-uCOS-II-LCD-STM32,
用裡面自帶的keil工程和IAR工程編譯,
都設置為最大尺寸優化,
keil的編譯結果:
Program Size: Code=27562 RO-data=4870 RW-data=196 ZI-data=9240
FLASF佔用:Code+RO-data+RW-data = 27562 +4870 +196 = 32628位元組
RAM佔用:RW-data+ZI-data = 196 + 9240 = 9436位元組
IAR的編譯結果:
13 730 bytes of readonly code memory
5 618 bytes of readonly data memory
8 636 bytes of readwrite data memory
FLASF佔用:13 730 + 5 618 = 19348位元組
RAM佔用:8 636位元組
KEIL比IAR佔用FLASH多:32628- 19348 = 13280位元組

❺ 如何搭建stm32的編譯工具鏈

看你預裝了什麼IDE。比方ARM MDK, IAR等。
安裝好後,建議你下載STM32cube庫,裡面有基於
多種IDE的工程,現存工程,邊用變摸索。

❻ STM32如何用C++開發, 用哪個C++編譯環境有支持。

沒聽說過用C++開發 只是聽說可以用MDK 支持C++ 說實話 沒用過 。 我都是用標准C

要讓MDK支持C++,我所知道的有2種方法。
1> 文件後綴為.cpp。
2> 在選項對話框(project-->options-->c/C++)的[Misc Control]中,填入:--cpp。

❼ 基於keil MDK給stm32編程的問題。。。嵌入式系統開發環境的搭建

您好,一、【安裝STM32庫】 將下載後的stm32f10x_stdperiph_lib.zip解壓後得到三個文件夾分別是:"Libraries"、"Project"、"Utilities"將這3個目錄復制到"Keil uVision4"的安裝目錄,和目錄中的文件覆蓋合並。二、【新建工程】 1、打開"Keil uVision4",在Project菜單中選擇新建工程,選擇工程要保存的位置,在彈出的「Select Device for target」的對話框中選擇使用的STM32單片機的型號如「STM32F103C8」,點確定,然後在彈出的「Copy startup code」的對話框中點選"NO".
2、在Project「Target 1」上點選右鍵菜單「Option for target target1中設置相關參數」在[Output]選項卡中點選「Create HEX file」,點"Select folder for objects"設置臨時生成的obj文件的存放目錄,當然也可以不選擇;
3、在[C/C++]選項卡的"Preprocessor Sysmbols"的Define框中做如下定義:USE_STDPERIPH_DRIVER,STM32F10X_MD
其中USE_STDPERIPH_DRIVER表明要使用ST提供的庫,在"system_stm32f10x.c"文件中包含的"stm32f10x.h"文件中有如下定義:
#ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_conf.h"#endif在[C/C++]選項中添加的USE_STDPERIPH_DRIVER宏就是這個作用,用來包含"stm32f10x_conf.h"這個文件被稱為"Library Configuration file"用來配置你需要使用到庫的那些文件的,例如需要使用到GPIO就應在在這個文件中加上#include "stm32f10x_gpio.h"這個文件可以在STM32庫的給出的常式中找得到(C:\Keil\ARM\Project\STM32F10x_StdPeriph_Examples)另外還需要在常式中復制"stm32f10x_it.c"和"stm32f10x_it.h"這2個文件,這2個文件時用來完成STM32中重中斷服務程序的將一下三個文件復制到自己工程的user目錄下供以後使用:"stm32f10x_conf.h"、"stm32f10x_it.c"、"stm32f10x_it.h"STM32F10X_MD 表明使用的是STM32F10X系列的CPU而該CPU的Flash代碼密度是中等(Medium-density devices)這個和使用的CPU相關的查閱CPU的手冊就可以得到。
然後在該選項卡的下方的"Include Paths"中設置include使用的路徑等,如下圖所示:其中.\user路徑是用來保存自己定義的頭文件的路徑4、[Debug]選項卡選擇使用"Cortex-M/R J-Link/J-Trace",然後點"Settings"按鈕在新打開的對話框中選擇[Flash Download]選項卡點"Add"按鈕添加編程使用的Flash,在本例中選用的CPU是STM32F103C8,其Flah為Medium-density使用片上的Flash型號為"STM32F10X Med-density Flash On-chip-Flash 128K",最終點OK保存設置。5、[Utilities]選項卡中的"Use Target Device for Flash Programing"要選擇和[Debug]選項卡中一樣的調試器"Cortex-M/R J-Link/J-Trace";6、然後再次在左側的"Target 1"上點選右鍵,在菜單中選擇"Manger Components"然後在"Project components"選項卡的"Group"中新建3個組名稱分別為"user"、"libs"、"cmsis"1、 分別用來保存用戶自己的C文件、stm32f10x_stdperiph_lib的庫、和cortex-m3的啟動文件等。

users:
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\ system_stm32f10x.c (stm32f10x_it.c該文件定義各種中斷的中斷服務函數)
libs:
Keil\ARM\ Libraries\ STM32F10x_StdPeriph_Driver\src\*.*
cmsis:
Keil\ARM\ Libraries\ CMSIS\ CM3\ CoreSupport\core_cm3.c
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c
keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s
(該文件和CPU的Flash的代碼密度相關,本例中的STM32F103C8是Medium-density故選用xxx_md.s)

❽ stm32中ad9959的使用常式。編譯環境最好是keil。

/************************************************************
Copyright(C),1995-2013,***.Co.,Ltd.
文件名:ad9959.c
作者:Sun版本:1日期:2013-09-04
模塊描述:
版本信息:
主要函數及其功能:
01.staticuint16_tWrite_DDS_Byte(unsignedcharaByte);//SPI寫操作
02.voidInitAd9959(void);//初始化AD9959,即其工作頻率以及各個通道的輸出頻率
03.voidwrite_CSR(charw_data);//通道的使能以及串列模式的設置
04.voidwrite_FR1(charw_data1,charw_data2,charw_data3);//設置AD9959的工作頻率,需根據外部晶振,及倍頻來設置
05.voidwrite_FR2(charw_data1,charw_data2);//寫FR2寄存器
06.voidwrite_CFR(charw_data1,charw_data2,charw_data3);//寫CFR寄存器
07.voidwrite_CFTW0(longF_word);//頻率調諧字
08.voidwrite_CPW0(intP_word);//寫CPW0寄存器
09.voidwrite_ACR(longA_word);//寫ACR寄存器
10.voidwrite_LSR(charrising,charfalling);//寫LSR寄存器
11.voidwrite_RDW(longrising);//寫RDW寄存器
12.voidwrite_FDW(longfalling);//寫FDW寄存器
13.voidwrite_CTWn(charn,longw_data);//寫CTWn寄存器
14.voidset_frequency(u32f);//寫頻率控制字
15.voidSetAd(floatfre_mhz,intset);//設置通道輸出頻率
歷史修改記錄://
<author><time><version><desc>

***********************************************************/
#include"ad9959.h"
#include"usart.h"
#definePLL_DIV10//倍頻系數
#definePLL16//外部晶振頻率
#definesystemp_frequency(PLL*1000000*PLL_DIV)//AD9959系統頻率

/*************************************************
函數名:staticuint16_tWrite_DDS_Byte(unsignedcharaByte);
功能:SPI寫操作
調用函數:無
被調用函數:
voidwrite_CSR(charw_data);
voidwrite_FR1(charw_data1,charw_data2,charw_data3);
voidwrite_FR2(charw_data1,charw_data2);
voidwrite_CFR(charw_data1,charw_data2,charw_data3);
voidwrite_CFTW0(longF_word);
voidwrite_CPW0(intP_word);
voidwrite_ACR(longA_word);
voidwrite_LSR(charrising,charfalling);
voidwrite_RDW(longrising);
voidwrite_FDW(longfalling);
voidwrite_CTWn(charn,longw_data);
輸入:aByte:SPI要寫的位元組
輸出:無
返回值:SPI讀到的位元組
*************************************************/
staticuint16_tWrite_DDS_Byte(unsignedcharaByte)
{
/**/
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
SPI_I2S_SendData(SPI1,aByte);
/*Waittoreceiveabyte*/
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);

/**/
returnSPI_I2S_ReceiveData(SPI1);
}

/*************************************************
函數名:voidInitAd9959(void);
功能:初始化AD9959用到的GPIO,及設置其工作頻率和通道輸出頻率
調用函數:
write_CSR();//設置通道啟用
write_FR1();//設置主頻
set_frequency();//設置通道輸出頻率
被調用函數:
voidBspInit(void);/初始化所有硬體函數
輸入:無
輸出:無
返回值:無
*************************************************/
voidInitAd9959(void)
{
inti;
GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_SetBits(GPIOC,GPIO_Pin_4);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_Init(GPIOA,&GPIO_InitStructure);

}

/*************************************************
函數名:voidwrite_CSR(charw_data);
功能:通道的使能以及串列模式的設置
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:
voidInitAd9959(void)//初始化AD9959用到的GPIO,及設置其工作頻率和通道輸出頻率
voidSetAd(floatfre_mhz,intset)//
輸入:charw_data:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_CSR(charw_data)
{
CLR_DDSCS;
Write_DDS_Byte(0x00);//writeaddress0.CSR'saddressis0.
Write_DDS_Byte(w_data);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_FR1(charw_data1,charw_data2,charw_data3);
功能:設置AD9959的工作頻率,需根據外部晶振,及倍頻來設置
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:
voidInitAd9959(void)//初始化AD9959用到的GPIO,及設置其工作頻率和通道輸出頻率
輸入:charw_data1,charw_data2,charw_data3:要寫的位元組,從高到低
輸出:無
返回值:無
*************************************************/
voidwrite_FR1(charw_data1,charw_data2,charw_data3)
{
CLR_DDSCS;
Write_DDS_Byte(0x01);//writeaddress1.FR1'saddressis0x01
Write_DDS_Byte(w_data1);
Write_DDS_Byte(w_data2);
Write_DDS_Byte(w_data3);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_FR2(charw_data1,charw_data2);
功能:用於控制各種功能、特性和模式
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:charw_data1,charw_data2:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_FR2(charw_data1,charw_data2)
{
CLR_DDSCS;
Write_DDS_Byte(0x02);//writeaddress2
Write_DDS_Byte(w_data1);
Write_DDS_Byte(w_data2);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_CFR(charw_data1,charw_data2,charw_data3);
功能:通道功能寄存器
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:charw_data1,charw_data2,charw_data3:要寫的位元組,從高到低
輸出:無
返回值:無
*************************************************/
voidwrite_CFR(charw_data1,charw_data2,charw_data3)
{
CLR_DDSCS;
Write_DDS_Byte(0x03);
Write_DDS_Byte(w_data1);
Write_DDS_Byte(w_data2);
Write_DDS_Byte(w_data3);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_CFR(charw_data1,charw_data2,charw_data3);
功能:頻率調諧字
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:
voidset_frequency(u32f);//設置頻率
輸入:longF_word:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_CFTW0(longF_word)//ChannelFrequencyTuningWord(CTW0)
{
CLR_DDSCS;
Write_DDS_Byte(0x04);
Write_DDS_Byte(((unsignedchar*)(&F_word))[3]);
Write_DDS_Byte(((unsignedchar*)(&F_word))[2]);
Write_DDS_Byte(((unsignedchar*)(&F_word))[1]);
Write_DDS_Byte(((unsignedchar*)(&F_word))[0]);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_CPW0(intP_word);
功能:相位偏移字
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:intP_word:要寫的位元組
輸出:無
輸出:無
返回值:無
*************************************************/
voidwrite_CPW0(intP_word)//ChannelPhase1OffsetWord(CPW0)(0x05)
{
CLR_DDSCS;
Write_DDS_Byte(0x05);
Write_DDS_Byte(((unsignedchar*)(&P_word))[1]&0x3F);
Write_DDS_Byte((((unsignedchar*)(&P_word))[0]));
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_ACR(longA_word);
功能:幅度控制寄存器
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:longA_word:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_ACR(longA_word)
{
CLR_DDSCS;
Write_DDS_Byte(0x06);
Write_DDS_Byte(((unsignedchar*)(&A_word))[2]);
Write_DDS_Byte(((unsignedchar*)(&A_word))[1]);
Write_DDS_Byte(((unsignedchar*)(&A_word))[0]);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_LSR(charrising,charfalling);
功能:線性斜率掃描
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:charrising,charfalling:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_LSR(charrising,charfalling)
{
CLR_DDSCS;
Write_DDS_Byte(0x07);
Write_DDS_Byte(rising);
Write_DDS_Byte(falling);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_RDW(longrising);
功能:LSRRisingDeltaWord(RDW)
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:longrising:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_RDW(longrising)
{
CLR_DDSCS;
Write_DDS_Byte(0x08);
Write_DDS_Byte(((unsignedchar*)(&rising))[3]);
Write_DDS_Byte(((unsignedchar*)(&rising))[2]);
Write_DDS_Byte(((unsignedchar*)(&rising))[1]);
Write_DDS_Byte(((unsignedchar*)(&rising))[0]);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_FDW(longfalling);
功能:LSRFallingDeltaWord
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:longfalling:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_FDW(longfalling)
{
CLR_DDSCS;
Write_DDS_Byte(0x09);
Write_DDS_Byte(((unsignedchar*)(&falling))[3]);
Write_DDS_Byte(((unsignedchar*)(&falling))[2]);
Write_DDS_Byte(((unsignedchar*)(&falling))[1]);
Write_DDS_Byte(((unsignedchar*)(&falling))[0]);
SET_DDSCS;
}

/*************************************************
函數名:voidwrite_CTWn(charn,longw_data);
功能:
調用函數:
Write_DDS_Byte();//SPI寫函數
被調用函數:無
輸入:charn,longw_data:要寫的位元組
輸出:無
返回值:無
*************************************************/
voidwrite_CTWn(charn,longw_data)
{
CLR_DDSCS;
Write_DDS_Byte(n+0x09);//CTWn'saddressisn+0x09.n>=1andn<=15.
Write_DDS_Byte(((unsignedchar*)(&w_data))[3]);
Write_DDS_Byte(((unsignedchar*)(&w_data))[2]);
Write_DDS_Byte(((unsignedchar*)(&w_data))[1]);
Write_DDS_Byte(((unsignedchar*)(&w_data))[0]);
SET_DDSCS;
}

/*************************************************
函數名:voidset_frequency(u32f);
功能:設置頻率調諧字
調用函數:
write_CFTW0();//寫頻率調諧字
被調用函數:
voidInitAd9959(void);//初始化AD9959用到的GPIO,及設置其工作頻率和通道輸出頻率
voidSetAd(floatfre_mhz,intset);//設置頻率調諧字
輸入:u32f:通道輸出頻率
輸出:無
返回值:無
*************************************************/
voidset_frequency(u32f)
{
longtemp;
temp=(unsignedlongint)f*(0xFFFFFFFF*1.0/(float)systemp_frequency+1.0/systemp_frequency);
write_CFTW0(temp);
}

/*************************************************
函數名:voidSetAd(floatfre_mhz,intset);
功能:設置通道輸出頻率
調用函數:
write_CSR();//通道的使能以及串列模式的設置
set_frequency();//設置頻率調諧字
被調用函數:無
輸入:floatfre_mhz,intset:通道號及對應頻率
輸出:無
返回值:無
*************************************************/
voidSetAd(intFreKhz)
{
inti=0xff;
//通道2比通道3多50khz
write_CSR(0x80);//通道3
set_frequency((u32)(FreKhz*1000));
write_CSR(0x40);//通道2
set_frequency((u32)((FreKhz+50)*1000));

SET_IOUPDATE;
while(i--);
CLR_IOUPDATE;
}

延時沒有很精確,僅做參考。

❾ STM32 開發環境用哪個

目前STM32開發最廣泛、最常用的開發環境是MDK和IAR兩種
各大學習開發板生產廠商常式都是以IAR和MDK為基準設計編寫的
其中MDK居多

❿ STM32 開發環境用哪個

嵌入式軟體搭配最新版的STM32CubeMX個人電腦開發工具使用,設計人員可在繪圖介面向導內配置微控制器,只要按一下,即可生成初始化C代碼,直接用於多款市面上流行的第三方開發工具。
http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242?icmp=pf259242_pron_nb_jun2014&sc=stm32cube-pr4

STM32Nucleo開發板可讓開發人員連接微控制器的全部I/O介面,並整合了ST-Link偵錯器(debugger)/程式設計(programmer),無需單獨安裝偵錯器。最後,STM32Nucleo開發板擁有mbedTM功能,這表示該開發板可與個人電腦直接連結,並直接在mbed.org線上開發環境執行開發板。

熱點內容
直鏈雲存儲 發布:2025-01-16 13:19:30 瀏覽:726
電腦主機伺服器多少錢 發布:2025-01-16 13:00:28 瀏覽:667
linuxoracle操作 發布:2025-01-16 12:40:50 瀏覽:47
河北存儲服務價格 發布:2025-01-16 12:39:21 瀏覽:351
掛機伺服器的搭建 發布:2025-01-16 12:34:07 瀏覽:417
安卓怎麼刪除信任憑證 發布:2025-01-16 12:22:06 瀏覽:338
代理編譯 發布:2025-01-16 12:07:59 瀏覽:794
伺服器為什麼老是無響應 發布:2025-01-16 12:07:59 瀏覽:894
安卓怎麼傳軟體到蘋果 發布:2025-01-16 12:01:28 瀏覽:957
pythonforzip 發布:2025-01-16 11:59:46 瀏覽:912