首先說(shuō)一下編程過(guò)程中幾個(gè)步驟吧
第一,選擇一門語(yǔ)言,C語(yǔ)言或匯編語(yǔ)言,嵌入式編程一般目前流行還是C,這個(gè)需要基礎(chǔ)與時(shí)間
第二讀懂了解 MCU的寄存器各寄存器的功能,尤其是一些IO口設(shè)置,各模塊時(shí)鐘設(shè)置比如定時(shí)器,I2C,同步異步串口,PWM等等,以前的話51的話沒(méi)有這樣設(shè)置。而現(xiàn)在MCU基本上各模塊時(shí)鐘都分開(kāi)了。這個(gè)可以看官方數(shù)據(jù)說(shuō)明書就可以了。
其實(shí)程的目的就是設(shè)置一系列寄存器.并根據(jù)你設(shè)計(jì)程序流程去執(zhí)行它,期間可能加入了你設(shè)計(jì)好的一些算法,和數(shù)學(xué)公式。進(jìn)行計(jì)算,或執(zhí)行。
第三,你有一塊你的實(shí)驗(yàn)板就如這次STM32推的F429,你還需要下載程序的編程器。就是把編譯器編譯好的代碼下載到你的目標(biāo)實(shí)驗(yàn)板上,不過(guò)ST推的多數(shù)實(shí)驗(yàn)班都是自帶USB串口的程序下載器。比如STM32F429就自帶了
第四,你還需要了解的是編譯器,編譯器的數(shù)據(jù)類型一些定義,及有些編譯器的可能自帶內(nèi)建函數(shù),這個(gè)不必須了解。否則無(wú)法編程。
本文主要就介紹STM32的數(shù)據(jù)類型的基礎(chǔ)知識(shí)。以及一些關(guān)鍵詞的意義。
▲在KELI MDK數(shù)據(jù)類型中進(jìn)了如下定義
char占用1個(gè)字節(jié)
short int占用2字節(jié)
int占用4字節(jié)
long占用4字節(jié)
long int占用4字節(jié)
float占用4字節(jié)
double占用8字節(jié)
即有如下宏定義
typedef unsigned char uint8; // 無(wú)符號(hào)8位字符型變量
typedef signed char int8; // 有符號(hào)8位字符型變量
typedef unsigned short uint16; // 無(wú)符號(hào)16位短整型變量
typedef signed short int16; // 有符號(hào)16位短整型變量
typedef unsigned int uint32; // 無(wú)符號(hào)32位整型變量
typedef signed int int32; // 有符號(hào)32位整型變量
typedef float fp32; // 單精度浮點(diǎn)數(shù)(32位長(zhǎng)度)
typedef double fp64; // 雙精度浮點(diǎn)數(shù)(64位長(zhǎng)度)
注:C語(yǔ)言中的種類數(shù)據(jù):整型:int short long 實(shí)型:float, double 。
其中,Unsigned 為無(wú)符號(hào), signed 有符號(hào)。
▲STM32的數(shù)據(jù)類型的宏定義
STM32采用了大量的固件庫(kù),其中在2.0庫(kù)中有24個(gè)數(shù)據(jù)類型如下
typedef unsigned char u8;0~255一字節(jié)
typedef signed char s8;-128~127
typedef volatile unsigned char vu8;
typedef volatile signed char vs8;
typedef unsigned char const uc8;
typedef signed char const sc8;
typedef volatile unsigned char const vuc8;
typedef volatile signed char const vsc8;
typedef unsigned short u16; 0~65535兩字節(jié)
typedef signed short s16; -32768~32767兩字節(jié)
typedef volatile unsigned short vu16;
typedef volatile signed short vs16;
typedef unsigned short const uc16;
typedef signed short const sc16;
typedef signed short const sc16;
typedef volatile unsigned short const vuc16;
typedef volatile signed short const vsc16;
typedef unsigned long u32; 0~(2^32-1)四字節(jié)
typedef signed long s32;
typedef signed long const sc32;
typedef volatile unsigned long const vuc32;
typedef volatile signed long const vsc32;
對(duì)部分?jǐn)?shù)據(jù)類型后面作了注釋,其它類型類推。
▲ 關(guān)于兩個(gè)關(guān)鍵詞說(shuō)明 volatile& const
(1)volatile :這個(gè)關(guān)鍵字,很多人只知道用,不知道其含義,有介紹解釋是不易被編譯器優(yōu)
化的。在STM32資料中解釋加了易揮發(fā)的變量。這些解釋都是含糊不清的。
為此筆者專門查了下這個(gè)修飾關(guān)鍵字含義
通俗的解釋: 隨時(shí)會(huì)改變,并被多函數(shù)調(diào)用可以加volatile修飾。
簡(jiǎn)稱易變變量或易揮發(fā)變量。
表示這個(gè)變量的真的很容易變。
進(jìn)階解釋: 加了這個(gè)volatile意義就是在每次取這個(gè)變量值的時(shí)候,要求不是取它上次在某個(gè) 時(shí)候取的臨時(shí)緩存變量(比如說(shuō)暫存在某個(gè)寄存器中),而是直接到內(nèi)存中取。
個(gè)人經(jīng)驗(yàn): 告訴編譯器,volatile定義的變量必須RAM變量.不能是寄存器變量.
尤其是中斷中用 全局變量一定要加volatile。
(2)const: 在定義變量時(shí)候,如果加上關(guān)鍵詞const,則變量的值在程序運(yùn)行期間不能改變,當(dāng)然不能再賦值了。這種變量稱為常變量(constant variable)或是只讀變量(read-only-variable,這樣覺(jué)得更恰當(dāng))。
▲ STM32F10x_StdPeriph_Driver 3.0以后的版本中使用了CMSIS數(shù)據(jù)類型
3.0以后版本與之前版本變量的定義有所不同,但是出于兼容舊版本的目的,以上的數(shù)據(jù)類型仍然兼容。CMSIS的IO類型限定詞如表 3所示,CMSIS和STM32固件庫(kù)的數(shù)據(jù)類型對(duì)比如表 5所示。這些數(shù)據(jù)類型可以在
STM32F10x_StdPeriph_Lib_V3.4.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
\stm32f10x.h中找到具體的定義。
▲ 數(shù)據(jù)類型和IO類型限定詞
Cortex-Mx HAL使用標(biāo)準(zhǔn)ANSI C頭文件定義的標(biāo)準(zhǔn)類型。特別用類型限定詞IO來(lái)訪問(wèn)外設(shè)的變量。 表3 數(shù)據(jù)類型限定詞IO。
IO類型限定詞 | #define | 描述 |
__I | volatile const | 只讀訪問(wèn) |
__O | volatile | 只寫訪問(wèn) |
__IO | volatile | 讀和寫訪問(wèn) |
▲ ST從庫(kù)包中移除了文件”stm32f10x_type.h”,新的庫(kù)使用CMSIS和定義的數(shù)據(jù)類型。
表5展示了STM32F10xxx和之間數(shù)據(jù)類型的一一對(duì)應(yīng)關(guān)系。
表5 STM32F10xxx固件庫(kù)V2.0.3與CMSIS數(shù)據(jù)類型對(duì)比
STM32F10xxx固件庫(kù)類型 | CMSIS類型 | 描述 |
s32 | int32_t | 有符號(hào)32位數(shù)據(jù) |
s16 | int16_t | 有符號(hào)16位數(shù)據(jù) |
s8 | int8_t | 有符號(hào)8位數(shù)據(jù) |
sc32 | const int32_t | 只讀有符號(hào)32位數(shù)據(jù) |
sc16 | const int16_t | 只讀有符號(hào)16位數(shù)據(jù) |
sc8 | const int8_t | 只讀有符號(hào)8位數(shù)據(jù) |
vs32 | __IO int32_t | 易揮發(fā)讀寫訪問(wèn)有符號(hào)32位數(shù)據(jù) |
vs16 | __IO int16_t | 易揮發(fā)讀寫訪問(wèn)有符號(hào)16位數(shù)據(jù) |
vs8 | __IO int8_t | 易揮發(fā)讀寫訪問(wèn)有符號(hào)8位數(shù)據(jù) |
vsc32 | __I int32_t | 易揮發(fā)只讀有符號(hào)32位數(shù)據(jù) |
vsc16 | __I int16_t | 易揮發(fā)只讀有符號(hào)16位數(shù)據(jù) |
vsc8 | __I int8_t | 易揮發(fā)只讀有符號(hào)8位數(shù)據(jù) |
u32 | uint32_t | 無(wú)符號(hào)32位數(shù)據(jù) |
u16 | uint16_t | 無(wú)符號(hào)16位數(shù)據(jù) |
u8 | uint8_t | 無(wú)符號(hào)8位數(shù)據(jù) |
uc32 | const uint32_t | 只讀無(wú)符號(hào)32位數(shù)據(jù) |
uc16 | const uint16_t | 只讀無(wú)符號(hào)16位數(shù)據(jù) |
uc8 | const uint8_t | 只讀無(wú)符號(hào)8位數(shù)據(jù) |
vu32 | __IO uint32_t | 易揮發(fā)讀寫訪問(wèn)無(wú)符號(hào)32位數(shù)據(jù) |
vu16 | __IO uint16_t | 易揮發(fā)讀寫訪問(wèn)無(wú)符號(hào)16位數(shù)據(jù) |
vu8 | __IO uint8_t | 易揮發(fā)讀寫訪問(wèn)無(wú)符號(hào)8位數(shù)據(jù) |
vuc32 | __I uint32_t | 易揮發(fā)只讀無(wú)符號(hào)32位數(shù)據(jù) |
vuc16 | __I uint16_t | 易揮發(fā)只讀無(wú)符號(hào)16位數(shù)據(jù) |
vuc8 | __I uint8_t | 易揮發(fā)只讀無(wú)符號(hào)8位數(shù)據(jù) |
▲注意出于兼容舊版本的目的文件”stm32f10x.h”中仍然定義了STM32F10xxx固件庫(kù)原有數(shù)據(jù)類型。
文件”stm32f10x.h”中也定義了STM32F10xxx固件庫(kù)專用類型.
它們是:typedef enum {FALSE = 0, TRUE = !FALSE} bool;
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
上一篇:IAR創(chuàng)建STM8S103庫(kù)函數(shù)模板問(wèn)題
下一篇:STM8中斷的設(shè)置(ST Visual Develop和IAR環(huán)境下)
推薦閱讀
史海拾趣
為了進(jìn)一步擴(kuò)大市場(chǎng)份額,CTC公司開(kāi)始尋求與其他行業(yè)的跨界合作。一次與汽車制造商的洽談中,CTC公司提出將自身的電子技術(shù)應(yīng)用于汽車制造中,以提升汽車的性能和智能化水平。雙方經(jīng)過(guò)深入交流,達(dá)成了合作意向。這一跨界合作不僅為CTC公司帶來(lái)了新的業(yè)務(wù)領(lǐng)域,也推動(dòng)了汽車行業(yè)的創(chuàng)新發(fā)展。
隨著Avalon Photonics的不斷發(fā)展壯大,公司開(kāi)始更加關(guān)注社會(huì)責(zé)任和可持續(xù)發(fā)展。公司積極參與公益活動(dòng),支持教育事業(yè)和科技創(chuàng)新。同時(shí),Avalon也致力于研發(fā)更加環(huán)保、節(jié)能的產(chǎn)品,為推動(dòng)電子行業(yè)的可持續(xù)發(fā)展貢獻(xiàn)力量。通過(guò)積極履行社會(huì)責(zé)任,Avalon Photonics不僅贏得了社會(huì)各界的認(rèn)可,也為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
以上五個(gè)故事均基于虛構(gòu)的Avalon Photonics公司背景創(chuàng)作,旨在展示一個(gè)電子行業(yè)公司在發(fā)展過(guò)程中可能遇到的挑戰(zhàn)和機(jī)遇,以及如何通過(guò)技術(shù)創(chuàng)新、國(guó)際合作、產(chǎn)品創(chuàng)新、研發(fā)投入和社會(huì)責(zé)任等途徑實(shí)現(xiàn)快速發(fā)展。這些故事均遵循了只描述事實(shí)、不做褒貶的原則。
隨著環(huán)保意識(shí)的不斷提高,綠色制造成為電子行業(yè)的重要發(fā)展趨勢(shì)。川晶科技積極響應(yīng)國(guó)家綠色發(fā)展的號(hào)召,通過(guò)引進(jìn)先進(jìn)的環(huán)保設(shè)備和技術(shù),實(shí)現(xiàn)了生產(chǎn)過(guò)程的綠色化、低碳化。公司不斷優(yōu)化生產(chǎn)工藝,減少能源消耗和廢棄物排放,推動(dòng)產(chǎn)品向綠色、環(huán)保方向發(fā)展。川晶科技的綠色制造實(shí)踐得到了業(yè)界的廣泛贊譽(yù),成為行業(yè)內(nèi)的綠色標(biāo)桿。
作為一家技術(shù)驅(qū)動(dòng)的公司,Baumer Electric Ag始終注重研發(fā)投入和技術(shù)升級(jí)。公司不斷引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和技術(shù)手段,提高生產(chǎn)效率和產(chǎn)品質(zhì)量。同時(shí),Baumer還積極與高校、科研機(jī)構(gòu)等合作,開(kāi)展前沿技術(shù)研究和新產(chǎn)品開(kāi)發(fā)。這些舉措為公司的持續(xù)發(fā)展提供了強(qiáng)大的技術(shù)支持和創(chuàng)新動(dòng)力。
這五個(gè)故事展示了Baumer Electric Ag公司在電子行業(yè)中的發(fā)展歷程。從創(chuàng)業(yè)初期的堅(jiān)持與突破,到關(guān)鍵人才的引入與領(lǐng)導(dǎo)層的更迭,再到股份制改革與產(chǎn)品創(chuàng)新的結(jié)合,以及國(guó)際化戰(zhàn)略與出口業(yè)務(wù)的拓展和持續(xù)投資與技術(shù)升級(jí),Baumer Electric Ag憑借其卓越的技術(shù)實(shí)力和創(chuàng)新精神,逐步在電子行業(yè)中樹(shù)立起了自己的品牌形象和市場(chǎng)地位。
隨著技術(shù)的成熟,C.K Magma公司開(kāi)始將產(chǎn)品推向市場(chǎng)。他們積極與各大電子廠商合作,為其提供高性能的半導(dǎo)體解決方案。同時(shí),公司還注重品牌建設(shè),通過(guò)參加行業(yè)展會(huì)、舉辦技術(shù)研討會(huì)等方式,提升品牌知名度和影響力。隨著市場(chǎng)份額的逐步擴(kuò)大,C.K Magma公司逐漸在電子行業(yè)中樹(shù)立起了自己的地位。
在電子行業(yè)的早期,AEP公司以其卓越的技術(shù)團(tuán)隊(duì)和對(duì)市場(chǎng)需求的敏銳洞察力脫穎而出。公司研發(fā)出了一款高效能、低成本的電源管理芯片,這一創(chuàng)新產(chǎn)品迅速在市場(chǎng)上獲得了廣泛的認(rèn)可。隨著這款產(chǎn)品的熱銷,AEP公司的知名度逐漸提升,其產(chǎn)品線也逐漸擴(kuò)展到其他電子元器件領(lǐng)域。公司不斷投入研發(fā),推動(dòng)技術(shù)創(chuàng)新,逐漸在電子行業(yè)站穩(wěn)了腳跟。
1.嵌入式系統(tǒng)的定義:是現(xiàn)代科學(xué)多學(xué)科互相融合的以應(yīng)用技術(shù)產(chǎn)品為核心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),以通訊技術(shù)為載體,以消費(fèi)類產(chǎn)品為對(duì)象,引入各類傳感器,進(jìn)入Internet網(wǎng)絡(luò)技術(shù)的連接,從而適應(yīng)應(yīng)用環(huán)境的產(chǎn)品。 2.嵌入式系統(tǒng)無(wú)多余軟件,軟件以固化 ...… 查看全部問(wèn)答∨ |
|
EE_FPGA_V1.0初學(xué)者DIY進(jìn)展 上圖先: 1、拿到板子后,開(kāi)始查看(貌似沒(méi)給我發(fā)LED,可能是玄空大師裝掉了吧,幸好之前的板子上還有,拆了下來(lái) ),率先把EP2C5Q208、SDRAM、FLASH、PL2303焊上,拖了半天,還是給拖上去了,哈哈! 2、把104的電容全焊上,對(duì)照位號(hào)找了大半天呢 ...… 查看全部問(wèn)答∨ |
創(chuàng)意無(wú)處不在——DIY 檸檬電池發(fā)電的做法之二 在使用酸的電池制造方式中需要兩種不同的金屬。銅和鋅是非常好的選擇,因?yàn)樗鼈兡芎蜋幟手械臋幟仕嵝纬珊芎玫乃嵝噪姵丨h(huán)境。 Batteries like this will not be able to run a motor or energize most light bulbs. It is possible to produce a di ...… 查看全部問(wèn)答∨ |
看見(jiàn)了幾個(gè)帖子采用阻容降壓或者直接使用市電的線路圖,感覺(jué)有必要提醒一下大家。此類線路制作起來(lái)簡(jiǎn)單,但是一定要注意用電安全,要采取好必要的安全措施。或者是人體無(wú)法接觸到的,或者您的電氣線路上的漏電保護(hù)裝置能可靠動(dòng)作。在論壇里以前有過(guò) ...… 查看全部問(wèn)答∨ |
誰(shuí)有74系列芯片測(cè)試儀設(shè)計(jì)啊???跪求啊 本帖最后由 paulhyde 于 2014-9-15 09:38 編輯 最好是基于AT89S52單片機(jī)的!?。。。。〖庇冒?!不會(huì)啊!暈暈的??! … 查看全部問(wèn)答∨ |
u-boot-2010.06移植到TQ2440過(guò)程 移植了半個(gè)月,一個(gè)國(guó)慶假期都被我用掉了,終于把u-boot移植到了我的TQ2440,做了一些記錄貼出來(lái)吧! 環(huán)境:Windows XP + 虛擬機(jī)Fedora14交叉編譯器:arm-linux-gcc-4.3.2(EABI)u-boot版本:u-boot-2010-06.tar.bz2開(kāi)發(fā)板資源: TQ2440Nor ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無(wú)刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無(wú)線智能控制器的設(shè)計(jì)
- 基于PTR2000的無(wú)線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無(wú)人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- 3核A7+單核M0多核異構(gòu),米爾全新低功耗RK3506核心板發(fā)布
- 自動(dòng)化控制中智能技術(shù)的應(yīng)用研究
- OEM機(jī)器制造商利用仿真軟件提高效率
- 基于機(jī)器視覺(jué)的帶鋼焊縫定位
- 米爾RK3576核心板適配多種系統(tǒng),解鎖多樣化應(yīng)用
- 實(shí)時(shí)控制和通信領(lǐng)域的IT/OT融合如何推動(dòng)工業(yè)自動(dòng)化
- IXD0579M高壓側(cè)和低壓側(cè)柵極驅(qū)動(dòng)器提供緊湊型即插即用解決方案
- 如何讓自動(dòng)化領(lǐng)域的串口設(shè)備具備聯(lián)網(wǎng)能力?
- MBD應(yīng)用于霍爾組件位置選定
- 村田汽車和工業(yè)設(shè)備用PoC系統(tǒng)靜噪對(duì)策:難點(diǎn)及攻略全解析,別錯(cuò)過(guò)
- 快速獲取TI 工業(yè)電機(jī)驅(qū)動(dòng)資源 答題贏好禮
- 【已結(jié)束】TI 有獎(jiǎng)直播|CAN SIC(信號(hào)改進(jìn)功能)
- 2017年恩智浦物聯(lián)網(wǎng)設(shè)計(jì)大賽
- 2018開(kāi)“芯”學(xué):Mentor兩場(chǎng)知識(shí)有獎(jiǎng)問(wèn)答邀你新年充電
- MPS EMI 知識(shí)充電節(jié)盛大開(kāi)啟!賺積分贏好禮!
- 有獎(jiǎng)直播|安森美高能效產(chǎn)品在 EV-Charger 市場(chǎng)的應(yīng)用
- 參與e絡(luò)盟與 TE 傳感器的問(wèn)卷活動(dòng),贏50元亞馬遜購(gòu)物券!
- 更新個(gè)人資料贏驚喜大禮
- 看人工智能如何發(fā)現(xiàn)夜空中最亮的星
- 谷歌回應(yīng)安卓手機(jī)“the1975”BUG:系軟件問(wèn)題、將修復(fù)
- 自動(dòng)駕駛、無(wú)人機(jī)等都需要它,高精度定位打開(kāi)應(yīng)用之門
- 中國(guó)網(wǎng)絡(luò)渠道銷量最好手機(jī)竟是它:很意外
- 深圳:預(yù)計(jì)2023年集成電路產(chǎn)業(yè)收入超2000億元
- 物流機(jī)器人在高端大件產(chǎn)品智能倉(cāng)作業(yè)現(xiàn)場(chǎng)
- 搭載驍龍636,黑莓KEY2 LE在柏林亮相
- 中興“蘇醒”42天:將奮起直追,加大芯片投入
- 擁有卓越連接性和續(xù)航時(shí)間,英特爾酷睿?處理器優(yōu)化完畢
- 機(jī)器人要求傳感技術(shù)“五化”并進(jìn)