STM32F407(STM32F4-DISCOVERY) - Mbinu isiyo ya kawaida - Muundo msingi

Kwa muda mrefu, hata kwa muda mrefu sana, hakujakuwa na nakala mpya kwenye nakala yetu, kwa hivyo ni wakati wa kupata 😉 Leo tutaanza kusoma STM32F4. Na, pengine, tutaanza kwa kuunda mradi mpya kwa watawala hawa, ingawa, kuwa waaminifu, sikutaka kuandika makala kuhusu hilo, kwa sababu. mradi mpya hapa imeundwa, kimsingi, kwa njia sawa na kwa STM32F103 (). Lakini bado hutokea kwamba matatizo fulani hutokea na STM32F4, kwa hiyo, hata hivyo, hebu tuchunguze mchakato huu kwa undani)

Kwa hivyo, wacha tuzindue Keil, tuunde mradi mpya - Mradi -> Mradi Mpya wa uVision. Tunahifadhi mradi mpya kwenye folda fulani, na kisha tutaulizwa kuchagua kidhibiti kidogo cha kutumia. Kweli, wacha tuchague, iwe STM32F407VG:

Imefanywa, kwenye kisanduku cha mazungumzo kinachoonekana, bonyeza "Ndio" na faili ya kwanza itaongezwa kwa mradi wetu - startup_stm32f4xx.s. Kama hapo awali, tutatumia maktaba CMSIS Na Maktaba ya Kawaida ya Pembeni, lakini, kwa kawaida, tayari kwa vidhibiti vya STM32F4xx. Kwa hivyo unahitaji kupakua na kuziongeza faili muhimu kwenye mradi wetu ambao bado tupu. Kwa njia, nimesikia zaidi ya mara moja kutoka watu tofauti, kwamba kuna baadhi ya maktaba "ya makosa" ya F4, na hata mradi rahisi zaidi haujajengwa. Mimi mwenyewe sijakutana na hii, hata hivyo, hapa kuna maktaba zilizojaribiwa ambazo mimi mwenyewe hutumia:

Kwa hiyo, tulipakua, kila kitu ni tayari, sasa tunaongeza faili kwenye mradi huo. Picha inaonyesha kile unachohitaji:

Naam, maandalizi yamekamilika, sasa hebu tuunde faili mpya ya .c, ambayo itakuwa na msimbo wetu. Twende Faili->Mpya, inafungua katika Keil faili tupu, bofya Faili-> Hifadhi kama na uihifadhi chini ya jina test.c, kwa mfano. Unapohifadhi, usisahau kutaja kiendelezi cha faili (.c). Faili iliundwa, nzuri, lakini pia tunahitaji kuiongeza kwenye mradi wetu. Kweli, hakuna chochote ngumu juu yake 😉 Wacha tuandike programu tupu ya jaribio kwenye faili hii:

#pamoja na "stm32f4xx.h" #pamoja na "stm32f4xx_rcc.h" #pamoja na "stm32f4xx_gpio.h" /*******************************************************************/ int main() ( wakati (1 ) ( __NOP() ; ) ) /*******************************************************************/

Karibu kila kitu kiko tayari, kilichobaki ni kuangalia mipangilio ya mradi - Mradi->Chaguo za lengo... Dirisha hufungua kwa vichupo vingi, tunavutiwa na vichache tu hapa. Fungua kichupo C/C++ na katika uwanja wa Define tunaandika:

Naam, chini ya shamba unahitaji kuongeza njia kwa faili zote zilizojumuishwa kwenye mradi. Baada ya kukamilisha hatua hii, unaweza kushinikiza F7 (Jenga), na mradi utajengwa bila makosa au maonyo. Kama unaweza kuona, hakuna kitu ngumu)

Lakini kwa ujumla, mimi binafsi hufanya mambo kwa njia tofauti kidogo. Angalia ubaya wa njia hii. Kwa hiyo tulipakua maktaba ya CMSIS na SPL mahali fulani, tukaongeza faili kutoka kwa folda hizi, tukaandika njia za faili, kila kitu ni baridi. LAKINI! Mradi huo hautajengwa kwenye kompyuta nyingine, kwani njia zote ni kamili, ambayo ni, zinaelekeza. folda maalum kwenye kompyuta yako. Na kwenye mashine nyingine itabidi utekeleze tena hatua za kuunda mradi mpya. Hii ni minus kubwa. Kwa hivyo mimi hutengeneza kawaida folda tofauti kwa mradi mpya, ninaunda folda ndogo ndani yake kwa CMSIS, SPL na maktaba zingine zinazotumiwa na kuweka faili zote ambazo ninahitaji katika kila mradi maalum kwenye folda hizi. Kwa mfano, hebu tuunde folda ya STM32F4_Test ya mradi wetu mpya na folda zifuatazo ndani yake:

Niliweka kila kitu kwenye folda za CMSIS na SPL faili muhimu, ambayo tuliongeza wakati wa kuunda mradi mwanzoni mwa makala hiyo. Sasa tunazindua Keil, tengeneza mradi mpya na kuuhifadhi kwenye folda yetu ndogo ya Mradi ili faili zote za mradi ziwe katika sehemu moja na zisisababishe fujo)

Mradi umeundwa, sasa, kama hapo awali, tunaongeza faili zote kutoka kwa folda za STM32F4_CMSIS na STM32F4_SPL kwake. Katika folda ya Chanzo tunaweka faili yetu ya test.c kazi kuu() na pia tunaiongeza kwenye mradi. Kilichobaki ni kusanidi mipangilio =) Kila kitu ni sawa - katika uwanja wa kufafanua tunaandika:

USE_STDPERIPH_DRIVER,STM32F4XX



Tunakusanya mradi - hakuna makosa, kukimbia ni kawaida! Kimsingi, mwisho tulipata kitu kimoja, lakini sasa mradi huo utakusanywa mara moja kwenye kompyuta nyingine yoyote bila shida yoyote, na hii ni rahisi sana na muhimu) Kwa kweli faili zote za mradi sasa ziko karibu, kwenye folda moja, na njia zimekuwa jamaa na sio lazima zibadilishwe.
Ni hayo tu, kwa kweli, katika siku za usoni tutafanya kitu kupanga STM32F4, hakika, kwa hivyo tutakuona hivi karibuni!;)

Mradi kamili kutoka kwa nakala ya mfano -

Badala ya utangulizi

Habari! Leo nilianza kuchapisha mfululizo wa makala juu ya programu ya STM32F4. Kozi hiyo itaonekana kama mafunzo mafunzo ya video yenye maelezo mafupi na misimbo ya chanzo kwa masomo .

Dibaji

Karibu na chemchemi ya 2015, baada ya utata mwingi wa ndani katika nafsi yangu, niliamua kuanza programu ya STM32F4. Kwa nini mara moja STM32F4? Mstari huu ni, ikiwa sio bendera ya MK ya familia ya STM32, basi hakika ni suluhisho mkali, kubwa na la gharama nafuu. Nyumba zinazouzwa hata nyumbani na uwepo wa idadi kubwa ya uwezekano, kutoka kwa pembeni na ALU. STM32F4 ni Cortex-M4, ambayo ni mrithi wa moja kwa moja wa Cortex-M3 (STM32-L1, F1, F2) na inatofautiana nayo hasa katika msingi na uwepo wa DSP (digital. processor ya ishara) na FPU (kitengo cha sehemu ya kuelea).

Kwa nini kozi hii inavutia?

KATIKA RuNet kozi nyingi tofauti kwenye programu ya STM32. Jumuiya inaweza kutumika kama mteja wa mitindo kwenye mada hii EasyElectronics.ru. Habari nyingi muhimu zinaweza kupatikana kutoka hapo. Jukwaa ya rasilimali hii pia ni muhimu sana. Mimi mwenyewe nilijifunza mambo mengi ya kuvutia kutoka kwa rasilimali hii. Kozi hii itakuwa ya kuvutia kwa wale ambao, kama mimi, wanaanza kujifunza programu STM32F4 sio kutoka mwanzo, lakini kutoka kwa msingi wa 8-bit MKs. Nitaelezea mawazo yangu na maendeleo katika kusoma STM32F4 na programu zake.

Tutatumia nini?

Makala hii inaeleza"STM32CubeMX - jenereta ya juu ya mradi wa STM32." Hii ndiyo hasa tutakayotumia. HAL kutoka ST ni maktaba. Inafanana sana na SPL. Kwa hivyo, mifano iliyoandikwa katika SPL inatumwa kwa HAL kwa urahisi. Ingawa kuna tofauti nzuri katika kazi zenyewe. Mchemraba STM32 hukuruhusu kutoa mradi uliotengenezwa tayari na vitendaji vya kuanzisha vifaa vya pembeni vilivyochaguliwa kwa IDE zingine za kibiashara na sio tu. Hizi ni IAR, Keil, TrueStudio, System Workbench ya STM32 (SW4STM32). Miradi ya IAR, Keil inazalishwa kwa msingi wa turnkey, lakini kwa SW4STM32 sio sawa Nyororo. Lakini usikate tamaa. Kwa mimi mwenyewe nilichagua Mfumo wa Workbench kwa STM32 (SW4STM32). Na masomo yote yatajengwa kwenye IDE hii.

Fanya mazoezi. Anza. Ufungaji wa STM32CubeMX.

Hebu kwenda mbali. Tovuti ya ST, kwa ukurasa wa STM32CubeMX Jenereta ya msimbo wa kuanzisha STM32Cube (UM1718) na upakue programu STM32CubeMX. Ufungaji sio shida. Baada ya usakinishaji, unahitaji kufunga maktaba muhimu chini aina tofauti msingi. Hili linafanywa katika kichupo cha Usaidizi -> Sakinisha Maktaba Mpya, angalia kipengee cha Firmware Packege For Family STM32F4 na ubofye kitufe cha Sakinisha Sasa. Baada ya mchakato wa kupakua na kufungua, STM32CubeMX iko tayari kutumika.

Fanya mazoezi. Muendelezo. Ufungaji Mfumo wa Workbench kwa STM32 (SW4STM32).

Hakuna kitu kisicho cha kawaida hapa pia. Tunakwenda kwenye tovuti, kujiandikisha, kupakua usambazaji. Sisi kufunga. Kila kitu ni banal kabisa. Nina usambazaji huu: Kisakinishi cha hivi punde zaidi cha Windows 7 32 bit (Toleo la v1.3, lililosasishwa Ijumaa, Julai 24, 2015 saa 12:52:28 CEST), sijui ni tofauti vipi na toleo la 64 bit. Lakini hawapaswi kuwa wakosoaji. Nimewahi toleo hili imewekwa kwenye XP SP3 na 8.1

Fanya mazoezi. Kumalizia. Kuingiza mradi wa mchemraba kwenye SW4STM32.

Iko kwenye YouTube video ya elimu kwa uingizaji wa mradi. Sisi pia tutakwenda njia sahihi. Tazama mafunzo ya video ya chapisho hili hapa chini:

Masomo ya programu ya STM32F4. Somo Nambari 0. Utangulizi. Maelezo. Inasakinisha IDE. VIDEO.

Z.Y. tunaongeza maoni, maswali na mapendekezo

Kutoka kwa makala hii ninaanza kutoa mifano ya vitendo. Na ya kwanza yao itakuwa kuundwa kwa mradi wa msingi. Kwa nini ninafanya hivi? Jibu ni rahisi: kurahisisha mkusanyiko wa programu ninayohitaji. Muundo wa mradi huu umeundwa kuwa huru kabisa kutoka kwa faili zingine za kichwa na maktaba, kwa hivyo ni rahisi kubebeka.

Ikumbukwe pia kuwa suluhisho nililochagua lina faida mbili kubwa:

  1. Tunapanua mradi, i.e. unaweza kuongeza kwa urahisi msimbo rahisi au maktaba nzima kwake.
  2. Kwa kubadilisha idadi ya chini ya faili, unaweza kubadilisha mfano wa MK (baadaye kidogo nitafanya kazi kwenye hatua hii bora ili uweze kubadilisha familia za MK).
Hebu tuangalie kwa karibu mradi huu, pamoja na baadhi ya vipengele vya kiufundi.

Makefile

Mfumo wa kutengeneza hutumika kusimamia jengo, usafishaji, na upakiaji wa mradi. Kwa kubofya kiungo unaweza kujua jinsi inavyofanya kazi, lakini nitazingatia vipengele vingine vya toleo langu la mfumo wa kujenga:

    # Njia ya mizizi ya mradi

    ROOTDIR = $(njia halisi . ) - chaguo hili inaonyesha kile kinachochukuliwa kuwa mzizi wa mradi, ni rahisi sana ili sio kuunda wingu katika kila kiunga cha uongozi wa mradi. njia za jamaa. Inatumika kujumuisha faili za vichwa na kubainisha njia za maktaba.
  1. # Jumuisha usanidi wa kawaida

    ni pamoja na lib/make/Makefile.common- inajumuisha jumla faili ya usanidi mradi (hapa chini nitaelezea muundo wake kwa undani zaidi). Hukuruhusu kuongeza kwa haraka bendera na njia za kimataifa.
  2. #Kutengeneza libs

    lib:

    $(MAKE ) -C lib ROOTDIR = $(ROOTDIR ) - wakati wa kujenga maktaba, mimi hupitisha njia ya msingi ya mradi kwa Makefiles zote za msingi.
  3. # Sheria za kuandika firmware kwa mcu

    andika: firmware.bin

    qstlink2 -cewV ./firmware.bin- kwa kurekodi mimi hutumia programu ya QSTLink ambayo nilizungumza kwenye .
Nambari iliyobaki kwenye Makefile hii ni ya kawaida kabisa. Kwa hiyo, sitawaelezea, lakini katika maoni niko tayari kujibu maswali yoyote kuhusiana na hili, pamoja na vipengele vingine vinavyokuvutia.

stm32f4xxxg_flash.lg

Hati ya kuunda picha ya jozi ya programu iliyo na anwani kamili za maeneo ili kuanzishwa. Imenakiliwa kutoka kwa hati ya kawaida ya kujenga, na baadhi ya chaguo zimeongezwa, pamoja na mabadiliko kwenye maeneo amilifu.

Faili za kichwa cha mradi za kawaida. Kweli, pamoja na faili ya kichwa kwa kila faili msimbo wa chanzo katika src, kuna saraka ambazo zina ufafanuzi mahususi wa mradi. Hapa maelezo mafupi yaliyomo kwenye saraka hii:

  1. zote:

    $(MAKE ) -C std_periph - kujenga maktaba
  2. safi:

    $(MAKE ) clean -C std_periph - ili kuitakasa
Hiyo ni, kwa kweli, katika faili hii, mistari 2 tu ya msimbo huongezwa kwa kila maktaba mpya, ambayo hurahisisha uongezaji wa maktaba mpya kwenye mradi.

Pia, katika saraka hii kuna std_periph/ - maktaba vifaa vya pembeni vya kawaida, ambayo nitazungumzia katika makala inayofuata.

  • reset_handler.c - reset vector handler, pamoja na kuita kazi () kazi - /* piga msimbo wa kufanya kazi */ kazi (); , hufanya kazi kama kianzilishi cha anuwai za mradi, zote mbili zilizofafanuliwa na kufafanuliwa: uint32_t * src; uint32_t * dest; src = &__maandishi_mwisho; dest = &__data_start; ikiwa (src != dest) wakati (dest< &__data_end) *(dest++) = *(src++); dest = &__bss_start; while (dest < &__bss_end) *(dest++) = 0;
  • reset_handler (void ) __attribute__ ((weak , pak ("default_handler")));
  • work.c - nambari ya kazi ya mradi, pia inajulikana kama kitanzi kikuu. Hivi sasa ipo tu mzunguko usio na mwisho: /* kazi kuu ya kazi */ kazi batili(batili) ( /* kitanzi cha infinity */ while (1); )
Kwa hili, ninamaliza maelezo ya chaguo kuu za mradi wa msingi katika makala zinazofuata nitaelezea kwa undani kila sehemu yake.

Watu wengine wanapenda mikate, wengine hawapendi.

Na kwa hivyo, kuna utatuzi wa stm32f429, nk. Tulicheza demos, tukaona kwamba picha zilikuwa zikiendesha, vifungo kwenye skrini vilikuwa vinasisitizwa, na kutengeneza nyuso. Hii ni nzuri, lakini wacha tuanze na mradi tupu.

Mradi, kwa ujumla, umeundwa kwa njia sawa na kwa .

Lakini ikiwa ufunguo hauungi mkono mtawala huyu hata kidogo (haijasasishwa), basi kila kitu kinakuwa gumu zaidi =)
Kwanza, hebu tupakue kumbukumbu na maktaba na mifano ya programu za bodi - kuna mengi ya kufuta.

Na kwanza kabisa, hebu tutoe stm32f4xx.h kutoka CMSIS. Katika Keil, ikiwa haijasakinishwa kutoka mwanzo, ya mwisho, faili hii ni ya kale sana. Kwa mwanzo, bila shaka, hii itakuwa ya kutosha, lakini hakuna kitu kinachoweza kufanywa na skrini, vifaa vya pembeni vile vimeonekana tu.
Chukua faili kwenye folda STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4xx\Jumuisha na uhamishe kwa folda inayofanana huko Kale Keil\ARM\INC\ST\STM32F4xx. Nimewahi faili mpya iligeuka kuwa 100 kb zaidi.

Kuanzisha kwa mfululizo mpya wa 4xx kunaweza kupatikana kwenye folda STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4xx\Chanzo\Templates\mkono. Kuna nyingi tofauti:
startup_stm32f4xx.s
startup_stm32f40_41xxx.s
startup_stm32f40xx.s
startup_stm32f401xx.s
startup_stm32f427_437xx.s
startup_stm32f427x.s
startup_stm32f429_439xx.s

Kwa kawaida, tunahitaji mwisho. Huko, kwenye folda iliyo hapo juu unaweza kuchukua iliyosasishwa system_stm32f4xx.c. Lakini usiamini, imeundwa kwa masafa ya fuwele ya 25 MHz. Ni bora kutengeneza yako mwenyewe kwa kutumia jenereta (ikiwa umeipata, sikuipata) au kuivuta kutoka kwa folda. STM32F429I-Discovery_FW_V1.0.0\Projects\Demonstration\Core\Devices\STM32F4xx.

Itakuwa nzuri kuongeza faili ya maelezo ya usajili kwa Kitazamaji cha Mfumo.
Kwanza, pakua faili za svd kutoka kwenye tovuti ya mkono, faili STM32F429x.svd: CMSIS (tabo ya CMSIS-SVD, usajili unahitajika). Chagua mfululizo unaotaka hapo, angalia kisanduku na ubofye Pakua.
Kisha faili inahitaji kubadilishwa kuwa fomu ambayo Keil anaweza kuelewa kwa kutumia matumizi ya SVDConv.exe, ambayo iko kwenye folda. STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\SVD. Lakini kabla ya kutekeleza amri, unahitaji kunakili mkusanyaji wa Keil SfrCC2.Exe kutoka kwenye folda ya Keil\UV4 hadi kwenye folda ambapo uongofu unafanyika. Na mwisho:
SVDConv STM32F429x.svd --generate=sfr

Wacha tupate faili STM32F429x.SFR.

Kubwa. Hebu tuunde mradi kulingana na mtawala fulani sawa, na kisha kurekebisha vigezo vyake kwa wale tunaohitaji. Wacha tufanye mradi tupu kama ugunduzi wa stm32f4, lakini bila faili ya kuanza (bado tunahitaji nyingine).
1. Mradi -> Mradi mpya.
Chagua folda na uipe jina mradi. Hifadhi.
2. Wanatoa kuchagua microcontroller. Sawa.
Katika folda ya ST tunatafuta baadhi ya STM32F4xx na kuchagua (au msingi wa Cortex-M4). Ikiwa haipo, sasisha Cale, kwani bila msaada kwa kernel ya CM4 hakuna kitu maalum cha kukamata. Nilichagua stm32f407vg.
3. Wanapendekeza kuiga kwa mradi wa kuanza - ni nini, haifai kabisa.

Tunaweza kupeana folda mahali pa kuweka vitu (Chaguo-> Pato-> Chagua Folda ya Vitu) na uorodheshaji (Chaguo-> Uorodheshaji->Chagua Folda ya Orodha).
Wacha tubadilishe vikomo vya kumbukumbu (tazama sehemu ya Ramani ya Kumbukumbu kwenye hifadhidata). Ukubwa wa ROM 0x200000 (2 MB), haraka RAM1 kwenye anwani 0x10000000 ukubwa 0x10000, RAM2 ya kawaida kwenye anwani 0x20000000 ukubwa 0x30000 (kuna tatu tofauti, lakini ni tofauti gani hadi sasa). Kadi ya kumbukumbu ilichukuliwa katika sehemu ya 5 "Ramani ya kumbukumbu".

Kwenye kichupo cha Debug, chagua ST-Link Debugger (katika mali zake, chagua itifaki ya SW). Kwenye kichupo cha Huduma, chagua pia Kitatuzi cha ST-Link na ubofye Mipangilio. Huko tunaongeza algorithm ya firmware: Ongeza -> STM32F4xx 1Mb Flash (ikiwa una 2Mb, basi super). Kuanza, itafanya, basi, inaonekana, utalazimika kusasisha ufunguo, au kuiba algorithm kubwa kwa flash.

Na wacha tuongeze ufafanuzi wa kuchagua kidhibiti (maktaba zinaihitaji, inaonekana) kwenye kichupo cha C/C++: STM32F429_439xx.

Hifadhi mradi na uufunge kwa sasa. Fungua mradi (.uvproj) ndani mhariri wa maandishi na urekebishe kila kitu kingine:
Kifaa: STM32F429ZI;
CPU: IRAM(0x20000000-0x2002FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x81FFFF) SAA(8000000) CPUTYPE("Cortex-M4") FPU2
StartupFile: "Anzisha\ST\STM32F4xx\startup_stm32f429_439xx.s" ("Msimbo wa Kuanzisha STM32F429")
SDFfile: SFD\ST\STM32F4xx\STM32F429x.sfr
OCR_RVCT4.Ukubwa: 0x200000

Tunaweza, kwa ujumla, kufungua mradi na kuongeza faili:
startup_stm32f429_439xx.s
system_stm32f4xx.c
kuu.c

Hiyo ndiyo yote, tunakusanya na kupata mradi tupu uliokusanyika, ambao unaweza kuanza safari ya kuelewa ugumu wa watawala mpya.


Nakala hiyo, kwa ujumla, imeandikwa kama ukumbusho wa kile kinachohitajika kufanywa ili kuunda mradi safi uliokusanywa kwenye mawe ya STM32F10x.

Hebu tuanze na ukweli kwamba tunamhitaji Keil mwenyewe, wale ambao wamefanya vizuri, wale ambao hawana - . Kufanya kazi na kila safu ya watawala, na kuna wengi wao -


unahitaji seti yako ya maktaba, uzuri ni kwamba ziko ndani ufikiaji wa umma moja kwa moja kwenye ukurasa wa jiwe maalum kwenye tovuti ya ST, kwa kuwa tunaandika mradi wa STM32F100RB, fuata tu kiungo chake kwa ST, kisha uende kwenye kichupo cha Rasilimali za Kubuni, angalia safu ya Vyombo vinavyohusiana na Programu na katika uwanja wa Usajili. , yaani, Maelezo, unapaswa kuona kwamba kitu sawa - STM32F10x kiwango maktaba pembeni. Hili ndilo faili tunalopakua. Kweli, kwa wavivu - pakua tu kutoka hapa (vipakuliwa: 363).

Kwa njia, x kwa jina STM32F10x inaonyesha kuwa maktaba zinafaa kwa watawala walio na jina la nambari linalopendwa mahali pake. Kuna vitu vingi kwenye kumbukumbu mifano muhimu na takataka zaidi, tunahitaji folda ya Maktaba - hapo ndipo mbwa huzikwa. Ikiwa utafanya kazi kwa bidii na mawe, unahitaji kukumbuka orodha ndogo faili zinazohitajika kuendesha mradi. Hebu tuunda folda tofauti na kuiita, kwa mfano, STM32F10x_Clear na ndani yake folda inayoitwa CMSIS. Sasa tutahamisha faili tunazohitaji kutoka kwa folda ya Maktaba. Ni muhimu sana kwamba njia kamili hakukuwa na alfabeti ya Cyrillic!

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.h

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.h

Pia unahitaji faili stm32f10x_conf.h - STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\ na kuiondoa kutoka kwa mradi wowote, unaweza kuiandika kwenye utafutaji. Keil kawaida huchukua kutoka kwa folda zake, lakini mara nyingi hutokea kwamba kutokana na dhoruba za magnetic ambazo hazijawahi kutokea kuna mtu mmoja mwenye bahati ambaye anahitaji kuunganisha tofauti, tutafanya mara moja.

Jambo zima linapaswa kuonekana kama hii

Sasa kwenye mzizi wa STM32F10x_Clear tunaunda folda ya pili inayoitwa SPL (Standard Peripheral Library), na kunakili folda za inc na src huko, ambazo ziko ndani.

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\<--------

Kwa matokeo, unapaswa kuwa na folda STM32F10x_Clear ambayo folda za CMSIS na SPL ziko.

Folda ya CMSIS ina faili muhimu zaidi, na SPL ina maktaba za pembeni zilizotengenezwa tayari.

Kwa kifupi kuhusu kila mmoja wao:

Core_cm3 - Faili za maelezo ya msingi ya M3

Stm32f10x.h - faili ya maelezo ya pembeni

System_stm32f10x - faili ya uanzishaji

Mkusanyaji yuko tayari, maktaba zimeandaliwa, kilichobaki ni kuweka yote pamoja.

Hatua ya kwanza ni kuunda mradi mpya huko Keil. Tunatafuta menyu ya Mradi, katika orodha kunjuzi - Mradi Mpya wa uVision, jina na uhifadhi mradi. Zaidi ya hayo, tunatafuta kwa utaftaji au kupitia menyu ya mti na kupata jiwe letu, ambalo ni STM32F100RB, kisha ujumbe unaibuka juu ya kunakili faili ya kuanza - kuna faili za uanzishaji wa stack na kukatiza meza za vekta, kwa ujumla, vitu muhimu, bonyeza. SAWA. Tunaona picha ifuatayo

Sasa tunafanya kazi na eneo la faili zilizounganishwa - hapa ni

Faili zetu za Kuanzisha zilizounganishwa tayari zipo, sasa hebu tuunganishe zingine. Kwa uwazi, hebu tubadilishe jina la SourceGroup1 hadi Startup.

Bofya kulia kwenye Target1 na ubofye Ongeza Kikundi

Kwa hivyo, tunaunda vikundi 3 zaidi, tukiwaita CMSIS, SPL, Source. Kwa kubofya mara mbili kwenye jina la kikundi, tunafungua mchunguzi wa kuunganisha faili kwenye kikundi, katika CMSIS tunaongeza faili zote kutoka kwa folda ya STM32F10x_Clear\CMSIS, kwenye kikundi cha SPL kutoka kwa folda ya STM32F10x_Clear\SPL faili zote kutoka kwa inc na src. Kwa jumla, bado kuna folda tupu ya kikundi cha Chanzo - kuu yetu itahifadhiwa hapo, ili kuunda Faili-Mpya, baada ya Hifadhi-Faili kama - tunahifadhi faili inayoitwa main.c kwenye folda na mradi wetu, sasa tuna iongeze kupitia mgunduzi wa kikundi cha Chanzo. Kila kitu kimeunganishwa, inaonekana kama unaweza kunywa bia ... lakini sasa sio - kuanzisha.

Kwanza kabisa, nenda kwenye folda yetu ya STM32F10x_Clear na katika Sifa zake katika Sifa usifute kisanduku cha kuangalia Soma-tu, hii ni muhimu kubadilisha yaliyomo kwenye faili zilizounganishwa, kwa sababu kwenye dirisha la faili la Keil kutakuwa na ufunguo kinyume na faili na ufanye. unachotaka. Endelea, bofya kwenye faili stm32f10x.h katika CMSIS na utafute mstari

#kama !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_HD) (STM32F1 0X_XL) && !defined (STM32F10X_CL) / * #fafanua STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */ /* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */ /* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */ /* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */ /* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */ /* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */ /* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */ /* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */ #endif

Hii ni maagizo ya kuchagua jiwe lazima ufanye, vinginevyo hautakusanya mradi. Kwa kuwa tuna vifaa vya Laini ya Thamani ya Msongamano wa Wastani wa STM32, tunahitaji kuiondoa kwa kuondoa /* mbele yake.

Mstari unaofuata

#kama !defined USE_STDPERIPH_DRIVER /** * @brief Toa maoni kwenye mstari ulio hapa chini ikiwa hutatumia viendeshaji vya pembeni. Katika hali hii, viendeshi hivi hazitajumuishwa na msimbo wa maombi utategemea ufikiaji wa moja kwa moja kwa rejista za vifaa vya pembeni */ /*#fafanua USE_STDPERIPH_DRIVER*/ #endif

Ondoa maoni kwenye mstari - #fafanua USE_STDPERIPH_DERIVER

Sasa sanidi mkusanyaji. Bofya kulia kwenye Target1 - Chaguzi za Lengo "Target1". Tunaona yafuatayo

Sehemu tunazohitaji ni:

Pato - angalia kisanduku karibu na Unda Faili ya HEX

C/C++ - katika sehemu ya Alama za Preprocessor tunaonyesha STM32F10X_MD_VL - hivi ndivyo ambavyo hatukutoa maoni, na USE_STDPERIPH_DRIVER ikitenganishwa na koma, angalia skrini.

Sasa unahitaji kutaja njia ya folda za faili zote zilizounganishwa, na hizi ni CMSIS na SPL. Kwenye sehemu ya Jumuisha Njia, bonyeza... kisha Mpya na ongeza folda CMSIS, SPL/inc, SPL/src, inapaswa kuonekana kama hii.

Kumbuka kwa siku zijazo, unapounganisha maktaba za watu wengine au faili zingine, KUWA NA UHAKIKA! waongeze kwenye menyu hii, vinginevyo tarajia makosa.

Sehemu ya Debug inajieleza yenyewe, ifanye kama kwenye picha, yaani angalia kisanduku na uchague Kitatuzi cha ST-Link.