STM32 മൈക്രോകൺട്രോളറുകളുടെ ദ്രുത വൈദഗ്ദ്ധ്യം. പ്രത്യേക രജിസ്റ്റർ വിലാസങ്ങൾ നിർണ്ണയിക്കുന്നു

ARM കൺട്രോളറുകൾ മാസ്റ്റേഴ്സ് ചെയ്യുന്നതിനുള്ള മറ്റൊരു "ദ്രുത ആരംഭം" ആയ ഈ ലേഖനം, Cortex-M3 കോർ - STM32F1xxx സീരീസ് അടിസ്ഥാനമാക്കിയുള്ള 32-ബിറ്റ് ARM കൺട്രോളറുകൾ മാസ്റ്റേഴ്സ് ചെയ്യുന്നതിനുള്ള ആദ്യ ചുവടുകൾ എടുക്കാൻ നിങ്ങളെ സഹായിച്ചേക്കാം. ഒരുപക്ഷേ ഈ ലേഖനം (മഴയ്ക്ക് ശേഷമുള്ള കൂൺ പോലെ ഈ വിഷയത്തിൽ പ്രത്യക്ഷപ്പെടുന്നത്) ആർക്കെങ്കിലും ഉപയോഗപ്രദമാകും.

ആമുഖം

എന്തുകൊണ്ട് ARM?
1. തിരഞ്ഞെടുക്കാൻ ധാരാളം ഉണ്ട് (വ്യത്യസ്ത നിർമ്മാതാക്കൾ ഇന്ന് 240-ലധികം ARM കൺട്രോളറുകൾ നിർമ്മിക്കുന്നു)
2. കുറഞ്ഞ വില(ഉദാഹരണത്തിന്, $1-ന് നിങ്ങൾക്ക് 37xI/O, 16K ഫ്ലാഷ്, 4K റാം, 2xUART, 10x12bitADC, 6x16bitPWM എന്നിവ ലഭിക്കും).

ST മൈക്രോഇലക്‌ട്രോണിക്‌സിൽ നിന്നുള്ള കൺട്രോളറുകൾ ഉപയോഗിച്ച് നമുക്ക് ജോലി ആരംഭിക്കാം. ARM Cortex-M3 കോർ അടിസ്ഥാനമാക്കിയുള്ള കൺട്രോളറുകൾക്ക് വിശാലമായ പെരിഫറലുകൾ, ഉയർന്ന പ്രകടന സവിശേഷതകൾ, കുറഞ്ഞ വില എന്നിവയുണ്ട്.
പി.എസ്. തുടക്കത്തിൽ തന്നെ, ARM- കൾ ഒരുതരം ഭയങ്കര ജീവികളാണെന്ന് തോന്നുന്നു (സോളിഡിംഗ്, വയറിംഗ്, പ്രോഗ്രാമിംഗ് എന്നിവയിൽ ഇത് ഒറ്റനോട്ടത്തിൽ മാത്രമാണ് :) നിങ്ങൾ ഇത് സ്വയം കാണും.

അതിനാൽ, STM32F1 കൺട്രോളറുകളുടെ ഉദാഹരണം ഉപയോഗിച്ച് ഞങ്ങൾ ARM-കൾ പഠിക്കും. അതേ സമയം, ഈ ശ്രേണിയിൽ നിരവധി വരികളുണ്ട്:

  • മൂല്യ ലൈൻ STM32F100 - 24 MHz CPU, മോട്ടോർ നിയന്ത്രണം, CEC.
  • ആക്‌സസ് ലൈൻ STM32F101 - 36 MHz CPU, 1 MB ഫ്ലാഷ് വരെ
  • USB ആക്സസ് ലൈൻ STM32F102 - USB FS ഉള്ള 48 MHz CPU
  • പ്രകടന ലൈൻ STM32F103 - 72 MHz, 1 MB ഫ്ലാഷ് വരെ, മോട്ടോർ നിയന്ത്രണം, USB, CAN
  • കണക്റ്റിവിറ്റി ലൈൻ STM32F105/107 - 72 MHz CPU, ഇഥർനെറ്റ് MAC, CAN, USB 2.0 OTG

ഇനിപ്പറയുന്ന വർഗ്ഗീകരണവും ഉണ്ട്:

STM32 കൺട്രോളറുകൾ 3 മെമ്മറി ഏരിയകളിൽ നിന്ന് ബൂട്ട് ചെയ്യാൻ നിർബന്ധിതരാകും (BOOT0, BOOT1 പിന്നുകളുടെ അവസ്ഥയെ ആശ്രയിച്ച് കൺട്രോളർ ആരംഭിക്കുമ്പോഴോ അത് പുനഃസജ്ജമാക്കിയതിന് ശേഷമോ). കൺട്രോളർ മെമ്മറിയിലേക്ക് ഇനിപ്പറയുന്ന രീതിയിൽ നിങ്ങൾക്ക് ഒരു പ്രോഗ്രാം എഴുതാം:

1 വഴി:
ബൂട്ട്ലോഡർ ഉപയോഗിക്കുന്നു (ഇത് ഇതിനകം സിസ്റ്റം മെമ്മറിയിൽ എഴുതിയിട്ടുണ്ട്) കൂടാതെ USART1(USART2 പുനർനിർമ്മിച്ചു): ആന്തരിക 8 MHz ക്ലോക്ക് സിഗ്നൽ ഉപയോഗിക്കുന്നു. നിർമ്മാതാവ് കൺട്രോളറിലേക്ക് ഹാർഡ്‌വയർ ചെയ്‌ത ബിൽറ്റ്-ഇൻ ബൂട്ട്‌ലോഡർ സമാരംഭിക്കുന്നതിന്, നിങ്ങൾ RS232-3.3V കൺവെർട്ടറിൽ നിന്ന് (ഉദാഹരണത്തിന്, FT232RL അടിസ്ഥാനമാക്കി) ഒരു സിഗ്നൽ TX1, RX1 എന്ന കൺട്രോളറിൻ്റെ കൈകളിലേക്ക് എറിയേണ്ടതുണ്ട്. BOOT0 = 1, BOOT1 = 0, റീസെറ്റ് അമർത്തുക, നമുക്ക് കൺട്രോളറിൽ പ്രോഗ്രാം തയ്യാം. അത് തുന്നിച്ചേർത്തിരിക്കുന്നു ഫ്ലാഷ് പ്രോഗ്രാം STM മുഖേനയുള്ള ലോഡർ ഡെമോൺസ്റ്റാർട്ടർ (വിൻഡോസിനായി).

പി.എസ്. നിങ്ങൾ LINUX പ്രവർത്തിപ്പിക്കുന്നതും ഒരു കണ്ടെത്തൽ തരത്തിലുള്ള ഡീബഗ്ഗിംഗ് ബോർഡ് ഇല്ലെങ്കിൽ, എല്ലാവരുടെയും പ്രിയപ്പെട്ട rs-232 (യഥാർത്ഥത്തിൽ, rs-232-3.3V കൺവെർട്ടർ വഴി) നിങ്ങൾക്ക് കൺട്രോളറിലേക്ക് ഫേംവെയർ അപ്‌ലോഡ് ചെയ്യാം. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ ഒരു പൈത്തൺ സ്ക്രിപ്റ്റ് (ഇവാൻ എ-ആർ) ഉപയോഗിക്കേണ്ടതുണ്ട് (LINUX അല്ലെങ്കിൽ MACOSX-ന്).
ആദ്യം, നിങ്ങൾ പൈത്തൺ 2.6 ഇൻസ്റ്റാൾ ചെയ്യുകയും സീരിയൽ പോർട്ടുമായി പ്രവർത്തിക്കാൻ ഒരു ലൈബ്രറിയും ഉണ്ടായിരിക്കണം - പൈസീരിയൽ ലൈബ്രറി.
ഇപ്പോൾ, stmloader.py സ്‌ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുന്നതിന് (തീർച്ചയായും, ടെർമിനലിൽ നിന്ന്), നിങ്ങളുടെ കമ്പ്യൂട്ടറിന് അനുയോജ്യമായ രീതിയിൽ നിങ്ങൾ ഇത് കുറച്ച് മാറ്റേണ്ടതുണ്ട്: ഇത് ഒരു ടെക്സ്റ്റ് എഡിറ്ററിൽ തുറക്കുക.
ൽ റിക്രൂട്ട് ചെയ്യുന്നു കമാൻഡ് ലൈൻ
~$ dmesg | grep tty
എല്ലാ പിസി സീരിയൽ പോർട്ടുകളും കാണുന്നതിന്.
ടൈപ്പ് ചെയ്തതിനു ശേഷം...
~$ setserial -g /dev/ttyS
ഞങ്ങളുടെ 232-ാമത്തെ തുറമുഖത്തിലേക്കുള്ള പാത ഞങ്ങൾ കണ്ടെത്തി. സെറ്റ് സീരിയലിനെക്കുറിച്ച് സിസ്റ്റം പരാതിപ്പെട്ടാൽ, അത് ഇൻസ്റ്റാൾ ചെയ്യുക
~$ sudo apt-get install setserial
ഞങ്ങളുടെ ഫിസിക്കൽ പോർട്ടിലേക്കുള്ള പാത ഞങ്ങൾ കണ്ടെത്തുന്നു (ഉദാഹരണത്തിന്, എൻ്റേത് /dev/ttyS0). ഡിഫോൾട്ട് “/dev/tty.usbserial-...” എന്നതിനുപകരം നിങ്ങൾ ഇപ്പോൾ stm32loader.py സ്ക്രിപ്റ്റ് ഫയലിലേക്ക് ഈ പാത്ത് എഴുതേണ്ടതുണ്ട്. ടെർമിനലിൽ ടൈപ്പ് ചെയ്യുക
~$ പൈത്തൺ stm32loader.py -h
...സഹായത്തിനായി വിളിക്കാനും ഞങ്ങളുടെ കൺട്രോളറിലേക്ക് ഫേംവെയർ അപ്‌ലോഡ് ചെയ്യാനും.

രീതി 2:
USB വഴി DFU മോഡ് ഉപയോഗിക്കുന്ന OTG, 8 MHz, 14.7456 MHz അല്ലെങ്കിൽ 25 MHz എന്നിവയിൽ ഒരു ബാഹ്യ ക്വാർട്സ് ആവശ്യമാണ് (USB OTG ഉള്ള എല്ലാ കൺട്രോളറുകൾക്കും ഈ ബൂട്ട്ലോഡർ ഇല്ല; നിങ്ങളുടെ കൺട്രോളറിൻ്റെ അടയാളപ്പെടുത്തലുകൾ നിങ്ങൾ ശ്രദ്ധാപൂർവ്വം നോക്കണം)

3 വഴി:
JTAG/SWD.ഡിസ്കവറി-ടൈപ്പ് ഡെമോ ബോർഡ് അല്ലെങ്കിൽ വീട്ടിൽ തന്നെ നിർമ്മിച്ച JTAG/SWD പ്രോഗ്രാമർ ഉള്ളവർക്ക്, നിങ്ങൾക്ക് കോഡ് അപ്‌ലോഡ് ചെയ്യാനും നിങ്ങളുടെ മൈക്രോകൺട്രോളർ ഈ രീതിയിൽ ഡീബഗ് ചെയ്യാനും കഴിയും. JTAG-ന്, മൈക്രോകൺട്രോളറിന് 6 കാലുകൾ ഉണ്ട് (TRST, TDI, TMS, TCK, TDO, RST) + 2 പവർ. SWD 4 സിഗ്നലുകളും (SWDIO, SWCLK SWO, RESET) പവറിനായി 2 ഉപയോഗിക്കുന്നു.

പി.എസ്. EAGLE പരിതസ്ഥിതിയിൽ, 48, 64, 100-ലെഗ് കൺട്രോളറുകൾക്കായി (കഴുകൻ ഫോൾഡർ) നിരവധി ബ്ലാങ്ക് സർക്യൂട്ടുകൾ ഞാൻ വരച്ചു, stm32loader-ൽ stm32loader.py എന്ന സ്ക്രിപ്റ്റ് അടങ്ങിയിരിക്കുന്നു.

IN കഴിഞ്ഞ വർഷങ്ങൾ ARM പ്രോസസറുകളെ അടിസ്ഥാനമാക്കിയുള്ള 32-ബിറ്റ് മൈക്രോകൺട്രോളറുകൾ (MCUs) ഇലക്ട്രോണിക്സ് ലോകത്തെ അതിവേഗം കീഴടക്കുന്നു. അവരുടെ ഉയർന്ന പ്രകടനം, നൂതന വാസ്തുവിദ്യ, കുറഞ്ഞ ഊർജ്ജ ഉപഭോഗം, കുറഞ്ഞ ചെലവ്, വിപുലമായ പ്രോഗ്രാമിംഗ് ടൂളുകൾ എന്നിവയാണ് ഈ മുന്നേറ്റത്തിന് കാരണം.

ചെറുകഥ
ARM എന്ന പേര് അഡ്വാൻസ്ഡ് RISC മെഷീനുകളുടെ ചുരുക്കപ്പേരാണ്, ഇവിടെ RISC (Reduced Instruction Set Computer) എന്നത് കുറച്ച ഇൻസ്ട്രക്ഷൻ സെറ്റ് പ്രൊസസർ ആർക്കിടെക്ചറിനെ സൂചിപ്പിക്കുന്നു. ജനപ്രീതിയാർജ്ജിച്ച MK-കളുടെ എണ്ണം, കൂടാതെ PIC, AVR കുടുംബങ്ങളുടെ ഒരു ഉദാഹരണവും ഉണ്ട് RISC ആർക്കിടെക്ചർ, ഇത് നിർദ്ദേശങ്ങളുടെ ഡീകോഡിംഗ് ലളിതമാക്കുകയും അവയുടെ നിർവ്വഹണം ത്വരിതപ്പെടുത്തുകയും ചെയ്തുകൊണ്ട് പ്രകടനം വർദ്ധിപ്പിക്കുന്നത് സാധ്യമാക്കി. നൂതനവും ഉൽപ്പാദനക്ഷമവുമായ 32-ബിറ്റ് ARM മൈക്രോകൺട്രോളറുകളുടെ ആവിർഭാവം, 8, 16-ബിറ്റ് MCU-കൾക്ക് ഇനി നേരിടാൻ കഴിയാത്ത കൂടുതൽ സങ്കീർണ്ണമായ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്നു. 32-ബിറ്റ് കോർ, RISC ഇൻസ്ട്രക്ഷൻ സെറ്റ് എന്നിവയുള്ള ARM മൈക്രോപ്രൊസസർ ആർക്കിടെക്ചർ വികസിപ്പിച്ചെടുത്തത് ബ്രിട്ടീഷ് കമ്പനിയായ ARM Ltd ആണ്, ഇത് കേർണലുകൾ, കംപൈലറുകൾ, ഡീബഗ്ഗിംഗ് ടൂളുകൾ എന്നിവ പ്രത്യേകമായി വികസിപ്പിക്കുന്നു. കമ്പനി എംകെകൾ നിർമ്മിക്കുന്നില്ല, പക്ഷേ അവയുടെ ഉൽപാദനത്തിനുള്ള ലൈസൻസുകൾ വിൽക്കുന്നു. MK വിപണിയിലെ അതിവേഗം വളരുന്ന വിഭാഗങ്ങളിലൊന്നാണ് MK ARM. ഈ ഉപകരണങ്ങൾ ഊർജ്ജ സംരക്ഷണ സാങ്കേതികവിദ്യകൾ ഉപയോഗിക്കുന്നു, അതിനാൽ അവ എംബഡഡ് സിസ്റ്റങ്ങളിൽ വ്യാപകമായി ഉപയോഗിക്കുകയും വിപണിയിൽ ആധിപത്യം സ്ഥാപിക്കുകയും ചെയ്യുന്നു. മൊബൈൽ ഉപകരണങ്ങൾ, ആർക്ക് അത് പ്രധാനമാണ് കുറഞ്ഞ വൈദ്യുതി ഉപഭോഗം. കൂടാതെ, ARM മൈക്രോകൺട്രോളറുകൾആശയവിനിമയം, പോർട്ടബിൾ, എംബഡഡ് ഉപകരണങ്ങളിൽ ആവശ്യമുള്ളിടത്ത് സജീവമായി ഉപയോഗിക്കുന്നു ഉയർന്ന പ്രകടനം. ARM ആർക്കിടെക്ചറിൻ്റെ ഒരു സവിശേഷത പ്രോസസറിൻ്റെ കമ്പ്യൂട്ടിംഗ് കോർ ആണ്, അതിൽ സജ്ജീകരിച്ചിട്ടില്ല അധിക ഘടകങ്ങൾ. ഓരോ പ്രോസസർ ഡെവലപ്പറും ഈ കോർ സ്വതന്ത്രമായി സജ്ജീകരിക്കണം ആവശ്യമായ ബ്ലോക്കുകൾനിങ്ങളുടെ നിർദ്ദിഷ്ട ജോലികൾക്കായി. ഈ സമീപനം വലിയ ചിപ്പ് നിർമ്മാതാക്കൾക്ക് നന്നായി പ്രവർത്തിച്ചിട്ടുണ്ട്, എന്നിരുന്നാലും ഇത് തുടക്കത്തിൽ ക്ലാസിക് പ്രോസസർ സൊല്യൂഷനുകളിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചിരുന്നു. ARM പ്രോസസറുകൾ ഇതിനകം തന്നെ വികസനത്തിൻ്റെ പല ഘട്ടങ്ങളിലൂടെ കടന്നുപോയിട്ടുണ്ട്, കൂടാതെ ARM7, ARM9, ARM11, കോർടെക്‌സ് ഫാമിലികൾ എന്നിവയ്‌ക്ക് പേരുകേട്ടവയുമാണ്. രണ്ടാമത്തേത് ക്ലാസിക് CortexA പ്രോസസ്സറുകൾ, CortexR തൽസമയ പ്രോസസ്സറുകൾ, CortexM മൈക്രോപ്രൊസസ്സർ കോറുകൾ എന്നിവയുടെ ഉപകുടുംബങ്ങളായി തിരിച്ചിരിക്കുന്നു. 32-ബിറ്റ് MCU-കളുടെ ഒരു വലിയ ക്ലാസ് വികസിപ്പിക്കുന്നതിനുള്ള അടിസ്ഥാനമായി മാറിയത് CortexM കോറുകളാണ്. കോർട്ടെക്സ് ആർക്കിടെക്ചറിൻ്റെ മറ്റ് വകഭേദങ്ങളിൽ നിന്ന് അവ വ്യത്യാസപ്പെട്ടിരിക്കുന്നു, പ്രാഥമികമായി 16-ബിറ്റ് Thumb2 നിർദ്ദേശ സെറ്റിൻ്റെ ഉപയോഗത്തിലാണ്. ഈ സെറ്റ് "ക്ലാസിക്" ARM, Thumb നിർദ്ദേശങ്ങളുടെ പ്രകടനവും ഒതുക്കവും സംയോജിപ്പിച്ച് C, C++ ഭാഷകളിൽ പ്രവർത്തിക്കാൻ പ്രത്യേകം വികസിപ്പിച്ചതാണ്, ഇത് കോഡ് ഗുണനിലവാരം ഗണ്യമായി മെച്ചപ്പെടുത്തുന്നു. CortexM കോറിൽ നിർമ്മിച്ച മൈക്രോകൺട്രോളറുകളുടെ വലിയ നേട്ടം അവയുടെ സോഫ്റ്റ്‌വെയർ അനുയോജ്യതയാണ്, ഇത് ഭാഷയിൽ പ്രോഗ്രാം കോഡ് ഉപയോഗിക്കാൻ സൈദ്ധാന്തികമായി അനുവദിക്കുന്നു. ഉയർന്ന തലംമോഡലുകളിൽ വ്യത്യസ്ത നിർമ്മാതാക്കൾ. കോറിൻ്റെ പ്രയോഗത്തിൻ്റെ വിസ്തീർണ്ണം സൂചിപ്പിക്കുന്നതിന് പുറമേ, പത്ത് പോയിൻ്റ് സ്കെയിലിൽ CortexM കോറിൻ്റെ പ്രകടനത്തെ MK ഡവലപ്പർമാർ സൂചിപ്പിക്കുന്നു. ഇന്ന്, ഏറ്റവും ജനപ്രിയമായ ഓപ്ഷനുകൾ CortexM3, CortexM4 എന്നിവയാണ്. കൂടെ എം.കെ ARM വാസ്തുവിദ്യഅനലോഗ് ഡിവൈസുകൾ, Atmel, Xilinx, Altera, Cirrus Logic, Intel, Marvell, NXP, STMicroelectronics, Samsung, LG, MediaTek, MStar, Qualcomm, SonyEricsson, Texas Instruments, nVidia, FreeSiliconer തുടങ്ങിയ കമ്പനികൾ നിർമ്മിച്ചത്.
ഒപ്റ്റിമൈസ് ചെയ്ത ആർക്കിടെക്ചറിന് നന്ദി, CortexM കോർ അടിസ്ഥാനമാക്കിയുള്ള MCU-കളുടെ വില ചില സന്ദർഭങ്ങളിൽ പല 8-ബിറ്റ് ഉപകരണങ്ങളേക്കാൾ കുറവാണ്. "ഇളയ" മോഡലുകൾ നിലവിൽ 30 റൂബിളുകൾക്ക് വാങ്ങാം. എംകെയുടെ മുൻ തലമുറകൾക്ക് മത്സരം സൃഷ്ടിക്കുന്ന ശരീരത്തിന്. STM32 മൈക്രോകൺട്രോളറുകൾ STM32F100 കുടുംബത്തിലെ ഏറ്റവും താങ്ങാനാവുന്നതും വ്യാപകവുമായ MCU, MCU-കളുടെ ലോകത്തെ മുൻനിര നിർമ്മാതാക്കളിൽ ഒന്നായ STMicroelectronics-ൽ നിന്ന് നമുക്ക് പരിഗണിക്കാം. വ്യാവസായിക സൗകര്യങ്ങൾ പ്രയോജനപ്പെടുത്തുന്ന 32-ബിറ്റ് എംകെയുടെ ഉത്പാദനം ആരംഭിച്ചതായി കമ്പനി അടുത്തിടെ പ്രഖ്യാപിച്ചു
കുറഞ്ഞ നിരക്കിലുള്ള ആപ്ലിക്കേഷനുകളിൽ STM32 കോറുകൾ. STM32F100 വാല്യൂ ലൈൻ ഫാമിലിയുടെ MCU-കൾ 16-ബിറ്റ് MCU-കളുടെ പ്രകടനം മതിയാകാത്ത ഉപകരണങ്ങൾക്കായി രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു, കൂടാതെ "പതിവ്" 32-ബിറ്റ് ഉപകരണങ്ങളുടെ സമ്പന്നമായ പ്രവർത്തനക്ഷമത അനാവശ്യവുമാണ്. STM32F100 MK ലൈൻ അടിസ്ഥാനമാക്കിയുള്ളതാണ് ആധുനിക കോർആപ്ലിക്കേഷനായി ഒപ്റ്റിമൈസ് ചെയ്ത പെരിഫറലുകളുള്ള ARM CortexM3 സാധാരണ ആപ്ലിക്കേഷനുകൾ, ഇവിടെ 16-ബിറ്റ് എംകെകൾ ഉപയോഗിച്ചു. 24 MHz-ൽ STM32F100 MCU-ൻ്റെ പ്രകടനം മിക്ക 16-ബിറ്റ് MCU-കളേക്കാളും മികച്ചതാണ്. ഈ വരിയിൽ ഉള്ള ഉപകരണങ്ങൾ ഉൾപ്പെടുന്നു വിവിധ പരാമീറ്ററുകൾ:
● 16 മുതൽ 128 kbytes വരെ പ്രോഗ്രാം ഫ്ലാഷ് മെമ്മറി;
● 4 മുതൽ 8 kbytes വരെ റാൻഡം ആക്സസ് മെമ്മറി;
● 80 GPIO ഇൻപുട്ട്/ഔട്ട്പുട്ട് പോർട്ടുകൾ വരെ;
● വിപുലമായ പ്രവർത്തനങ്ങളുള്ള ഒമ്പത് 16-ബിറ്റ് ടൈമറുകൾ വരെ;
● രണ്ട് വാച്ച് ഡോഗ് ടൈമറുകൾ;
● 16-ചാനൽ ഹൈ-സ്പീഡ് 12-ബിറ്റ് എഡിസി;
● ബിൽറ്റ്-ഇൻ സിഗ്നൽ ജനറേറ്ററുകളുള്ള രണ്ട് 12-ബിറ്റ് DAC-കൾ;
● IrDA, LIN, ISO7816 മോഡുകൾ പിന്തുണയ്ക്കുന്ന മൂന്ന് UART ഇൻ്റർഫേസുകൾ വരെ;
● രണ്ട് SPI ഇൻ്റർഫേസുകൾ വരെ;
● SMBus, PMBus മോഡുകൾ പിന്തുണയ്ക്കുന്ന രണ്ട് I2C ഇൻ്റർഫേസുകൾ വരെ;
● 7-ചാനൽ ഡയറക്ട് മെമ്മറി ആക്സസ് (DMA);
● CEC (ഉപഭോക്തൃ ഇലക്ട്രോണിക്സ് കൺട്രോൾ) ഇൻ്റർഫേസ് HDMI സ്റ്റാൻഡേർഡിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്;
● തത്സമയ ക്ലോക്ക് (ആർടിസി);
● എൻവിഐസി നെസ്റ്റഡ് ഇൻ്ററപ്റ്റ് കൺട്രോളർ.

STM32F100 ൻ്റെ ഫങ്ഷണൽ ഡയഗ്രം ചിത്രം 1 ൽ കാണിച്ചിരിക്കുന്നു.

അരി. 1. MK ലൈൻ STM32F100 ൻ്റെ വാസ്തുവിദ്യ

ഒരു അധിക സൗകര്യം ഉപകരണങ്ങളുടെ പിൻ അനുയോജ്യതയാണ്, ആവശ്യമെങ്കിൽ, പ്രിൻ്റ് ചെയ്ത സർക്യൂട്ട് ബോർഡ് പുനർനിർമ്മിക്കാതെ കൂടുതൽ പ്രവർത്തനക്ഷമതയും മെമ്മറിയും ഉള്ള കുടുംബത്തിലെ ഏതെങ്കിലും എംകെ ഉപയോഗിക്കാൻ ഇത് അനുവദിക്കുന്നു. കൺട്രോളറുകളുടെ STM32F100 ലൈൻ നിർമ്മിക്കുന്നത് മൂന്ന് തരംയഥാക്രമം 48, 64, 100 പിന്നുകളുള്ള LQFP48, LQFP64, LQFP100 പാക്കേജുകൾ. പിന്നുകളുടെ അസൈൻമെൻ്റ് ചിത്രം 2, 3, 4 എന്നിവയിൽ അവതരിപ്പിച്ചിരിക്കുന്നു. അത്തരം കേസുകൾ പ്രത്യേക ഉപകരണങ്ങളുടെ ഉപയോഗമില്ലാതെ അച്ചടിച്ച സർക്യൂട്ട് ബോർഡുകളിൽ ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും, ഇത് ചെറിയ തോതിലുള്ള ഉൽപാദനത്തിൽ ഒരു പ്രധാന ഘടകമാണ്.


അരി. 2. LQFP48 പാക്കേജിലെ STM32 MCU ചിത്രം. 3. LQFP64 പാക്കേജിലെ STM32 MCU


അരി. 4. LQFP100 പാക്കേജിൽ STM32 MCU

STM32F100 എന്നത് CortexM3 കോർ അടിസ്ഥാനമാക്കിയുള്ള താങ്ങാനാവുന്നതും ഒപ്റ്റിമൈസ് ചെയ്തതുമായ ഉപകരണമാണ്, STM32 മൈക്രോകൺട്രോളറുകളുടെ ഒരു നൂതന വികസന അന്തരീക്ഷം പിന്തുണയ്ക്കുന്നു.
മോട്ടോർ നിയന്ത്രണവും ടച്ച് കീബോർഡുകളും ഉൾപ്പെടെ എല്ലാ പെരിഫറലുകൾക്കും സൗജന്യ ലൈബ്രറികൾ.

കണക്ഷൻ ഡയഗ്രം STM32F100C4
നമുക്ക് പരിഗണിക്കാം പ്രായോഗിക ഉപയോഗം STM32F100C4 എന്ന ലളിതമായ ഉപകരണത്തിൻ്റെ ഉദാഹരണം ഉപയോഗിച്ച് MK, എന്നിരുന്നാലും, STM32F100 ലൈനിൻ്റെ എല്ലാ പ്രധാന ബ്ലോക്കുകളും അടങ്ങിയിരിക്കുന്നു. STM32F100C4-ൻ്റെ ഇലക്ട്രിക്കൽ സർക്യൂട്ട് ഡയഗ്രം ചിത്രം 5-ൽ കാണിച്ചിരിക്കുന്നു.


അരി. 5. MK STM32F100C4-നുള്ള കണക്ഷൻ ഡയഗ്രം

കപ്പാസിറ്റർ C1 പവർ ഓണായിരിക്കുമ്പോൾ MK പുനഃസജ്ജമാക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു, കൂടാതെ C2-C6 കപ്പാസിറ്ററുകൾ വിതരണ വോൾട്ടേജ് ഫിൽട്ടർ ചെയ്യുന്നു. റെസിസ്റ്ററുകൾ R1, R2 എന്നിവ MK പിന്നുകളുടെ സിഗ്നൽ കറൻ്റ് പരിമിതപ്പെടുത്തുന്നു. ആന്തരിക ഓസിലേറ്റർ ക്ലോക്ക് ഉറവിടമായി ഉപയോഗിക്കുന്നു, അതിനാൽ ഒരു ബാഹ്യ ക്രിസ്റ്റൽ ഉപയോഗിക്കേണ്ടതില്ല.


ടേബിളിന് അനുസൃതമായി പവർ ഓണാക്കുമ്പോൾ MK ലോഡ് ചെയ്യുന്ന രീതി തിരഞ്ഞെടുക്കാൻ BOOT0, BOOT1 ഇൻപുട്ടുകൾ നിങ്ങളെ അനുവദിക്കുന്നു. BOOT0 ഇൻപുട്ട്, റെസിസ്റ്റർ R2 വഴി സീറോ പൊട്ടൻഷ്യൽ ബസുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു, ഇത് BOOT0 പിൻ സംരക്ഷിക്കുന്നു ഷോർട്ട് സർക്യൂട്ട്ഒരു PB2 ഔട്ട്പുട്ട് പോർട്ടായി ഉപയോഗിക്കുമ്പോൾ. കണക്ടർ J1 ഉം ഒരു ജമ്പറും ഉപയോഗിച്ച്, നിങ്ങൾക്ക് BOOT0 ഇൻപുട്ടിലെ സാധ്യതകൾ മാറ്റാൻ കഴിയും, അതുവഴി MK എങ്ങനെയാണ് ലോഡുചെയ്യുന്നതെന്ന് നിർണ്ണയിക്കുക - ഫ്ലാഷ് മെമ്മറിയിൽ നിന്നോ ബിൽറ്റ്-ഇൻ ബൂട്ട്ലോഡറിൽ നിന്നോ. നിങ്ങൾക്ക് RAM-ൽ നിന്ന് MK ലോഡ് ചെയ്യണമെങ്കിൽ, BOOT1 ഇൻപുട്ടിലേക്ക് ഒരു ജമ്പറുമായി സമാനമായ ഒരു കണക്റ്റർ ബന്ധിപ്പിക്കാൻ കഴിയും.
UART1 സീരിയൽ പോർട്ട് വഴിയോ പ്രത്യേക പ്രോഗ്രാമർമാർ - JTAG അല്ലെങ്കിൽ STLink ഡീബഗ്ഗറുകൾ വഴിയോ ആണ് എംകെയുടെ പ്രോഗ്രാമിംഗ് നടത്തുന്നത്. രണ്ടാമത്തേത്, ചിത്രം 6-ൽ കാണിച്ചിരിക്കുന്ന ജനപ്രിയ ഡീബഗ്ഗിംഗ് ഉപകരണമായ STM32VLDISCOVERY യുടെ ഭാഗമാണ്. STM32VLDIS കവറി ബോർഡിൽ, പ്രോഗ്രാമറുടെ 4-പിൻ കണക്റ്റർ - STLink ഡീബഗ്ഗർ - SWD എന്ന് നിയുക്തമാക്കിയിരിക്കുന്നു. ലേഖനത്തിൻ്റെ രചയിതാവ് UART1 സീരിയൽ പോർട്ട് വഴി MK പ്രോഗ്രാം ചെയ്യാൻ നിർദ്ദേശിക്കുന്നു, കാരണം ഇത് വളരെ ലളിതമാണ്, പ്രത്യേക ഉപകരണങ്ങൾ ആവശ്യമില്ല, കൂടാതെ JTAG അല്ലെങ്കിൽ ST ലിങ്ക് വേഗതയിൽ താഴ്ന്നതല്ല. കമാൻഡുകൾ സൃഷ്ടിക്കുന്നതിനും MK പ്രോഗ്രാമിൻ്റെ ഫലങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിനും കഴിവുള്ള ഒരു നിയന്ത്രണ ഉപകരണം എന്ന നിലയിൽ, ഒരു പ്രോഗ്രാമർ എന്ന നിലയിൽ, നിങ്ങൾക്ക് എന്തും ഉപയോഗിക്കാം പെഴ്സണൽ കമ്പ്യൂട്ടർ(PC) ഒരു സീരിയൽ COM പോർട്ട് ഉപയോഗിച്ച് അല്ലെങ്കിൽ യുഎസ്ബി പോർട്ട് USBRS232 കൺവെർട്ടർ ഉപയോഗിച്ച്.

ഒരു പിസിയുടെ COM പോർട്ട് ഒരു എംകെയുമായി ജോടിയാക്കാൻ ആരെങ്കിലും ചെയ്യും RS232 സിഗ്നലുകൾ 0 മുതൽ 3.3 V വരെയുള്ള ലോജിക്കൽ സിഗ്നൽ ലെവലുകളാക്കി മാറ്റുന്നു, ഉദാഹരണത്തിന്, ADM3232 മൈക്രോ സർക്യൂട്ട്. TXD ട്രാൻസ്മിഷൻ ലൈൻ സീരിയൽ പോർട്ട്കമ്പ്യൂട്ടർ, ലെവൽ കൺവെർട്ടറിന് ശേഷം, മൈക്രോകൺട്രോളറിൻ്റെ PA10 ഇൻപുട്ടിലേക്കും RXD റിസീവർ ലൈനിലേക്കും സമാനമായ കൺവെർട്ടറിലൂടെ PA9 ഔട്ട്‌പുട്ടിലേക്ക് കണക്ട് ചെയ്യണം.

നിങ്ങൾക്ക് അസ്ഥിരമല്ലാത്ത MK ക്ലോക്ക് ഉപയോഗിക്കണമെങ്കിൽ, 3 V വോൾട്ടേജുള്ള ഒരു CR2032 ബാറ്ററിയും 32768 Hz ആവൃത്തിയുള്ള ഒരു ക്വാർട്സ് റെസൊണേറ്ററും നിങ്ങൾ ബന്ധിപ്പിക്കണം. ഈ ആവശ്യത്തിനായി, MK-ൽ Vbat/GND, OSC32_IN/OSC32_OUT പിൻ എന്നിവ സജ്ജീകരിച്ചിരിക്കുന്നു. Vbat പിൻ ആദ്യം 3.3 V പവർ ബസിൽ നിന്ന് വിച്ഛേദിക്കണം.

എംകെയുടെ ശേഷിക്കുന്ന ഫ്രീ ടെർമിനലുകൾ ആവശ്യാനുസരണം ഉപയോഗിക്കാം. ഇത് ചെയ്യുന്നതിന്, ജനപ്രിയവുമായി സാമ്യപ്പെടുത്തി, എംകെയ്‌ക്കായുള്ള പ്രിൻ്റഡ് സർക്യൂട്ട് ബോർഡിൻ്റെ പരിധിക്കകത്ത് സ്ഥിതിചെയ്യുന്ന കണക്റ്ററുകളുമായി അവ ബന്ധിപ്പിക്കണം. Arduino ഉപകരണങ്ങൾകൂടാതെ വികസന ബോർഡ് STM32VLDISCOVERY.


അരി. 6. STM32VLDISCOVERY ഉപകരണം ഡീബഗ് ചെയ്യുക


ഇലക്ട്രിക്കൽ സർക്യൂട്ട് ഡയഗ്രം STM32VLDISCOVERY.

അതിനാൽ, എംകെയുടെ ഉപയോഗത്തിൻ്റെ ഉദ്ദേശ്യവും രീതിയും അനുസരിച്ച്, നിങ്ങൾക്ക് അതിലേക്ക് ബന്ധിപ്പിക്കാൻ കഴിയും ആവശ്യമായ ഘടകങ്ങൾ ADC, DAC, SPI, I2C മുതലായവ പോലുള്ള മറ്റ് ഫംഗ്‌ഷൻ ബ്ലോക്കുകളും പോർട്ടുകളും പ്രവർത്തനക്ഷമമാക്കാൻ. ഭാവിയിൽ, ഈ ഉപകരണങ്ങൾ കൂടുതൽ വിശദമായി പരിഗണിക്കും.

പ്രോഗ്രാമിംഗ്
ഇന്ന്, പല കമ്പനികളും STM32 മൈക്രോകൺട്രോളറുകൾക്കായി പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കുന്നതിനും ഡീബഗ്ഗിംഗ് ചെയ്യുന്നതിനുമുള്ള ഉപകരണങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു. ARM Ltd-ൽ നിന്നുള്ള Keil, ARM-നുള്ള IAR എംബഡഡ് വർക്ക് ബെഞ്ച്, Atol lic TrueStudio, CooCox IDE, GCC, Eclipse IDE എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു. ഡെവലപ്പർക്ക് അവൻ്റെ മുൻഗണന അനുസരിച്ച് സോഫ്‌റ്റ്‌വെയർ തിരഞ്ഞെടുക്കാം. നിരവധി തരം മൈക്രോകൺട്രോളറുകളെ പിന്തുണയ്ക്കുന്ന, ഡീബഗ്ഗിംഗ് ടൂളുകളുടെ ഒരു വികസിത സംവിധാനമുള്ള കെയിൽ കമ്പനിയിൽ നിന്നുള്ള കെയിൽ യുവിഷൻ 4 ടൂൾകിറ്റിനെ ഞങ്ങൾ ചുവടെ വിവരിക്കും, കൂടാതെ 32 കെബൈറ്റുകളുടെ ജനറേറ്റഡ് കോഡിൻ്റെ വലുപ്പത്തിൽ നിയന്ത്രണങ്ങളോടെ സൗജന്യമായി ഉപയോഗിക്കാം ( വാസ്തവത്തിൽ, പരിഗണനയിലുള്ള മൈക്രോകൺട്രോളറുകൾക്ക് ഇത് പരമാവധി ആണ്).

CooCox CoIDE ഉപയോഗിച്ച് എളുപ്പത്തിലും വേഗത്തിലും ആരംഭിക്കുക.

അതുകൊണ്ട് നമുക്ക് തുടങ്ങാം. ഔദ്യോഗിക CooCox വെബ്സൈറ്റിൽ പോയി ഡൗൺലോഡ് ചെയ്യുക പുതിയ പതിപ്പ് CooCox CoIDE. ഡൗൺലോഡ് ചെയ്യുന്നതിന് നിങ്ങൾ രജിസ്റ്റർ ചെയ്യേണ്ടതുണ്ട്, രജിസ്ട്രേഷൻ ലളിതവും സൗജന്യവുമാണ്. തുടർന്ന് ഡൗൺലോഡ് ചെയ്ത ഫയൽ ഇൻസ്റ്റാൾ ചെയ്ത് പ്രവർത്തിപ്പിക്കുക.

CooCox CoIDE- എക്ലിപ്സിനെ അടിസ്ഥാനമാക്കിയുള്ള ഒരു വികസന അന്തരീക്ഷം, STM32-ന് പുറമേ, മറ്റ് മൈക്രോകൺട്രോളറുകളുടെ ഒരു കൂട്ടം കുടുംബങ്ങളെ പിന്തുണയ്ക്കുന്നു: ഫ്രീസ്കെയിൽ, ഹോൾടെക്, NXP, Nuvoton, TI, Atmel SAM, എനർജി മൈക്രോ മുതലായവ. CoIDE-യുടെ ഓരോ പുതിയ പതിപ്പിലും, മൈക്രോകൺട്രോളറുകളുടെ പട്ടിക നിരന്തരം അപ്ഡേറ്റ് ചെയ്യുന്നു. CoIDE വിജയകരമായി ഇൻസ്റ്റാൾ ചെയ്ത ശേഷം, പ്രവർത്തിപ്പിക്കുക:

ഘട്ടം 1 ആരംഭ വിൻഡോ ദൃശ്യമാകും, അതിൽ നിങ്ങൾ ഞങ്ങളുടെ മൈക്രോകൺട്രോളറിൻ്റെ നിർമ്മാതാവിനെ തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്. ST അമർത്തി ഘട്ടം 2-ലേക്ക് പോകുക (മൈക്രോ കൺട്രോളർ തിരഞ്ഞെടുക്കുക), അതിൽ നിങ്ങൾ തിരഞ്ഞെടുക്കേണ്ടതുണ്ട് നിർദ്ദിഷ്ട മാതൃക. ഞങ്ങൾക്ക് STM32F100RBT6B ഉണ്ട്, അതിനാൽ അനുബന്ധ മോഡലിൽ ക്ലിക്കുചെയ്യുക:

വലതുവശത്ത്, സഹായ വിൻഡോ പ്രദർശിപ്പിക്കുന്നു ഹ്രസ്വ സവിശേഷതകൾഓരോ ചിപ്പ്. നമുക്ക് ആവശ്യമുള്ള മൈക്രോകൺട്രോളർ തിരഞ്ഞെടുത്ത ശേഷം, ഞങ്ങൾ മൂന്നാം ഘട്ടത്തിലേക്ക് പോകുന്നു, ഘട്ടം 3 - തിരഞ്ഞെടുക്കൽ ആവശ്യമായ ലൈബ്രറികൾജോലിക്ക് വേണ്ടി:

മൈക്രോകൺട്രോളറുകൾ പഠിക്കുന്നതിനുള്ള പതിവ് പോലെ, ഒരു എൽഇഡി മിന്നുന്നതിന് ലളിതമായ ഒരു പ്രോജക്റ്റ് സൃഷ്ടിക്കാം.

ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾക്ക് GPIO ലൈബ്രറി ആവശ്യമാണ്, പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, CoIDE നിങ്ങളോട് സൃഷ്ടിക്കാൻ ആവശ്യപ്പെടും പുതിയ പദ്ധതി. ഈ നിർദ്ദേശത്തിൽ അതെ ക്ലിക്ക് ചെയ്യുക, ഞങ്ങളുടെ പ്രോജക്റ്റ് സംഭരിക്കുന്ന ഫോൾഡറും അതിൻ്റെ പേരും സൂചിപ്പിക്കുക. അതേ സമയം, ലൈബ്രറി പ്രവർത്തിക്കുന്നതിന് ആവശ്യമായ മറ്റ് 3 പ്രോജക്റ്റിലേക്ക് CoIDE ബന്ധിപ്പിക്കും, കൂടാതെ ആവശ്യമായ എല്ലാ പ്രോജക്റ്റ് ഘടനയും സൃഷ്ടിക്കും:

CoIDE-യുടെ മറ്റൊരു നല്ല കാര്യം, വികസന പരിതസ്ഥിതിയിലേക്ക് നേരിട്ട് ഉദാഹരണങ്ങൾ ലോഡുചെയ്യാനുള്ള കഴിവുണ്ട് എന്നതാണ്. ഘടകങ്ങളുടെ ടാബിൽ മിക്കവാറും എല്ലാ ലൈബ്രറികൾക്കും ഉദാഹരണങ്ങൾ ഉണ്ടെന്ന് നിങ്ങൾക്ക് കാണാൻ കഴിയും, GPIO (4 ഉദാഹരണങ്ങളോടെ) ക്ലിക്ക് ചെയ്ത് അവ കാണുക:

നിങ്ങളുടെ സ്വന്തം ഉദാഹരണങ്ങൾ അവിടെ ചേർക്കാം. മുകളിലുള്ള സ്ക്രീൻഷോട്ടിൽ നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ഉദാഹരണങ്ങളിൽ ഇതിനകം തന്നെ GPIO_Blink LED മിന്നുന്നതിനുള്ള കോഡ് അടങ്ങിയിരിക്കുന്നു. നിങ്ങൾക്ക് ആഡ് ബട്ടണിൽ ക്ലിക്കുചെയ്യാം, അത് പ്രോജക്റ്റിലേക്ക് ചേർക്കും, എന്നാൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഒരു ഫയൽ എന്ന നിലയിൽ, ഞങ്ങൾ ഇത് വ്യത്യസ്തമായി ചെയ്യും കൂടാതെ മുഴുവൻ ഉദാഹരണ കോഡും main.c ഫയലിലേക്ക് പകർത്തും. ശൂന്യമായ GPIO_Blink(void) ലൈൻ int main(void) ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുക എന്നതാണ് ഏക കാര്യം. അതിനാൽ, പ്രോജക്റ്റ് കംപൈൽ ചെയ്യുന്നതിന് F7 അമർത്തുക (അല്ലെങ്കിൽ മെനുവിൽ നിന്ന് Project->Build തിരഞ്ഞെടുക്കുക) കൂടാതെ... ഭാഗ്യമില്ല!

പരിസ്ഥിതിക്ക് ആവശ്യമാണ് ജിസിസി കമ്പൈലർ, പക്ഷെ ഞങ്ങൾക്ക് അത് ഇല്ല. അതിനാൽ, ARM എംബഡഡ് പ്രോസസറുകൾക്കുള്ള ഗ്നു ടൂളുകൾ എന്ന പേജിലേക്ക് പോകുക, വലതുവശത്തുള്ള നിങ്ങളുടെ OS തരം തിരഞ്ഞെടുത്ത് ടൂൾചെയിനിൻ്റെ ഏറ്റവും പുതിയ പതിപ്പ് ഡൗൺലോഡ് ചെയ്യുക. തുടർന്ന് ഞങ്ങൾ ഫയൽ പ്രവർത്തിപ്പിച്ച് gcc ടൂൾചെയിൻ ഇൻസ്റ്റാൾ ചെയ്യുക. അടുത്തതായി, CoIDE ക്രമീകരണങ്ങളിൽ ഞങ്ങൾ സൂചിപ്പിക്കും ശരിയായ വഴിടൂൾചെയിനിലേക്ക്:

F7 വീണ്ടും അമർത്തുക (പ്രോജക്റ്റ്->ബിൽഡ്) സമാഹാരം വിജയകരമാണെന്ന് കാണുക:

മൈക്രോകൺട്രോളർ ഫ്ലാഷ് ചെയ്യുക മാത്രമാണ് അവശേഷിക്കുന്നത്. ഇത് ചെയ്യുന്നതിന്, എപ്പോൾ USB സഹായംഞങ്ങൾ ബോർഡ് കമ്പ്യൂട്ടറുമായി ബന്ധിപ്പിക്കുന്നു. തുടർന്ന്, ഡീബഗ്ഗർ ക്രമീകരണങ്ങളിൽ നിങ്ങൾ ST-ലിങ്ക് ഇൻസ്റ്റാൾ ചെയ്യണം; ഡ്രോപ്പ്-ഡൗൺ ലിസ്റ്റിൽ നിന്ന് ST-ലിങ്ക് തിരഞ്ഞെടുത്ത് വിൻഡോ അടയ്ക്കുക:

MK ഫ്ലാഷ് ചെയ്യാൻ ശ്രമിക്കാം. മെനുവിൽ, ഫ്ലാഷ്->പ്രോഗ്രാം ഡൗൺലോഡ് തിരഞ്ഞെടുക്കുക (അല്ലെങ്കിൽ ടൂൾബാറിലെ അനുബന്ധ ഐക്കണിൽ ക്ലിക്ക് ചെയ്യുക) കൂടാതെ MK വിജയകരമായി ഫ്ലാഷ് ചെയ്തതായി കാണുക:

ഞങ്ങൾ ബോർഡിൽ ഒരു മിന്നുന്ന LED കാണുന്നു, ഒരു വീഡിയോയോ ഫോട്ടോയോ നൽകുന്നതിൽ അർത്ഥമില്ലെന്ന് ഞാൻ കരുതുന്നു, കാരണം... എല്ലാവരും അത് കണ്ടു.

കൂടാതെ, CoIDE-ൽ അവർ പ്രവർത്തിക്കുന്നു വിവിധ മോഡുകൾഡീബഗ്ഗിംഗ്, ഇത് ചെയ്യുന്നതിന് CTRL+F5 അമർത്തുക (അല്ലെങ്കിൽ ഡീബഗ്->ഡീബഗ് മെനുവിൽ):

അത്രയേയുള്ളൂ. നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, CoIDE സജ്ജീകരിക്കുന്നതും പ്രവർത്തിക്കുന്നതും വളരെ ലളിതമാണ്. വളരെ പ്രതീക്ഷ നൽകുന്നതും ചെലവുകുറഞ്ഞതുമായ STM32 മൈക്രോകൺട്രോളറുകൾ പഠിക്കാൻ ഈ ലേഖനം നിങ്ങളെ പ്രോത്സാഹിപ്പിക്കുമെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു.

പ്രസിദ്ധീകരിച്ചത് 08/09/2016

മൈക്രോകൺട്രോളറുകൾ STM32അവയുടെ ശക്തി, സാമാന്യം വൈവിധ്യമാർന്ന പെരിഫെറലുകൾ, വഴക്കം എന്നിവ കാരണം കൂടുതൽ പ്രചാരം നേടുന്നു. ഞങ്ങൾ ഒരു ബജറ്റ് ടെസ്റ്റ് ബോർഡ് ഉപയോഗിച്ച് പഠിക്കാൻ തുടങ്ങും, അതിൻ്റെ വില $ 2 കവിയരുത് (ചൈനയിൽ നിന്ന്). നമുക്കും വേണ്ടിവരും ST-ലിങ്ക്പ്രോഗ്രാമർ, ഇതിൻ്റെ വില ഏകദേശം $2.5 ആണ് (ചൈനയിൽ നിന്ന്). അത്തരം ചെലവുകൾ വിദ്യാർത്ഥികൾക്കും സ്കൂൾ കുട്ടികൾക്കും ലഭ്യമാണ്, അതിനാൽ ഇത് ഇതിൽ നിന്നാണ് ബജറ്റ് ഓപ്ഷൻആരംഭിക്കാൻ ഞാൻ നിർദ്ദേശിക്കുന്നു.


ഈ മൈക്രോകൺട്രോളർ ഏറ്റവും ശക്തമല്ല STM32, എന്നാൽ ഏറ്റവും ദുർബലമായ ഒന്നല്ല. നിലവിലുണ്ട് വിവിധ ബോർഡുകൾകൂടെ STM32, ഉൾപ്പെടെ കണ്ടെത്തൽഏകദേശം $20 വില. അത്തരം ബോർഡുകളിൽ, മിക്കവാറും എല്ലാം ഞങ്ങളുടെ ബോർഡിലേതിന് സമാനമാണ്, കൂടാതെ ഒരു പ്രോഗ്രാമറും. ഞങ്ങളുടെ കാര്യത്തിൽ, ഞങ്ങൾ പ്രോഗ്രാമറെ പ്രത്യേകം ഉപയോഗിക്കും.

മൈക്രോകൺട്രോളർ STM32F103C8. സ്വഭാവഗുണങ്ങൾ

  • ARM 32-ബിറ്റ് Cortex-M3 കോർ
  • പരമാവധി ആവൃത്തി 72MHz
  • പ്രോഗ്രാമുകൾക്കായി 64KB ഫ്ലാഷ് മെമ്മറി
  • 20Kb SRAM മെമ്മറി
  • വൈദ്യുതി വിതരണം 2.0 … 3.3V
  • 2 x 12-ബിറ്റ് ADC (0 ... 3.6V)
  • ഡിഎംഎ കൺട്രോളർ
  • 37 5V ടോളറൻ്റ് ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ
  • 4 16-ബിറ്റ് ടൈമറുകൾ
  • 2 വാച്ച് ഡോഗ് ടൈമറുകൾ
  • I2C - 2 ബസുകൾ
  • USART - 3 ബസുകൾ
  • SPI - 2 ബസുകൾ
  • USB 2.0 ഫുൾ സ്പീഡ് ഇൻ്റർഫേസ്
  • RTC - ബിൽറ്റ്-ഇൻ ക്ലോക്ക്

STM32F103C8 ബോർഡിൽ ലഭ്യമാണ്

  • ഔട്ട്പുട്ട് പോർട്ടുകൾ A0-A12, B0-B1, B3-B15, C13-C15
  • മൈക്രോ-യുഎസ്ബിഅതിലൂടെ നിങ്ങൾക്ക് ബോർഡ് പവർ ചെയ്യാൻ കഴിയും. ബോർഡിൽ 3.3V വോൾട്ടേജ് സ്റ്റെബിലൈസർ ഉണ്ട്. ബോർഡിലെ അനുബന്ധ പിന്നുകളിലേക്ക് 3.3V അല്ലെങ്കിൽ 5V പവർ നൽകാം.
  • ബട്ടൺ പുനഃസജ്ജമാക്കുക
  • രണ്ട് ജമ്പർമാർ ബൂട്ട്0ഒപ്പം ബൂട്ട്1. വഴി ഫ്ലാഷിംഗ് സമയത്ത് ഞങ്ങൾ അത് ഉപയോഗിക്കും UART.
  • രണ്ട് ക്വാർട്സ് 8 MHz, 32768 Hz. മൈക്രോകൺട്രോളറിന് ഒരു ഫ്രീക്വൻസി മൾട്ടിപ്ലയർ ഉണ്ട്, അതിനാൽ 8 MHz ക്വാർട്സിൽ നമുക്ക് നേടാനാകും പരമാവധി ആവൃത്തികൺട്രോളർ 72MHz.
  • രണ്ട് എൽ.ഇ.ഡി. പി.ഡബ്ല്യു.ആർ- വൈദ്യുതി വിതരണം ചെയ്തുവെന്ന് സിഗ്നലുകൾ. PC13- ഔട്ട്പുട്ടിലേക്ക് ബന്ധിപ്പിച്ചിരിക്കുന്നു C13.
  • പ്രോഗ്രാമർക്കുള്ള കണക്റ്റർ ST-ലിങ്ക്.

അതിനാൽ, മൈക്രോകൺട്രോളർ ഫ്ലാഷ് ചെയ്യാൻ ശ്രമിച്ചുകൊണ്ട് നമുക്ക് ആരംഭിക്കാം. ഇത് USART വഴിയോ ഒരു പ്രോഗ്രാമർ ഉപയോഗിച്ചോ ചെയ്യാം ST-ലിങ്ക്.

ഫേംവെയറിനായുള്ള ടെസ്റ്റ് ഫയൽ നിങ്ങൾക്ക് ഡൗൺലോഡ് ചെയ്യാം. പ്രോഗ്രാം ബോർഡിൽ LED ഫ്ലാഷ് ചെയ്യുന്നു.

വിൻഡോസിനായി USB-Uart അഡാപ്റ്റർ ഉപയോഗിക്കുന്ന STM32 ഫേംവെയർ

IN സിസ്റ്റം മെമ്മറി STM32ഇതുണ്ട് ബൂട്ട്ലോഡർ. ബൂട്ട്ലോഡർ പ്രൊഡക്ഷൻ ഘട്ടത്തിലും ഏതെങ്കിലും മൈക്രോകൺട്രോളറിലും രേഖപ്പെടുത്തുന്നു STM32ഇൻ്റർഫേസ് വഴി പ്രോഗ്രാം ചെയ്യാം USARTഒരു USART-USB അഡാപ്റ്റർ ഉപയോഗിക്കുന്നു. ജനപ്രിയ മൈക്രോ സർക്യൂട്ടുകളുടെ അടിസ്ഥാനത്തിലാണ് ഇത്തരം അഡാപ്റ്ററുകൾ നിർമ്മിക്കുന്നത് FT232RL. ഒന്നാമതായി, അഡാപ്റ്റർ കമ്പ്യൂട്ടറുമായി ബന്ധിപ്പിച്ച് ഡ്രൈവറുകൾ ഇൻസ്റ്റാൾ ചെയ്യുക (ആവശ്യമെങ്കിൽ). നിർമ്മാതാവിൻ്റെ വെബ്സൈറ്റിൽ നിന്ന് നിങ്ങൾക്ക് ഡ്രൈവറുകൾ ഡൗൺലോഡ് ചെയ്യാം FT232RL– ftdichip.com. നിങ്ങൾ ഡ്രൈവറുകൾ ഡൗൺലോഡ് ചെയ്യേണ്ടതുണ്ട് വി.സി.പി(വെർച്വൽ കോം പോർട്ട്). ഡ്രൈവറുകൾ ഇൻസ്റ്റാൾ ചെയ്ത ശേഷം, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഒരു വെർച്വൽ സീരിയൽ പോർട്ട് ദൃശ്യമാകും.


ബന്ധിപ്പിക്കുന്നു RXഒപ്പം TXഅനുബന്ധ പിന്നുകളിലേക്കുള്ള ഔട്ട്പുട്ടുകൾ USART1മൈക്രോകൺട്രോളർ. RXഅഡാപ്റ്റർ ബന്ധിപ്പിക്കുക TXമൈക്രോകൺട്രോളർ (A9). TXഅഡാപ്റ്റർ ബന്ധിപ്പിക്കുക RXമൈക്രോകൺട്രോളർ (A10). USART-USB-ന് 3.3V പവർ ഔട്ട്പുട്ടുകൾ ഉള്ളതിനാൽ, ഞങ്ങൾ അതിൽ നിന്ന് ബോർഡിലേക്ക് വൈദ്യുതി വിതരണം ചെയ്യും.

പ്രോഗ്രാമിംഗ് മോഡിലേക്ക് മൈക്രോകൺട്രോളർ ഇടാൻ, നിങ്ങൾ പിൻസ് സജ്ജീകരിക്കേണ്ടതുണ്ട് ബൂട്ട്0ഒപ്പം ബൂട്ട്1വി ആവശ്യമുള്ള അവസ്ഥബട്ടൺ ഉപയോഗിച്ച് അത് റീബൂട്ട് ചെയ്യുക പുനഃസജ്ജമാക്കുകഅല്ലെങ്കിൽ ഓഫാക്കി മൈക്രോകൺട്രോളറിൻ്റെ പവർ ഓണാക്കുക. ഇതിനായി ഞങ്ങൾക്ക് ജമ്പറുകൾ ഉണ്ട്. വിവിധ കോമ്പിനേഷനുകൾമൈക്രോകൺട്രോളറിനെ വിവിധ മോഡുകളിലേക്ക് നയിക്കുക. ഞങ്ങൾക്ക് ഒരു മോഡിൽ മാത്രമേ താൽപ്പര്യമുള്ളൂ. ഇത് ചെയ്യുന്നതിന്, മൈക്രോകൺട്രോളർ ഉണ്ട് ബൂട്ട്0ഒരു ലോജിക്കൽ ഒന്ന് ഉണ്ടായിരിക്കണം, ഔട്ട്പുട്ട് ബൂട്ട്1- ലോജിക്കൽ പൂജ്യം. ബോർഡിൽ ഇത് ഇനിപ്പറയുന്ന ജമ്പർ പൊസിഷനാണ്:

ബട്ടൺ അമർത്തി ശേഷം പുനഃസജ്ജമാക്കുകഅല്ലെങ്കിൽ വൈദ്യുതി വിച്ഛേദിക്കുകയും ബന്ധിപ്പിക്കുകയും ചെയ്യുന്നു, മൈക്രോകൺട്രോളർ പ്രോഗ്രാമിംഗ് മോഡിൽ പ്രവേശിക്കണം.

ഫേംവെയർ സോഫ്റ്റ്വെയർ

നമ്മൾ USB-UART അഡാപ്റ്റർ ഉപയോഗിക്കുകയാണെങ്കിൽ, പോർട്ട് നാമം ഇതുപോലെയായിരിക്കും /dev/ttyUSB0

ചിപ്പ് വിവരങ്ങൾ നേടുക

ഫലമായി:

നമ്മൾ ചിപ്പിൽ നിന്ന് dump.bin ഫയലിലേക്ക് വായിക്കുന്നു

sudo stm32flash -r dump.bin /dev/ttyUSB0

ചിപ്പിലേക്ക് എഴുതുക

sudo stm32flash -w dump.bin -v -g 0x0 /dev/ttyUSB0

ഫലമായി:

Stm32flash 0.4 http://stm32flash.googlecode.com/ പാഴ്‌സർ ഉപയോഗിക്കുന്നു: റോ ബൈനറി ഇൻ്റർഫേസ് സീരിയൽ_പോസിക്‌സ്: 57600 8E1 പതിപ്പ്: 0x22 ഓപ്ഷൻ 1: 0x00 ഓപ്ഷൻ 2: 0x00 ഡിവൈസ് ഐഡി: 0x00 -2000 -2000 ബി നിക്ഷിപ്തം ബൂട്ട്ലോഡർ) - ഫ്ലാഷ്: 128KiB (സെക്ടർ വലുപ്പം: 4x1024) - ഓപ്‌ഷൻ റാം: 16b - സിസ്റ്റം റാം: 2KiB മെമ്മറിയിലേക്ക് എഴുതുക മെമ്മറി മായ്‌ക്കുന്നു, എഴുതി പരിശോധിച്ച വിലാസം 0x08012900 (100.00%) പൂർത്തിയായി. 0x08000000 എന്ന വിലാസത്തിൽ നിർവ്വഹണം ആരംഭിക്കുന്നു... പൂർത്തിയായി.

വിൻഡോസിനായുള്ള ST-ലിങ്ക് പ്രോഗ്രാമർ ഉപയോഗിക്കുന്ന STM32 ഫേംവെയർ

ഒരു പ്രോഗ്രാമർ ഉപയോഗിക്കുമ്പോൾ ST-ലിങ്ക്നിഗമനങ്ങൾ ബൂട്ട്0ഒപ്പം ബൂട്ട്1ഉപയോഗിക്കുന്നില്ല കൂടാതെ സ്റ്റാൻഡേർഡ് സ്ഥാനത്ത് ആയിരിക്കണം സാധാരണ പ്രവർത്തനംകണ്ട്രോളർ.

(റഷ്യൻ ഭാഷയിലുള്ള പുസ്തകം)

STM32 അടയാളപ്പെടുത്തൽ

ഉപകരണ കുടുംബംഉൽപ്പന്ന തരംഉപകരണ ഉപകുടുംബംപിൻ എണ്ണംഫ്ലാഷ് മെമ്മറിവലിപ്പംപാക്കേജ്താപനില പരിധി
STM32 =
ARM അടിസ്ഥാനമാക്കിയുള്ള 32-ബിറ്റ് മൈക്രോകൺട്രോളർ
F = പൊതുവായ ഉദ്ദേശ്യം
L = അൾട്രാ ലോ-പവർ
TS = ടച്ച്സ്ക്രീൻ
W = വയർലെസ് സിസ്റ്റം-ഓൺ-ചിപ്പ്
60 = മൾട്ടിടച്ച് റെസിസ്റ്റീവ്
103 = പ്രകടന രേഖ
F = 20 പിന്നുകൾ
G = 28 പിന്നുകൾ
കെ = 32 പിന്നുകൾ
ടി = 36 പിന്നുകൾ
H = 40 പിൻസ്
സി = 48/49 പിന്നുകൾ
R = 64 പിന്നുകൾ
O=90 പിന്നുകൾ
വി = 100 പിന്നുകൾ
Z = 144 പിന്നുകൾ
I = 176 പിന്നുകൾ
ബി = 208 പിന്നുകൾ
N = 216 പിന്നുകൾ
4 = 16 Kbytes ഫ്ലാഷ് മെമ്മറി
6 = 32 Kbytes ഫ്ലാഷ് മെമ്മറി
8 = 64 Kbytes ഫ്ലാഷ് മെമ്മറി
B = 128 Kbytes ഫ്ലാഷ് മെമ്മറി
Z = 192 Kbytes ഫ്ലാഷ് മെമ്മറി
C = 256 Kbytes ഫ്ലാഷ് മെമ്മറി
D = 384 Kbytes ഫ്ലാഷ് മെമ്മറി
E = 512 Kbytes ഫ്ലാഷ് മെമ്മറി
F = 768 Kbytes ഫ്ലാഷ് മെമ്മറി
G = 1024 Kbytes ഫ്ലാഷ് മെമ്മറി
I = 2048 Kbytes ഫ്ലാഷ് മെമ്മറി
H = UFBGA
N=TFBGA
P = TSSOP
T = LQFP
U = V/UFQFPN
Y = WLCSP
6 = വ്യാവസായിക താപനില പരിധി, –40…+85 °C.
7 = വ്യാവസായിക താപനില പരിധി, -40…+ 105 °C.
STM32എഫ്103 സി8 ടി6

എഴുത്ത്/വായന സംരക്ഷണം എങ്ങനെ നീക്കം ചെയ്യാം?

നിങ്ങൾക്ക് STM32F103 ഉള്ള ഒരു ബോർഡ് ലഭിച്ചുവെങ്കിലും പ്രോഗ്രാമർ അത് കാണുന്നില്ലെങ്കിൽ, മൈക്രോകൺട്രോളറിൻ്റെ ഫ്ലാഷ് മെമ്മറി ചൈനക്കാർ സംരക്ഷിച്ചു എന്നാണ് ഇതിനർത്ഥം. ചോദ്യം "എന്തുകൊണ്ട്?" നമുക്ക് അത് അവഗണിക്കാം. തടയൽ നീക്കംചെയ്യുന്നതിന്, ഞങ്ങൾ ഒരു UART അഡാപ്റ്ററും പ്രോഗ്രാമും അതിലൂടെ ബന്ധിപ്പിക്കും. പ്രോഗ്രാമിംഗിനായി ഞങ്ങൾ ജമ്പറുകൾ സജ്ജമാക്കി, ഞങ്ങൾ പോകുന്നു:

stm32flash യൂട്ടിലിറ്റി ഉപയോഗിച്ച് ഞാൻ ഉബുണ്ടുവിൽ നിന്ന് ഇത് ചെയ്യും.

1. മൈക്രോകൺട്രോളർ ദൃശ്യമാണോയെന്ന് പരിശോധിക്കുക:

Sudo stm32flash /dev/ttyUSB0

നിങ്ങൾക്ക് ഇതുപോലുള്ള എന്തെങ്കിലും ലഭിക്കണം:

Stm32flash 0.4 http://stm32flash.googlecode.com/ ഇൻ്റർഫേസ് serial_posix: 57600 8E1 പതിപ്പ്: 0x22 ഓപ്ഷൻ 1: 0x00 ഓപ്ഷൻ 2: 0x00 ഡിവൈസ് ഐഡി: 0x0410 (Medium-reserver: 20blash by 20410) : 128KiB (സെക്ടർ വലുപ്പം: 4x1024) - ഓപ്ഷൻ റാം: 16b - സിസ്റ്റം റാം: 2KiB

2. റീഡ് പ്രൊട്ടക്ഷൻ നീക്കം ചെയ്യുക, തുടർന്ന് റൈറ്റ് പ്രൊട്ടക്ഷൻ:

Sudo stm32flash -k /dev/ttyUSB0 stm32flash 0.4 http://stm32flash.googlecode.com/ ഇൻ്റർഫേസ് serial_posix: 57600 8E1 പതിപ്പ്: 0x22 ഓപ്ഷൻ 1: 0x00 ഓപ്ഷൻ: 0x00 ഉപകരണം: 0x00 കിബി ( ബൂട്ട്ലോഡർ വഴി 512b റിസർവ് ചെയ്‌തിരിക്കുന്നു) - ഫ്ലാഷ്: 128KiB (സെക്ടർ വലുപ്പം: 4x1024) - ഓപ്‌ഷൻ റാം: 16b - സിസ്റ്റം റാം: 2KiB റീഡ്-അൺപ്രൊട്ടക്റ്റിംഗ് ഫ്ലാഷ് പൂർത്തിയായി. sudo stm32flash -u /dev/ttyUSB0 stm32flash 0.4 http://stm32flash.googlecode.com/ ഇൻ്റർഫേസ് serial_posix: 57600 8E1 പതിപ്പ്: 0x22 ഓപ്ഷൻ 1: 0x00 ഓപ്ഷൻ 2: 0x00: 0x00 ഡിവൈസ്. 0x00 0KiB ( ബൂട്ട്ലോഡർ വഴി 512b റിസർവ് ചെയ്‌തിരിക്കുന്നു) - ഫ്ലാഷ്: 128KiB (സെക്ടർ വലുപ്പം: 4x1024) - ഓപ്‌ഷൻ റാം: 16b - സിസ്റ്റം റാം: 2KiB റൈറ്റ്-അൺപ്രൊട്ടക്റ്റിംഗ് ഫ്ലാഷ് പൂർത്തിയായി.

ഇപ്പോൾ നിങ്ങൾക്ക് സാധാരണ മൈക്രോകൺട്രോളർ ഉപയോഗിച്ച് പ്രവർത്തിക്കാം.

പൂച്ചക്കുട്ടികൾക്കുള്ള മൈക്രോകൺട്രോളറുകൾ

മ്യാവൂ, പൂച്ചകളേ :)

ഒരു ദിവസം, ഒരു പൂച്ച എന്നെ വിട്ടുപോയി: (ശരി, എന്തിനാണ് വലേറിയൻ കഴിക്കുന്നത്, ഞാൻ ബിസിനസ്സിലേക്ക് ഇറങ്ങാൻ തീരുമാനിച്ചു, "മാതൃരാജ്യത്തിൻ്റെ നന്മയ്ക്കായി." ഡിജിറ്റൽ ഉപകരണങ്ങളിൽ പ്രവർത്തിക്കാൻ ഞാൻ പണ്ടേ ആഗ്രഹിച്ചിരുന്നു, പക്ഷേ ഞാൻ ചെയ്തില്ല. സമയമില്ല (നിങ്ങൾക്കറിയാം, ഒന്നുകിൽ ഉറങ്ങുക അല്ലെങ്കിൽ പൂച്ചയുടെ മേൽക്കൂരയിൽ നടക്കുക), ഇപ്പോൾ സമയം പ്രത്യക്ഷപ്പെട്ടു, നമുക്ക് ആരംഭിക്കാം..)

പതിവുപോലെ, എല്ലാം ഒരു തിരഞ്ഞെടുപ്പിൽ ആരംഭിക്കുന്നു. ശരി, തിരഞ്ഞെടുക്കൽ ഒരു ചെറിയ PIC അല്ലെങ്കിൽ AVR ആണെന്ന് തോന്നുന്നു. എങ്ങനെയോ രണ്ടാമത്തേത് കൂടുതൽ ഇഷ്ടപ്പെട്ടു. കമ്പ്യൂട്ടറിൽ മറ്റ് പോർട്ടുകളുടെ അഭാവം കാരണം എനിക്ക് ഒരു യുഎസ്ബി പ്രോഗ്രാമറും ആവശ്യമായിരുന്നു, അതിൻ്റെ വില ഏകദേശം എൻ്റെ വാൽ വീഴാൻ കാരണമായി. ഒരു ആർഡ്വിനോയും ഉണ്ട് - അത്തരമൊരു മൃഗം. യുഎസ്ബി വഴിയും ഇത് പ്രോഗ്രാം ചെയ്യാം. ശരി, ഞാൻ കരുതുന്നു, "ഡോക്ടർ നിർദ്ദേശിച്ചതുപോലെ." ഞങ്ങളുടെ ഗ്രാമത്തിൽ നിങ്ങൾക്കത് ഒരു ഓൺലൈൻ സ്റ്റോറിലൂടെ മാത്രമേ ലഭിക്കൂ. ഞാൻ ഒരു മികച്ച ഡീൽ കണ്ടെത്തി, ഏതാണ്ട് അത് വാങ്ങി... OOP! ഞാൻ നോക്കുന്നു - STM32VL-ഡിസ്കവറി. ഇത് ഏതുതരം മൃഗമാണ്? Hmm, STM32.. എൻ്റെ ചെവിയുടെ കോണിൽ നിന്ന് ഞാൻ എന്തോ കേട്ടു.. സ്വഭാവസവിശേഷതകൾ എൻ്റെ മീശയെ അന്തംവിട്ടുനിൽക്കുന്നു, സത്യസന്ധമായി!

അവൾക്ക് ധാരാളം കൈകാലുകൾ ഉണ്ട്!

അതിനാൽ, ക്രമത്തിൽ:

  • Arduino ന് 14 ഡിജിറ്റൽ I/O പോർട്ടുകളും 6 അനലോഗ് ഇൻപുട്ടുകളും ഉണ്ട്. STM32VL-ഡിസ്കവറിക്ക് 45 ഡിജിറ്റൽ ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ ഉണ്ട്, അതിൽ 10 എണ്ണം ഓപ്ഷണലായി അനലോഗ് ഇൻപുട്ടുകളായി പരിവർത്തനം ചെയ്യാവുന്നതാണ്.
  • Arduino 32 KB പ്രോഗ്രാം സ്റ്റോറേജും 2 KB റാമും ഉണ്ട്. STM32VL-Discovery ന് 64 KB പ്രോഗ്രാം സ്റ്റോറേജും 8 KB റാമും ഉണ്ട്.
  • Arduino ൽ നിന്ന് ക്ലോക്ക് ആവൃത്തി STM32VL-ഡിസ്കവറിക്ക് 16 MHz ഉം 24 MHz ഉം ഉണ്ട്.
  • ഏതൊരു STM32 മൈക്രോകൺട്രോളറും മറ്റൊരു STM32 ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാനാകും, പക്ഷേ മികച്ച സ്വഭാവസവിശേഷതകൾ, സ്കീം മാറ്റാതെ
  • ഒരു പ്രോഗ്രാമർ ഉപയോഗിക്കാതെ തന്നെ STM32 പ്രോഗ്രാം ചെയ്യാൻ കഴിയും COM പോർട്ട്(കുറച്ചു കഴിഞ്ഞ് ഇതിനെക്കുറിച്ച് കൂടുതൽ)
  • എഴുതുന്ന സമയത്ത് ആർഡ്വിനോയുടെ വില ~ 1300 റൂബിൾസ്, STM32VL-ഡിസ്കവറി ~ 600 റൂബിൾസ്. ഇത് 2 മടങ്ങ് വിലകുറഞ്ഞതാണ്!

അടുത്തത് എന്താണ്? STM32VL-Discovery-ന് ഒരു ബിൽറ്റ്-ഇൻ പ്രോഗ്രാമർ/ഡീബഗ്ഗർ ഉണ്ട്, അത് പാവിൻ്റെ നേരിയ ചലനത്തിലൂടെ (ജമ്പറുകൾ നീക്കം ചെയ്യുന്നു) പ്രോഗ്രാം ചെയ്യാനും ഡീബഗ് ചെയ്യാനും കഴിയും (ഡീബഗ്ഗിംഗ് വളരെ ഉപയോഗപ്രദമാണ്, എന്നാൽ പിന്നീട് അതിൽ കൂടുതൽ) ബോർഡിന് പുറത്ത് STM32 മൈക്രോകൺട്രോളറുകൾ. ഇത് Arduino-ൽ പ്രവർത്തിക്കില്ല. അതായത്, STM32VL-Discovery ഉപയോഗിച്ച് ഞങ്ങൾ പണം ലാഭിക്കുകയും കൂടുതൽ ഉൽപ്പാദനക്ഷമതയും സൃഷ്ടിപരമായ സ്വാതന്ത്ര്യവും നേടുകയും ചെയ്യുന്നു :)

STM32 മൈക്രോകൺട്രോളറുകൾ തന്നെ മറ്റുള്ളവയേക്കാൾ ആകർഷകമായി കാണപ്പെടുന്നു:

STM32F100C4T6B ATtiny24A-SSU PIC16F688-I/SL STM32F103RET6 ATmega1284P-PU PIC18F4550-I/PT
ശരാശരി വില, തടവുക 60 65 60 240 330 220
ക്ലോക്ക് ഫ്രീക്വൻസി, MHz 24 20 20 72 20 48
ഫ്ലാഷ് മെമ്മറി, കെ.ബി 16 2 4 512 128 16
റാം, ബൈറ്റ് 4096 128 256 65536 16384 2048
USART, pcs. 2 0 0 5 2 0
SPI, pcs. 1 1 0 3 1 1
ADC, pcs. 16x12 ബിറ്റ് 8x10 ബിറ്റ് 8x10 ബിറ്റ് 16x12 ബിറ്റ് 8x10 ബിറ്റ് 13x10 ബിറ്റ്
DAC, pcs. 1x12 ബിറ്റ് 0 0 2x12 ബിറ്റ് 0 0
ഇൻപുട്ട്/ഔട്ട്പുട്ട് ലൈനുകളുടെ എണ്ണം, pcs. 37 12 12 51 32 35

കൂടാതെ STM32 32-ബിറ്റ് ആണ്, അതായത് ഇതിന് ഒരു ക്ലോക്ക് സൈക്കിളിൽ 32-ബിറ്റ് ഡാറ്റ ഉപയോഗിച്ച് പ്രവർത്തിക്കാൻ കഴിയും. AVR, PIC എന്നിവയ്ക്ക് ഇതിൽ അഭിമാനിക്കാൻ കഴിയില്ല.

ശരി, പൂച്ചകളേ, നിങ്ങൾക്ക് ബോധ്യമുണ്ടോ? അപ്പോൾ നമുക്ക് ഒരു യുവ ഡിജിറ്റൽ യോദ്ധാവിൻ്റെ കോഴ്സ് ആരംഭിക്കാം!)

അതെങ്ങനെയാണ് പ്രവര്ത്തിക്കുന്നത്? അതിൽ എന്താണ് അടങ്ങിയിരിക്കുന്നത്? അവനു എന്ത് ചെയ്യാനാകും?

നിങ്ങൾക്കറിയാവുന്നതുപോലെ, എല്ലാ പൂച്ചകളും വളരെ അന്വേഷണാത്മകമാണ്, പ്രത്യേകിച്ച് റേഡിയോ പൂച്ചകൾ!

ഒരു മൈക്രോ സർക്യൂട്ടാണ് മൈക്രോകൺട്രോളർ, അത് റാം ഉള്ള ഒരു പ്രോസസർ, പെരിഫറലുകൾ എന്നിവയുടെ പ്രവർത്തനങ്ങൾ സംയോജിപ്പിക്കുന്നു. ഫ്ലാഷ് മെമ്മറി. ഒരു കമ്പ്യൂട്ടർ പോലെ, ചെറുത് മാത്രം!

നമുക്ക് ഒരു സാമ്യം ഉണ്ടാക്കാം: കമ്പ്യൂട്ടർ നിയന്ത്രിക്കുന്നത് ഓപ്പറേറ്റിംഗ് സിസ്റ്റമാണ്, കൂടാതെ മൈക്രോകൺട്രോളർ നിയന്ത്രിക്കുന്നത് നിങ്ങൾ എഴുതുന്ന "ഫേംവെയർ" ആണ്; കമ്പ്യൂട്ടർ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ഹാർഡ് ഡ്രൈവിൽ സംഭരിച്ചിരിക്കുന്നു, മൈക്രോകൺട്രോളറിൻ്റെ "ഫേംവെയർ" അതിൻ്റെ ഫ്ലാഷ് മെമ്മറിയിൽ സംഭരിച്ചിരിക്കുന്നു; റാം ഫംഗ്ഷനുകൾ സമാനമാണ് - പ്രോഗ്രാം എക്സിക്യൂഷൻ സമയത്ത് മാറുന്ന ഡാറ്റ സംഭരിക്കുന്നു. കൂടാതെ ADC, DAC എന്നിവ പോലുള്ള വിവിധ പെരിഫറൽ ഉപകരണങ്ങളും എംകെക്ക് ഉണ്ട്.

ശരീരത്തിലെ കൈകാലുകൾ ഉപയോഗിച്ചാണ് എംകെ പുറം ലോകവുമായി ആശയവിനിമയം നടത്തുന്നത് (തീർച്ചയായും പൂച്ചകളുടേത് പോലെയല്ല, ലോഹം). എന്നാൽ അവയെല്ലാം പ്രോഗ്രാം നിയന്ത്രിക്കുന്നില്ല, പവർ പിന്നുകൾ, ഒരു റീസെറ്റ് പിൻ, പെരിഫറൽ പവർ പിന്നുകൾ, ബാക്കപ്പ് പവർ. പ്രോഗ്രാം നിയന്ത്രിക്കുന്നവയെ "പോർട്ടുകൾ" എന്ന് വിളിക്കുന്ന ഗ്രൂപ്പുകളായി തിരിച്ചിരിക്കുന്നു. ഈ നിയന്ത്രിത ഔട്ട്പുട്ടുകളെല്ലാം 2 അക്ഷരങ്ങളും ഒരു അക്കവും കൊണ്ട് നാമകരണം ചെയ്തിരിക്കുന്നു. ഉദാഹരണത്തിന് PA1: P - പോർട്ട്, A - പോർട്ട് "A", 1 - ഈ പോർട്ടിൻ്റെ പിൻ നമ്പർ.

പ്രോഗ്രാമിൽ, നിങ്ങൾ ആഗ്രഹിക്കുന്നതുപോലെ പോർട്ടുകൾ ഇൻപുട്ട് അല്ലെങ്കിൽ ഔട്ട്പുട്ട് ആയി ക്രമീകരിച്ചിരിക്കുന്നു.

ഇൻപുട്ടിനായി കോൺഫിഗർ ചെയ്‌തിരിക്കുന്ന ഒരു പോർട്ടിൻ്റെ പിന്നുകൾ ഓരോ പിൻക്കും വ്യത്യസ്തമായിരിക്കും:

  • ഒരു പ്രോഗ്രാമിന് വായിക്കാൻ കഴിയുന്ന (ലോജിക്കൽ 1 അല്ലെങ്കിൽ 0) മൂല്യമുള്ള ഇൻപുട്ടാണ് ഡിജിറ്റൽ ഇൻപുട്ട്. ഇൻപുട്ടിലെ വോൾട്ടേജ് 0 ആണെങ്കിൽ, മൂല്യം 0 ആണ്, ഇൻപുട്ടിലെ വോൾട്ടേജ് വിതരണ വോൾട്ടേജിന് തുല്യമാണെങ്കിൽ, ഇൻപുട്ടിൻ്റെ മൂല്യം 1 ആണ്. മൂന്നാമത്തേത് നൽകിയിട്ടില്ല. പവർ അല്ലെങ്കിൽ ഗ്രൗണ്ടിലേക്ക് ഒരു പുൾ-അപ്പ് റെസിസ്റ്റർ ഉപയോഗിച്ച് ചെയ്യാം
  • അനലോഗ് ഇൻപുട്ട് - പ്രോഗ്രാമിന് വായിക്കാൻ കഴിയുന്ന ഒരു ഇൻപുട്ട്, പക്ഷേ നിരവധി മൂല്യങ്ങൾ ഉണ്ടാകാം - 4096 വരെ. കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, 0 മുതൽ ഇൻപുട്ട് വോൾട്ടേജ് 0 ആണെങ്കിൽ മൈക്രോകൺട്രോളറിൻ്റെ മൈനസ് പവർ സപ്ലൈയുമായി ബന്ധപ്പെട്ട് 4095 ഇൻപുട്ട് വോൾട്ടേജ് വിതരണ വോൾട്ടേജിന് തുല്യമാണെങ്കിൽ. ഈ പരിവർത്തനങ്ങളെല്ലാം ADC ആണ് ചെയ്യുന്നത് - അനലോഗ്-ടു-ഡിജിറ്റൽ കൺവെർട്ടർ, ഇത് ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഒരു തെർമിസ്റ്ററിലെ വോൾട്ടേജ് അളക്കാനും താപനില കണ്ടെത്താനും അല്ലെങ്കിൽ ഫോട്ടോറെസിസ്റ്ററിലെ വോൾട്ടേജ് അളക്കാനും അതിൽ വീഴുന്ന പ്രകാശത്തിൻ്റെ തെളിച്ചം കണ്ടെത്താനും കഴിയും... ശരി, നിങ്ങൾക്ക് ഒരു നിങ്ങൾക്ക് ഭാവന ഉണ്ടെങ്കിൽ ഒരുപാട് കാര്യങ്ങൾ :) നിങ്ങൾ 3V-ൽ നിന്ന് മൈക്രോകൺട്രോളർ പവർ ചെയ്യുകയാണെങ്കിൽ, 0V = 0, 3B = 4096, അതായത് 3/4096 = 0.000732421, അതായത്. ഇൻപുട്ട് വോൾട്ടേജ് 0.000732421V ആയി മാറുമ്പോൾ, പ്രോഗ്രാമിലെ ഇൻപുട്ട് മൂല്യം 1 ആയി മാറുന്നു. ഇത് അത്ര സങ്കീർണ്ണമല്ല, അല്ലേ? മുന്നോട്ടുപോകുക
  • ഇതര ഫംഗ്‌ഷൻ മോഡിൽ ഡിജിറ്റൽ ഇൻപുട്ട് - പെരിഫറലുകളുമായി പ്രവർത്തിക്കുന്നതിനുള്ള ഇൻപുട്ട്. ഉദാഹരണത്തിന്, ഒരു ടൈമറിനുള്ള ഇൻപുട്ട് അല്ലെങ്കിൽ ചില ഇൻ്റർഫേസിനുള്ള ഇൻപുട്ട്. ഈ ഇൻപുട്ടിൻ്റെ മൂല്യം പ്രോഗ്രാമിൽ നിന്ന് വായിക്കാൻ കഴിയില്ല. ഒരു പ്രോഗ്രാമിൽ, ഉദാഹരണത്തിന്, ഈ ഔട്ട്പുട്ടിൽ നിന്ന് ലഭിച്ച ഡാറ്റ ചില ഇൻ്റർഫേസ് ഉപയോഗിച്ച് നിങ്ങൾക്ക് വായിക്കാൻ കഴിയും.

ഔട്ട്‌പുട്ടിനായി കോൺഫിഗർ ചെയ്‌തിരിക്കുന്ന ഒരു പോർട്ടിന് ഇനിപ്പറയുന്ന മോഡുകളിൽ പിൻ ഉണ്ടായിരിക്കാം:

  • പുറത്ത്. ഒരു പോംവഴി മാത്രം. പതിവ് ഡിജിറ്റൽ ഔട്ട്പുട്ട്. ഒന്നുകിൽ പിന്നിൽ വിതരണ വോൾട്ടേജ് ഉണ്ട് (ലോജിക്കൽ 1) അല്ലെങ്കിൽ പിന്നിൽ വോൾട്ടേജ് ഇല്ല (ലോജിക്കൽ 0). ഇത് ലളിതമാണ്.
  • ഇതര ഫംഗ്‌ഷൻ മോഡിലെ ഔട്ട്‌പുട്ട് - പെരിഫറലുകളാൽ നിയന്ത്രിക്കപ്പെടുന്ന ഔട്ട്‌പുട്ട്. ഒരു പ്രോഗ്രാമിൽ നിന്ന് ഈ ഔട്ട്പുട്ട് നിയന്ത്രിക്കാൻ കഴിയില്ല, എന്നാൽ ഈ ഔട്ട്പുട്ട് നിയന്ത്രിക്കാൻ ഒരു പ്രോഗ്രാമിന് നിർബന്ധിതമാകാം, ഉദാഹരണത്തിന് ഒരു ഇൻ്റർഫേസ്.

എന്നാൽ എല്ലാ നിഗമനങ്ങളും "നിങ്ങളുടെ ഇഷ്ടം പോലെ" നൽകാനാവില്ല. സാധ്യമായതും അല്ലാത്തതും കണ്ടെത്തുന്നതിന്, നിങ്ങൾ ഡോക്യുമെൻ്റേഷൻ (പട്ടിക 4) നോക്കേണ്ടതുണ്ട് അല്ലെങ്കിൽ MicroXplorer പ്രോഗ്രാം ഉപയോഗിക്കുക.

പോർട്ട് ഉപയോഗിക്കുന്നതിന് മുമ്പ്, നിങ്ങൾ ആദ്യം അത് ക്ലോക്ക് ചെയ്യണം - അതിലേക്ക് ക്ലോക്ക് പൾസുകൾ അയയ്ക്കുക, കാരണം തുടക്കത്തിൽ ഊർജ്ജം ലാഭിക്കാൻ അവ വിതരണം ചെയ്യാറില്ല. തിരഞ്ഞെടുക്കാം വ്യത്യസ്ത ആവൃത്തിക്ലോക്കിംഗ് - ഉയർന്ന ആവൃത്തി - ഈ പോർട്ടിൻ്റെ ഇൻപുട്ടുകളോ ഔട്ട്പുട്ടുകളോ വേഗത്തിൽ പ്രവർത്തിക്കുന്നു, മാത്രമല്ല ഉയർന്ന ഊർജ്ജ ഉപഭോഗവും.

നിഗമനങ്ങളും ഉണ്ട് ബൂട്ട് 0ഒപ്പം ബൂട്ട് 1. ഈ പിന്നുകൾ പോർട്ടുകളുടേതല്ല; മൈക്രോകൺട്രോളറിൻ്റെ ലോഡിംഗ് നിയന്ത്രിക്കാൻ അവ ഉപയോഗിക്കുന്നു. പവർ സപ്ലൈ സമയത്ത് BOOT 0 പിന്നിൽ ഒരു ലോജിക്കൽ പൂജ്യം ഉണ്ടെങ്കിൽ (പിൻ ഒരു പൊതു പോയിൻ്റുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു), മൈക്രോകൺട്രോളർ ഫ്ലാഷ് മെമ്മറിയിലേക്ക് ലോഡ് ചെയ്ത പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യുന്നു, അതായത്. നിങ്ങളുടെ ഫേംവെയർ. പവർ നൽകുമ്പോൾ, BOOT 0 പിൻ ലോജിക്കൽ ഒന്നാണെങ്കിൽ (പിൻ മൈക്രോകൺട്രോളറിൻ്റെ പവർ സപ്ലൈയുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു), കൂടാതെ BOOT 1 പിൻ ലോജിക്കൽ സീറോ ആണെങ്കിൽ, മൈക്രോകൺട്രോളർ നിങ്ങളുടെ ഫേംവെയറല്ല, മറിച്ച് ഒരു ഫാക്ടറി-റെക്കോർഡ് ബൂട്ട്ലോഡർ ആണ് നടപ്പിലാക്കുന്നത്. . ഇത് ഓര്ക്കുക! STM32 മൈക്രോകൺട്രോളറുകളിൽ പ്രവർത്തിക്കുമ്പോൾ നിങ്ങൾ ഇത് ധാരാളം ഉപയോഗിക്കും!ചിലപ്പോൾ ഒരു ഫാക്ടറി-റെക്കോർഡ് ബൂട്ട്ലോഡർ ലോഡ് ചെയ്യുന്നു - ഒരേ ഒരു വഴിമൈക്രോകൺട്രോളർ ഫേംവെയർ എഴുതുക/മാറ്റുക. ഉദാഹരണത്തിന്, പ്രോഗ്രാമർ കണക്റ്റുചെയ്‌തിരിക്കുന്ന പിന്നുകൾ ഫേംവെയറിൽ കോൺഫിഗർ ചെയ്യുമ്പോൾ അല്ലെങ്കിൽ ഒരു പ്രോഗ്രാമർ ഉപയോഗിക്കാതെ മൈക്രോകൺട്രോളർ ഫേംവെയർ ഫ്ലാഷ് ചെയ്യുമ്പോൾ ഇത് സംഭവിക്കുന്നു. അങ്ങനെ അത്യന്ത്യം ശുപാർശ ചെയ്യുന്നത്ഒരു പ്രിൻ്റഡ് സർക്യൂട്ട് ബോർഡ് രൂപകൽപ്പന ചെയ്യുമ്പോൾ, ഈ പിന്നുകൾ (അല്ലെങ്കിൽ കുറഞ്ഞത് BOOT 0) സൗകര്യപ്രദമായ സ്ഥലത്ത് സ്ഥിതിചെയ്യണം.

അതിനാൽ ഞങ്ങൾ അത് കണ്ടെത്തി :) ഇപ്പോൾ ഒരു മൈക്രോകൺട്രോളർ എന്താണെന്നും അതിൽ എന്താണ് അടങ്ങിയിരിക്കുന്നതെന്നും ഞങ്ങൾക്കറിയാം. ഇപ്പോൾ നമ്മൾ കൂടുതൽ ജ്ഞാനത്തെക്കുറിച്ച് പഠിക്കുകയും ഏറ്റവും രസകരമായ കാര്യത്തിലേക്ക് പോകുകയും ചെയ്യും - പരിശീലനം!

മൈക്രോകൺട്രോളറിലെ പ്രോഗ്രാം ഘട്ടം ഘട്ടമായി നടപ്പിലാക്കുന്നു. ഒരു പ്രോസസർ സൈക്കിൾ ഒരു പ്രോഗ്രാം ഘട്ടമാണ്.

ഉദാഹരണത്തിന്, ബട്ടൺ അമർത്തുന്നത് വരെ ചുവപ്പ്, പച്ച ലൈറ്റുകൾ മിന്നിമറയട്ടെ. ഓരോ വിളക്കിൻ്റെയും ദൈർഘ്യം 5 സെക്കൻഡ് ആണ്. അൽഗോരിതം ഇതാ:

  1. ബട്ടൺ ഉപയോഗിച്ച് ഇൻപുട്ടിൽ വോൾട്ടേജ് ഉണ്ടോ എന്ന് പരിശോധിക്കാം? (ബട്ടൺ മൈക്രോകൺട്രോളർ ഔട്ട്പുട്ട് + പവർ സപ്ലൈ ക്ലോസ് ചെയ്യുന്നു)
  2. വോൾട്ടേജ് ഇല്ലെങ്കിൽ, ചുവന്ന ലൈറ്റ് 5 സെക്കൻഡ് പ്രകാശിക്കുന്നു, പച്ച ലൈറ്റ് അണയുന്നു, വോൾട്ടേജ് ഉണ്ടെങ്കിൽ, ഞങ്ങൾ വീണ്ടും ആരംഭിക്കുന്നു
  3. വീണ്ടും പരിശോധിക്കുന്നു
  4. വോൾട്ടേജ് ഇല്ലെങ്കിൽ, പച്ച ലൈറ്റ് 5 സെക്കൻഡ് പ്രകാശിക്കുന്നു, ചുവന്ന ലൈറ്റ് അണയുന്നു, വോൾട്ടേജ് ഉണ്ടെങ്കിൽ, ഞങ്ങൾ വീണ്ടും ആരംഭിക്കുന്നു
  5. നമുക്ക് വീണ്ടും തുടങ്ങാം

നിർത്തുക! ലൈറ്റ് ഓണായിരിക്കുമ്പോൾ ഞാൻ ബട്ടൺ അമർത്തിയാൽ എന്തുചെയ്യും? ഒന്നും സംഭവിക്കില്ല! പ്രോഗ്രാം ഘട്ടം ഘട്ടമായി നടപ്പിലാക്കുന്നതിനാൽ, ബൾബുകൾ മാറുന്ന നിമിഷത്തിലാണ് ബട്ടൺ അമർത്തുന്നത് പരിശോധിക്കുന്നതിനുള്ള ഘട്ടം.
കൃത്യമായി അത്തരം കേസുകൾക്കാണ് അത്തരമൊരു കാര്യം ഉള്ളത് തടസ്സപ്പെടുത്തുന്നു

തടസ്സങ്ങൾ പ്രധാന പ്രോഗ്രാമിൻ്റെ നിർവ്വഹണത്തെ തടസ്സപ്പെടുത്തുന്നത് സാധ്യമാക്കുന്നു. ഇത് ഒരു ബാഹ്യ ഇവൻ്റ് (ഒരു ബട്ടൺ അമർത്തുക, ഒരു ബട്ടൺ റിലീസ് ചെയ്യുക, ഡാറ്റ സ്വീകരിക്കൽ മുതലായവ) അല്ലെങ്കിൽ ആന്തരികമായി (ഒരു ടൈമർ വഴി അല്ലെങ്കിൽ പൂച്ചയ്ക്ക് ഭക്ഷണം കൊടുക്കാൻ സമയമായി, ഉദാഹരണത്തിന്) ചെയ്യാം. ഈ തടസ്സം സംഭവിക്കുമ്പോൾ, സബ്റൂട്ടീൻ എക്സിക്യൂട്ട് ചെയ്യാൻ തുടങ്ങുന്നു. സബ്റൂട്ടീനുകൾ വ്യത്യസ്തമായിരിക്കാം വത്യസ്ത ഇനങ്ങൾതടസ്സങ്ങൾ, ഈ ദിനചര്യകളെ വിളിക്കുന്നു കൈകാര്യം ചെയ്യുന്നവരെ തടസ്സപ്പെടുത്തുക.

ഇതേ ഇൻ്ററപ്റ്റ് ഹാൻഡ്‌ലർ അതിൻ്റെ ജോലി പൂർത്തിയാക്കുമ്പോൾ, പ്രധാന പ്രോഗ്രാം തടസ്സപ്പെട്ട സ്ഥലത്ത് നിന്ന് എക്സിക്യൂട്ട് ചെയ്യാൻ തുടങ്ങുന്നു.

നമുക്ക് കാലുപിടിക്കാം!

ശരി, പൂച്ചക്കുട്ടികളേ, നിങ്ങളുടെ കൈകാലുകളിൽ എഴുന്നേൽക്കാൻ സമയമായി! നിങ്ങൾക്ക് ഇതിനകം ഒരു ഡീബഗ് ബോർഡ് ഉണ്ടെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു? അല്ലെങ്കിൽ കുറഞ്ഞത് ഒരു മൈക്രോകൺട്രോളർ? ഉണ്ടെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു :) ഇല്ലെങ്കിൽ, നമുക്ക് കടയിലേക്ക് ഓടാം! (സോസേജിന് വേണ്ടിയല്ല. എങ്കിലും...) പരിശീലനമില്ലാതെ എന്താണ് ഈ പഠിപ്പിക്കൽ?

ആദ്യം ഒരു ഡീബഗ് ബോർഡ് ഉണ്ടായിരിക്കുന്നത് വളരെ നല്ലതാണ്, ഉദാഹരണത്തിന് STM32VL-ഡിസ്‌കവറി, പക്ഷേ തവള കഴുത്ത് ഞെരിക്കുകയാണെങ്കിലോ നിങ്ങൾക്ക് ഇപ്പോഴും സോസേജ് ആവശ്യത്തിന് ഇല്ലെങ്കിലോ, നിങ്ങൾക്ക് ഒരു മൈക്രോകൺട്രോളറും ഒരു RS-232 -> UART ഇൻ്റർഫേസും ഉപയോഗിച്ച് നേടാം. കൺവെർട്ടർ (ഉദാഹരണത്തിന്, MAX3232) അല്ലെങ്കിൽ USB -> UART (ഉദാ: FT232RL). ഈ സാഹചര്യത്തിൽ, 100 റൂബിൾസ് പൂർണ്ണമായും ചെയ്യാൻ കഴിയും, എന്നാൽ നിങ്ങൾ ഒരു പ്രിൻ്റഡ് സർക്യൂട്ട് ബോർഡും സോൾഡറും 0.2 മില്ലീമീറ്റർ വിടവുള്ള 0.3 മില്ലീമീറ്റർ വീതിയിൽ കുറഞ്ഞത് 48 പിൻസ് ഉണ്ടാക്കണം. ഞാൻ മുന്നറിയിപ്പ് നൽകി.

ആദ്യം നിങ്ങൾ കമ്പ്യൂട്ടറിലേക്ക് ഡീബഗ് ബോർഡ് അല്ലെങ്കിൽ കൺട്രോളർ സ്വാഭാവികമായി അറ്റാച്ചുചെയ്യേണ്ടതുണ്ട്.

നിങ്ങൾക്ക് ഒരു വികസന ബോർഡ് ഉണ്ടെങ്കിൽ:

ഒരു ഡീബഗ് ബോർഡ് ഉപയോഗിച്ച്, തീർച്ചയായും, ഇത് എളുപ്പമാണ്. ഞങ്ങൾ ഒരു മിനി-യുഎസ്ബി കോർഡ് എടുത്ത് ബോർഡ് കമ്പ്യൂട്ടറിലേക്ക് ബന്ധിപ്പിക്കുന്നു, എല്ലാ ഡ്രൈവറുകളും സ്വയമേവ ഇൻസ്റ്റാൾ ചെയ്യണം. കാണുക STMicroelectronics STLink ഡോംഗിൾഉപകരണ മാനേജറിൽ - നല്ല അടയാളം! ശരി, എന്തെങ്കിലും തെറ്റ് സംഭവിക്കുകയും ഒന്നും പ്രവർത്തിക്കാതിരിക്കുകയും ചെയ്താൽ, നിങ്ങൾ സോഫയിൽ സ്ക്രാച്ച് ചെയ്യേണ്ടതില്ല, നിങ്ങൾ ഇവിടെ വന്ന് ഇൻസ്റ്റാൾ ചെയ്താൽ മതി STM32 ST-LINK യൂട്ടിലിറ്റി.

ശരി, നിങ്ങൾ ഒരു കമ്പ്യൂട്ടറിൻ്റെ സന്തുഷ്ട ഉടമയാണെങ്കിൽ വിൻഡോസ് നിയന്ത്രണം 8, മുകളിൽ പറഞ്ഞ പ്രവർത്തനങ്ങൾ നടത്തുന്നതിന് മുമ്പ് നിങ്ങൾ ഇനിപ്പറയുന്നവ ചെയ്യേണ്ടതുണ്ട്: ഓപ്ഷനുകൾ -> കമ്പ്യൂട്ടർ ക്രമീകരണങ്ങൾ മാറ്റുക -> സാധാരണമാണ് -> പ്രത്യേക ഓപ്ഷനുകൾഡൗൺലോഡുകൾഒരു ഓപ്ഷൻ തിരഞ്ഞെടുക്കുക ഡ്രൈവർ ഒപ്പ് പരിശോധന പ്രവർത്തനരഹിതമാക്കുന്നു.

നിങ്ങൾക്ക് ഒരു മൈക്രോകൺട്രോളർ ഉണ്ടെങ്കിൽ:

നിങ്ങൾക്ക് ഒരു മൈക്രോകൺട്രോളർ ഉണ്ടെങ്കിൽ, നിങ്ങൾക്ക് നേരായ കാലുകൾ ഉണ്ടായിരിക്കണം. പക്ഷെ ഞാൻ നിന്നെ സംശയിക്കുന്നില്ല!

കമ്പ്യൂട്ടറിലേക്ക് മൈക്രോകൺട്രോളർ ബന്ധിപ്പിക്കുന്നതിന് മുമ്പ്, അത് സോൾഡർ ചെയ്യണം അച്ചടിച്ച സർക്യൂട്ട് ബോർഡ്. ഇതിനായി, ഒരു മൈക്രോകൺട്രോളറും നേരായ കൈകാലുകളും കൂടാതെ, നിങ്ങൾക്ക് കുറഞ്ഞത് ഒരു പ്രിൻ്റഡ് സർക്യൂട്ട് ബോർഡ് ആവശ്യമാണ്. പിന്നെ നിങ്ങളുടെ സർഗ്ഗാത്മകതയുണ്ട്.

താഴെയുള്ള ഡയഗ്രാമിലെ പ്രവർത്തന മിനിമം:

എന്നാൽ ഇത് താൽപ്പര്യമില്ലാത്ത മിനിമം ആണ്.

ഇതുപോലെ എൽഇഡികളും ബട്ടണുകളും ചേർക്കുക (ബൂട്ട് പിന്നുകൾ മറക്കരുത്).

എന്നാൽ ഈ ചെള്ളിനെ സോൾഡറിംഗ് ചെയ്യുന്നതിൽ പ്രശ്നങ്ങൾ ഉണ്ടാകാം. എന്നാൽ അവ ഉണ്ടാകില്ലെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു. കൺട്രോളറിൻ്റെ വീതിയുടെ 3/4 നുറുങ്ങ് വീതിയുള്ള എൻ്റെ പ്രിയപ്പെട്ട സോവിയറ്റ് 25 W സോളിഡിംഗ് ഇരുമ്പ് ഉപയോഗിച്ച് ഞാൻ അത് സോൾഡറിംഗ് ചെയ്യാൻ തുടങ്ങി. എനിക്കുണ്ട് കൂടുതൽ പ്രശ്നങ്ങൾഒരു പ്രിൻ്റഡ് സർക്യൂട്ട് ബോർഡിൻ്റെ നിർമ്മാണത്തോടൊപ്പം... എല്ലാവർക്കും അവരുടേതായ സാങ്കേതികവിദ്യയുണ്ട്.

നിങ്ങൾ വാങ്ങിയ മൈക്രോ സർക്യൂട്ടിൻ്റെ ഡോക്യുമെൻ്റേഷൻ അനുസരിച്ച് അഡാപ്റ്റർ UART-ലേക്ക് നിർമ്മിക്കേണ്ടതുണ്ട്.

അച്ചടിച്ച സർക്യൂട്ട് ബോർഡിലെ TxD, RxD പിന്നുകൾ യഥാക്രമം അഡാപ്റ്ററിൻ്റെ RxD, TxD പിൻകളുമായി ഞങ്ങൾ ബന്ധിപ്പിക്കുന്നു. എല്ലാറ്റിൻ്റെയും പൊതുവായ കാര്യത്തെക്കുറിച്ചും പോഷകാഹാരത്തെക്കുറിച്ചും നാം മറക്കരുത്.

സോഫ്റ്റ്വെയർ തിരഞ്ഞെടുക്കലും ഇൻസ്റ്റാളേഷനും

ഞങ്ങൾ വികസന അന്തരീക്ഷം ഉപയോഗിക്കും CooCox IDE, എന്നാൽ ഇത് അങ്ങനെയല്ല, പല കാരണങ്ങളാൽ:

  • ഒന്നാമതായി, ഇത് സ്വതന്ത്രമായി വിതരണം ചെയ്യപ്പെടുന്ന സോഫ്റ്റ്വെയർ ആണ്. നിങ്ങളുടെ കർമ്മം ശുദ്ധമാകും എന്നാണ് ഇതിനർത്ഥം
  • എൻ്റെ അഭിപ്രായത്തിൽ (എൻ്റെ മാത്രമല്ല), ഈ വികസന അന്തരീക്ഷം മറ്റുള്ളവയേക്കാൾ സൗകര്യപ്രദമാണ്
  • ഡീബഗ്ഗിംഗ് ഉപയോഗം അനുവദിക്കുന്നു
  • വികസന പരിതസ്ഥിതിയിലേക്ക് ലോഡ് ചെയ്യാൻ കഴിയുന്ന ധാരാളം ഉദാഹരണങ്ങൾ (പൂച്ചക്കുട്ടികൾക്കും മറ്റും ഉപയോഗപ്രദമാണ്)

വികസന പരിതസ്ഥിതി ഒരു കോഡിംഗ് പ്രോഗ്രാം, ഒരു കംപൈലർ, ഒരു ഡീബഗ്ഗർ എന്നിവയെല്ലാം ഒന്നാണ്. സൗകര്യപ്രദം :) എന്നാൽ ചില പരുഷമായ ചെല്യാബിൻസ്ക് പൂച്ച കൂടുതൽ സുഖപ്രദമായ കോഡ് എഴുതുകയാണെങ്കിൽ (ഉദാഹരണത്തിന്, ഒരു നോട്ട്പാഡിൽ), കംപൈൽ ചെയ്യുകയും മിന്നുകയും ചെയ്യുന്നു വ്യത്യസ്ത പ്രോഗ്രാമുകൾ- എനിക്ക് പ്രശ്‌നമില്ല, മൈക്രോകൺട്രോളറിലേക്ക് ഫേംവെയർ ഡൗൺലോഡ് ചെയ്യുന്നതിന് നിങ്ങൾക്ക് STM32 ST-LINK യൂട്ടിലിറ്റ് ആവശ്യമാണ്. അവർ പറയുന്നതുപോലെ ഉടമ ഒരു മാന്യനാണ്.

ഈ വികസന അന്തരീക്ഷം അറിയപ്പെടുന്ന ഗ്രഹണത്തെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്.

  1. നമുക്ക് ഇവിടെ പോകാം
  2. പോക്കിംഗ് CoCenter വഴി ഡൗൺലോഡ് ചെയ്യുക (ശുപാർശ ചെയ്യുക)
  3. നിങ്ങളുടെ ഇമെയിൽ വിലാസം നൽകുക (അത് കുഴപ്പമില്ല, അത് "പ്രദർശനത്തിനായി" ഉണ്ട്)
  4. ഡൗൺലോഡ് ചെയ്ത ശേഷം, ഇത് ഇൻസ്റ്റാൾ ചെയ്യുക കോസെൻ്റർ
  5. അത് പറയുന്ന ആദ്യ വരിയിൽ CooCox CoIDEകുത്തുക ഡൗൺലോഡ്
  6. ഡൗൺലോഡ് പൂർത്തിയായ ശേഷം, പകരം ഡൗൺലോഡ്ചെയ്യും ഇൻസ്റ്റാൾ ചെയ്യുക. ഇവിടെ ക്ലിക്ക് ചെയ്യുക
  7. നമുക്ക് ഇവിടെ പോകാം
  8. കോളത്തിൽ തന്നെ ഡൗൺലോഡ്ആ ഫയൽ ഡൗൺലോഡ് ചെയ്യുക .exe.നമുക്ക് അത് ഇൻസ്റ്റാൾ ചെയ്യാം.
  9. ഞങ്ങൾ അത് സ്വയം തുറക്കുന്നു CooCox CoIDE, ടാബ് പദ്ധതി, ടൂൾചെയിൻ പാത്ത് തിരഞ്ഞെടുക്കുക.
  10. arm-none-eabi-gcc.exe ഫയലിലേക്കുള്ള പാത ഞങ്ങൾ സൂചിപ്പിക്കുന്നു (ഞങ്ങൾ ഇത് ഘട്ടം 8-ൽ ഇൻസ്റ്റാൾ ചെയ്തു, പാത്ത് ഏകദേശം ഇതുപോലെയാണ്: D: പ്രോഗ്രാം ഫയലുകൾ (x86) GNU ടൂൾസ് ARM Embedded4.7 2013q1bin)
  11. വീണ്ടും തുറക്കുന്നു CoIDE, അമർത്തുക കാണുക -> കോൺഫിഗറേഷൻ, ടാബ് തുറക്കുക ഡീബഗ്ഗർഞങ്ങൾ ഇത് ചെയ്യുന്നു [ഫോട്ടോ]
  12. ഞങ്ങൾ സന്തുഷ്ടരാണ്, കാരണം ഇപ്പോൾ നമുക്ക് ഒരു പ്രോഗ്രാം എഴുതി മൈക്രോകൺട്രോളറിലേക്ക് ഫ്ലാഷ് ചെയ്യാം! അത് ഞങ്ങൾ ചെയ്യും.

ഡീബഗ് ബോർഡ്/പ്രോഗ്രാമർ ഇല്ലാതെ നിങ്ങൾക്ക് ഒരു ഓപ്‌ഷൻ ഉണ്ടെങ്കിൽ, പ്രോഗ്രാം MK-ലേക്ക് ലോഡ് ചെയ്യാൻ നിങ്ങൾക്ക് ഒരു പ്രോഗ്രാം ആവശ്യമാണ്. ഫ്ലാഷ് ലോഡർ ഡെമോൺസ്ട്രേറ്റർസ്ഥിതി ചെയ്യുന്നത്

ഞങ്ങൾ കണ്ടെത്തുന്നു പരസ്പര ഭാഷ

നിങ്ങളുടെ ആദ്യ പ്രോഗ്രാം എഴുതുന്നതിന് മുമ്പ്, നിങ്ങൾ എംകെയുമായി ഒരു പൊതു ഭാഷ കണ്ടെത്തേണ്ടതുണ്ട്. അവൻ നമ്മുടെ ഭാഷ പഠിക്കാൻ സാധ്യതയില്ല, അതിനാൽ നമ്മൾ എംകെയുമായി ആശയവിനിമയം നടത്തുന്ന ഭാഷ പഠിക്കേണ്ടതുണ്ട് (അല്ലെങ്കിൽ ഒരുപക്ഷേ ഓർക്കുക), ഇതാണ് സി. ഞങ്ങൾക്ക് അടിസ്ഥാനകാര്യങ്ങൾ മാത്രമേ ആവശ്യമുള്ളൂ (പ്രോഗ്രാം ഘടന, പ്രവർത്തനങ്ങൾ, ഓപ്പറേറ്റർമാർ). നിങ്ങൾക്ക് ഈ ഭാഷ അറിയാമെങ്കിൽ, നിങ്ങൾക്ക് ഉടൻ തന്നെ "ആദ്യത്തെ പ്രോഗ്രാം" ഇനത്തിലേക്ക് പോകാം, പക്ഷേ അറിയാത്തവരെ ഞാൻ കാലികമായി കൊണ്ടുവരും.

പ്രോജക്‌റ്റിൽ വിപുലീകരണങ്ങളുള്ള ഫയലുകൾ അടങ്ങിയിരിക്കുന്നു .സിഒപ്പം .എച്ച്. ആദ്യത്തേതിൽ ഫംഗ്‌ഷനുകൾ അടങ്ങിയിരിക്കുന്നു, രണ്ടാമത്തേതിൽ ഉപയോഗിച്ച ഫംഗ്‌ഷനുകളുടെയും സ്ഥിരാങ്കങ്ങളുടെയും പേരുകൾ അടങ്ങിയിരിക്കുന്നു, ഉദാഹരണത്തിന്. അതാണ് അതിന്റെ വഴി. മിക്കതും പ്രധാന ഫയൽ, ഇതിൽ പ്രോഗ്രാം കോഡ് അടങ്ങിയിരിക്കുന്നു മെയിൻ.സി. വിവിധ ഫംഗ്‌ഷനുകൾ ഉപയോഗിക്കുന്നതിന്, ഈ ഫംഗ്‌ഷനുകളുമായി നിങ്ങൾ ലൈബ്രറികളെ ബന്ധിപ്പിക്കേണ്ടതുണ്ട്. അവർ റെക്കോർഡിംഗ് വഴി ബന്ധിപ്പിക്കുന്നു #"ലൈബ്രറി_പേര്" ഉൾപ്പെടുത്തുകശരി, ലൈബ്രറികൾ സ്വാഭാവികമായും പദ്ധതിയിലായിരിക്കണം. ഫയലിൻ്റെ തുടക്കത്തിൽ തന്നെ അവ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്.

ഒരു പ്രോഗ്രാമിൻ്റെ അദ്വിതീയ ഭാഗമാണ് പ്രവർത്തനങ്ങൾ. പൊതുവേ, ഒരു പ്രോഗ്രാമിൽ ഒന്നോ അതിലധികമോ ഫംഗ്ഷനുകൾ അടങ്ങിയിരിക്കുന്നു. പ്രവർത്തനം ഇതുപോലെ കാണപ്പെടുന്നു:

return_variable_type function_name (variable_type)
{
ഫംഗ്ഷൻ ബോഡി
}

നിങ്ങൾക്ക് ഒരു ഫംഗ്ഷനിലേക്ക് ചില വേരിയബിൾ അയയ്ക്കാൻ കഴിയും, ഫംഗ്ഷൻ അത് പ്രോസസ്സ് ചെയ്യുകയും കുറച്ച് മൂല്യം നൽകുകയും ചെയ്യും. ഒരേ കോഡ് തുടർച്ചയായി എഴുതുന്നതിനുപകരം, ആവർത്തിച്ചുള്ള പ്രവർത്തനങ്ങൾക്കായി ഒരു ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നത് വളരെ സൗകര്യപ്രദമാണ്;

നിങ്ങൾക്ക് ഒരു ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നതിന് മുമ്പ്, അത് ഫയലിൻ്റെ തുടക്കത്തിൽ തന്നെ പ്രഖ്യാപിക്കണം. അവർ ഇത് ഇതുപോലെ ചെയ്യുന്നു:

return_variable_type function_name (variable_type);

അതെ, ഞാൻ ഏറ്റവും പ്രധാനപ്പെട്ട കാര്യം മറന്നു! ഓരോ വരിയുടെയും അവസാനം ഒരു അർദ്ധവിരാമം ഉണ്ടായിരിക്കണം!

ഫംഗ്ഷൻ ഒന്നും തിരികെ നൽകുന്നില്ലെങ്കിൽ (ഉദാഹരണത്തിന്, ഒരു കാലതാമസം, അത് കൃത്യസമയത്ത് പൂച്ചയെ വാലിൽ വലിക്കുന്നു), തുടർന്ന് തരം സൂചിപ്പിച്ചിരിക്കുന്നു ശൂന്യം.

ആരംഭിക്കുമ്പോൾ, ഫംഗ്ഷൻ എല്ലായ്പ്പോഴും ആദ്യം എക്സിക്യൂട്ട് ചെയ്യുന്നു പ്രധാന().

ശരി, ഞങ്ങൾ ഫംഗ്‌ഷനുകൾ കണ്ടെത്തിയതായി തോന്നുന്നു, ധാരണ പരിശീലനത്തിലൂടെ മാത്രമേ വരൂ.

ഞാൻ മുകളിൽ സൂചിപ്പിച്ചത് വേരിയബിൾ തരം. എല്ലാ വേരിയബിളുകളും ആകാം വത്യസ്ത ഇനങ്ങൾ, പ്രധാനമായവ ഇതാ:

  • INT - ഈ തരത്തിലുള്ള വേരിയബിളിന് -2147483648 മുതൽ 2147483647 വരെയുള്ള ഒരു പൂർണ്ണസംഖ്യ മാത്രമേ ആകാൻ കഴിയൂ.
  • FLOAT - ±1.5*10-45 മുതൽ ±3.4*1033 വരെയുള്ള 7 അക്കങ്ങൾ വരെ കൃത്യതയുള്ള ഒരു സംഖ്യയാണ് ഈ തരത്തിലുള്ള ഒരു വേരിയബിൾ.
  • ഇരട്ട - ±5*10-324 മുതൽ ±1.7*10306 വരെ 16 അക്കങ്ങൾ വരെ കൃത്യതയുള്ള നമ്പർ
  • ULONG ഒരു പൂർണ്ണസംഖ്യയാണ്, എന്നാൽ 0 മുതൽ 18446744073709551615 വരെ
  • നീളം - പൂർണ്ണസംഖ്യ -9223372036854775808 മുതൽ 9223372036854775807 വരെ
  • CHAR - ഒരു പ്രതീകം
  • BOOL ഒരു ലോജിക്കൽ വേരിയബിളാണ്. ഇതിന് 2 മൂല്യങ്ങൾ മാത്രമേ ഉണ്ടാകൂ: ശരിയോ തെറ്റോ.

ഒരു സ്ട്രിംഗ് (വാക്ക്, വാക്യം) പ്രതീകങ്ങളുടെ ഒരു നിരയായി പ്രതിനിധീകരിക്കാം ചാർ ടൈപ്പ് ചെയ്യുക. ഉദാഹരണത്തിന്:

char string = "Word";

ഇവിടെ, സ്ക്വയർ ബ്രാക്കറ്റുകൾ എന്നത് വരിയിലെ പ്രതീകങ്ങളുടെ എണ്ണമാണ്, "സ്ട്രോക്ക" എന്നത് അറേയുടെ പേരാണ്.

ഒരു വേരിയബിൾ ഉപയോഗിക്കുന്നതിന് മുമ്പ്, അത് പ്രഖ്യാപിക്കണം. (വേരിയബിൾ തരവും പേരും വ്യക്തമാക്കുക)

  • + - കൂട്ടിച്ചേർക്കൽ.
  • - - കുറയ്ക്കൽ.
  • * - ഗുണനം.
  • / - ഡിവിഷൻ.
  • = - ഒരു വേരിയബിളിന് ഒരു മൂല്യം നൽകുന്നു.

ഉദാഹരണത്തിന് പദപ്രയോഗം a=b+cഒരു വേരിയബിളിലേക്ക് അസൈൻ ചെയ്യുക എന്നാണ് അർത്ഥമാക്കുന്നത് വേരിയബിളുകളുടെ മൂല്യങ്ങളുടെ ആകെത്തുകയുടെ മൂല്യം ബിഒപ്പം സി.

  • ++ - ഇൻക്രിമെന്റും. ഒരു വേരിയബിളിൻ്റെ മൂല്യം 1 കൊണ്ട് വർദ്ധിപ്പിക്കുക
  • -- - കുറയ്ക്കൽ. ഒരു വേരിയബിളിൻ്റെ മൂല്യം 1 കൊണ്ട് കുറയ്ക്കുന്നു

ഉദാഹരണത്തിന് പദപ്രയോഗം a++വേരിയബിളിൻ്റെ മൂല്യം വർദ്ധിപ്പിക്കുക എന്നാണ് അർത്ഥമാക്കുന്നത് 1 പ്രകാരം (അതുപോലെ തന്നെ a=a+1)

  • == - താരതമ്യം, തുല്യ ചിഹ്നം. (അസൈൻമെൻ്റുമായി ആശയക്കുഴപ്പത്തിലാകരുത്)
  • != - താരതമ്യം, "തുല്യമല്ല" ചിഹ്നം.
  • < - താരതമ്യം, "കുറവ്" അടയാളം.
  • <= - താരതമ്യം, "കുറവ് അല്ലെങ്കിൽ തുല്യ" ചിഹ്നം.
  • > - താരതമ്യം, "കൂടുതൽ" അടയാളം.
  • >= - താരതമ്യം, "അതിനേക്കാൾ വലുതോ തുല്യമോ" ചിഹ്നം.

ഉദാഹരണത്തിന് പദപ്രയോഗം വേരിയബിളിൻ്റെ മൂല്യമാണെങ്കിൽ ശരിയാകും വേരിയബിൾ മൂല്യത്തേക്കാൾ കുറവ് ബിമൂല്യങ്ങൾ തുല്യമാണെങ്കിൽ തെറ്റ് അല്ലെങ്കിൽ കൂടുതൽ ബി. എക്സ്പ്രഷൻ a==bസത്യമാണെങ്കിൽ തുല്യമാണ് ബിഎങ്കിൽ തെറ്റും തുല്യമല്ല ബി, എന്നാൽ പദപ്രയോഗം a=bസത്യം എപ്പോഴുംകാരണം ഇത് ഒരു താരതമ്യമല്ല, ഒരു വേരിയബിളിലേക്കുള്ള ഒരു അസൈൻമെൻ്റാണ് വേരിയബിൾ മൂല്യങ്ങൾ ബി.

  • % - ഡിവിഷൻ്റെ ബാക്കി

ഉദാഹരണത്തിന് എങ്കിൽ a=5,b=3, പിന്നെ പദപ്രയോഗത്തിൻ്റെ മൂല്യം a%b 2 ന് തുല്യമായിരിക്കും (5/3=1 മുതൽ (ബാക്കി 2))

  • << - ബിറ്റ്വൈസ് ഇടത്തേക്ക് മാറ്റുക. പദപ്രയോഗത്തിൻ്റെ അർത്ഥം വിശദമായി പരിശോധിക്കാതെ എ<സി ഭാഷയിൽ അത് പദപ്രയോഗത്തിന് തുല്യമായിരിക്കും a*2 ബി
  • >> - ബിറ്റ്വൈസ് വലത്തേക്ക് മാറ്റുക. എക്സ്പ്രഷൻ a >>bപ്രോഗ്രാമിലെ പദപ്രയോഗത്തിന് തുല്യമാണ് a/2 b
  • & - ലോജിക്കൽ ഒപ്പം.
  • | - ലോജിക്കൽ അഥവാ.
  • ~ - വിപരീതം.

സൈക്കിളുകളെ കുറിച്ച് പറയാൻ ഞാൻ ഏറെക്കുറെ മറന്നു. അടിസ്ഥാനം:

സമയത്ത് (അവസ്ഥ) (

ലൂപ്പ് ബോഡി

വ്യവസ്ഥ ശരിയാകുമ്പോൾ (കണ്ടീഷൻ തെറ്റാകുന്നതുവരെ) ലൂപ്പിൻ്റെ ബോഡി (ചുരുണ്ട ബ്രേസുകളിലെ എല്ലാം) എക്സിക്യൂട്ട് ചെയ്യപ്പെടും.

ഇതിനായി (initial_value; loop_executed_until, step) (

ലൂപ്പ് ബോഡി

പ്രാരംഭ_മൂല്യം- പ്രാരംഭ കൌണ്ടർ മൂല്യം

ലൂപ്പ്_റൺസ്_വരെ -ഏത് മൂല്യം എത്തുന്നതുവരെ ലൂപ്പ് പ്രവർത്തിക്കുന്നു

ഘട്ടം -ഏത് ഘട്ടങ്ങളിലാണ് കൗണ്ടർ കണക്കാക്കുന്നത്?

ഉദാഹരണത്തിന്

(i=0; i<10, i++) {

ലൂപ്പ് ബോഡി

വേരിയബിളിൻ്റെ പ്രാരംഭ മൂല്യം ഇതാ 0 ന് തുല്യമാണ്, വേരിയബിളിൻ്റെ മൂല്യം വരെ ലൂപ്പ് പ്രവർത്തിക്കുന്നു 10-ൽ താഴെ, ഓരോ തവണയും ലൂപ്പ് ഒരു വേരിയബിളിലേക്ക് എക്സിക്യൂട്ട് ചെയ്യപ്പെടുന്നു 1 ചേർത്തു, നിങ്ങൾക്ക് ഒരു വേരിയബിളിൻ്റെ മൂല്യം നേരിട്ട് ലൂപ്പിൽ മാറ്റാം.

എങ്കിൽ (അവസ്ഥ)(

ശരീരം 1

) വേറെ (

ശരീരം 2

ഒരു സോപാധിക സംക്രമണത്തിൽ, വ്യവസ്ഥ ശരിയാണെങ്കിൽ "ബോഡി 1" എക്സിക്യൂട്ടും വ്യവസ്ഥ തെറ്റാണെങ്കിൽ "ബോഡി 2" എക്സിക്യൂട്ടും ചെയ്യുന്നു. ഈ ഓപ്ഷനും ഉണ്ട്:

എങ്കിൽ (അവസ്ഥ 1)(

) അല്ലാത്തപക്ഷം (വ്യവസ്ഥ 2) (

ഈ സാഹചര്യത്തിൽ, "കണ്ടീഷൻ 1" ശരിയാണെങ്കിൽ "ബോഡി 1" എക്സിക്യൂട്ട് ചെയ്യപ്പെടും, "കണ്ടീഷൻ 2" ശരിയാണെങ്കിൽ "ബോഡി 2" എക്സിക്യൂട്ട് ചെയ്യപ്പെടും. അത്തരം വ്യവസ്ഥകൾ എത്ര വേണമെങ്കിലും ഉണ്ടാകാം, മറ്റൊന്നും ഉണ്ടാകാം.

വ്യവസ്ഥകൾ ലളിതവും സംയുക്തവുമാകാം: ലളിതം - ഒരു ലോജിക്കൽ എക്സ്പ്രഷൻ, സംയുക്തം - ചിഹ്നത്താൽ ബന്ധിപ്പിച്ചിരിക്കുന്ന നിരവധി ലോജിക്കൽ എക്സ്പ്രഷനുകൾ & (ഈ ചിഹ്നത്താൽ ബന്ധിപ്പിച്ചിരിക്കുന്ന എല്ലാ വ്യവസ്ഥകളും ശരിയാണെങ്കിൽ വ്യവസ്ഥകൾ ശരിയാണ്) അല്ലെങ്കിൽ | (ഈ ചിഹ്നത്താൽ ബന്ധിപ്പിച്ചിട്ടുള്ള ഒരു വ്യവസ്ഥയെങ്കിലും ശരിയാണെങ്കിൽ ഒരു വ്യവസ്ഥ ശരിയാണ്).

മറ്റൊരു ഉപയോഗപ്രദമായ കാര്യം അഭിപ്രായങ്ങളാണ്. മറന്നുപോയ ഒരു പ്രോജക്റ്റ് കണ്ടുപിടിക്കാൻ അവർ നിങ്ങളെ സഹായിക്കും :) അല്ലെങ്കിൽ നിങ്ങൾ എന്തെങ്കിലും മറക്കാതിരിക്കുക. അടയാളങ്ങൾക്ക് ശേഷം നിങ്ങൾക്ക് അഭിപ്രായമിടാം // വരിയുടെ അവസാനം വരെ അല്ലെങ്കിൽ അടയാളങ്ങൾ ഉപയോഗിച്ച് ആരംഭിക്കുക /* അവസാനിക്കുകയും ചെയ്യും */ , ഈ സാഹചര്യത്തിൽ കമൻ്റ് എത്ര വരികൾ വേണമെങ്കിലും ആകാം. അഭിപ്രായങ്ങൾ പ്രോഗ്രാമിൻ്റെ വലുപ്പത്തെ ബാധിക്കില്ല.

ശരി, അതെല്ലാം അടിസ്ഥാനകാര്യങ്ങളെക്കുറിച്ചാണെന്ന് തോന്നുന്നു. ആദ്യമായി മതി (ലേഖനത്തിൻ്റെ അടുത്ത ഭാഗം എഴുതുന്നത് വരെ)

ആദ്യ പരിപാടി

നമുക്ക് പാരമ്പര്യങ്ങളിൽ നിന്ന് വ്യതിചലിക്കരുത് (അല്ലെങ്കിൽ നിങ്ങൾക്കറിയില്ല) ഹലോ വേൾഡിൽ നിന്ന് ആരംഭിക്കാം. വഴിയിൽ ഞങ്ങൾ മൈക്രോകൺട്രോളറുമായി പരിചയപ്പെടുകയും അനുഭവം നേടുകയും ചെയ്യും.

വികസന അന്തരീക്ഷം തുറക്കുക:

ക്ലിക്ക് ചെയ്യുക റിപ്പോസിറ്ററിയിൽ ബ്രൗസ് ചെയ്യുക

തിരഞ്ഞെടുക്കുക എസ്.ടി

അപ്പോൾ നമുക്ക് ബന്ധിപ്പിച്ച ലൈബ്രറികളുടെ ഒരു ലിസ്റ്റ് കാണാം.

ഞങ്ങളുടെ ലളിതമായ പ്രോഗ്രാമിനായി ഞങ്ങൾക്ക് ഇത് ആവശ്യമാണ്: CMSIS കോർ, CMSIS ബൂട്ട്, ആർ.സി.സി, ജിപിഐഒ.

ലൈബ്രറികൾ CMSIS കോർഒപ്പം CMSIS ബൂട്ട് -സിസ്റ്റത്തിലുള്ളവ, അവ ബന്ധിപ്പിച്ചിരിക്കണം

പുസ്തകശാല ആർ.സി.സിഒരു സമയ സംവിധാനത്തിൽ പ്രവർത്തിക്കുന്നതിന്

പുസ്തകശാല ജിപിഐഒ I/O പോർട്ടുകളിൽ പ്രവർത്തിക്കുന്നതിന്

ഇപ്പോൾ വിൻഡോയിൽ ഇടതുവശത്ത് പദ്ധതിഫയൽ തുറക്കുക മെയിൻ.സി.

ആദ്യം നമ്മുടെ ലൈബ്രറികൾ ബന്ധിപ്പിക്കേണ്ടതുണ്ട് (CMSIS കണക്റ്റുചെയ്യേണ്ടതില്ല).

ഞങ്ങൾ പ്രോഗ്രാമിൻ്റെ തുടക്കത്തിലേക്ക് പോയി വരികൾ ചേർക്കുക:

#ഉൾപ്പെടുത്തുക "stm32f10x_gpio.h"
#ഉൾപ്പെടുത്തുക "stm32f10x_rcc.h"

അസാധുവായ കാലതാമസം (int i) (
(; i != 0; i--);
}

അങ്ങനെ. ഇവിടെ ക്രമത്തിൽ, ഫംഗ്ഷൻ ഒന്നും തിരികെ നൽകുന്നില്ല, അതിനാൽ ശൂന്യം, പ്രവർത്തനത്തിൻ്റെ പേര് കാലതാമസം, ഉടൻ തന്നെ വേരിയബിൾ പ്രഖ്യാപിക്കുക തരം int. ചുരുണ്ട ബ്രേസുകളിൽ ഫംഗ്‌ഷൻ്റെ ബോഡി ഒരു ലൂപ്പാണ് വേണ്ടി. ഇതാണ് അദ്ദേഹത്തിൻ്റെ ലൈൻ എൻട്രി. പ്രാരംഭ മൂല്യം ഞങ്ങൾ മാറില്ല, ലൂപ്പ് വരെ പ്രവർത്തിക്കുന്നു പൂജ്യത്തിന് തുല്യമല്ല (അതുപോലെ പൂജ്യത്തിന് തുല്യമായി മാറുന്നു, സൈക്കിൾ നിർത്തുന്നു, പ്രവർത്തനം "ഓഫാക്കി"). ലൂപ്പ് ബോഡി (സൈക്കിൾ) ഓരോ നിർവ്വഹണത്തിലും, വേരിയബിൾ 1 കുറയുന്നു. അതായത് സൈക്കിളിൻ്റെ സാരാംശം ഒരേ എണ്ണം തവണ ആവർത്തിക്കുക എന്നതാണ് . ലൂപ്പ് പ്രവർത്തിക്കുമ്പോൾ, സമയം കടന്നുപോകുന്നു, കാലതാമസം സംഭവിക്കുന്നു.

MK-യുടെ ഡോക്യുമെൻ്റേഷനിൽ ഏത് ഔട്ട്‌പുട്ടിന് ഉത്തരവാദി ഏത് പോർട്ട് ആണ്:

പോർട്ട് സി ക്ലോക്ക് ചെയ്യാൻ, ലൈൻ ചേർക്കുക:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , പ്രാപ്തമാക്കുക);

പ്രോഗ്രാമിലേക്ക് ലൈൻ ചേർക്കുക:

GPIO_InitTypeDef GPIO_Init1;

ഈ വരി ഉപയോഗിച്ച് ഞങ്ങൾ ഘടന പ്രഖ്യാപിച്ചു GPIO_InitTypeDef- അതിന് ഒരു പേര് നൽകി GPIO_Initഞങ്ങളുടെ പ്രോഗ്രാമിൽ കൂടുതൽ ഉപയോഗിക്കുന്നതിന്.

ഈ ഘടനയിൽ എന്ത് പാരാമീറ്ററുകൾ ക്രമീകരിക്കാൻ കഴിയും, അവയ്ക്ക് എന്ത് രൂപമുണ്ട്, ഞങ്ങൾ എല്ലാം ഒരേ രീതിയിൽ നോക്കുന്നു stm32f10x_gpio.h:

ഇപ്പോൾ, ഘടന ഉപയോഗിച്ച് പിൻ പാരാമീറ്ററുകൾ ക്രമീകരിക്കുന്നതിന്, നിങ്ങൾ അതിൻ്റെ പേര് എഴുതേണ്ടതുണ്ട്, ഒരു ഡോട്ട് ഇടുക, ഈ പാരാമീറ്ററുകൾ സൂചിപ്പിച്ചിരിക്കുന്ന ഒരു വിൻഡോ ദൃശ്യമാകും.

അവയിലൊന്നിൽ ഇരട്ട-ക്ലിക്കുചെയ്യുക, അത് വരിയിൽ ദൃശ്യമാകും, തുടർന്ന് ഇടുക = (അസൈൻ) കൂടാതെ മൂല്യം എഴുതുക stm32f10x_gpio.h

എല്ലാ പാരാമീറ്ററുകളിലും ഞങ്ങൾ ഇത് ചെയ്യുന്നു. ഓരോ വരിയുടെയും അവസാനം അർദ്ധവിരാമം മറക്കരുത്!

GPIO_Init(GPIOC , &GPIO_Init);

ഇപ്പോൾ ഞങ്ങൾ കണ്ണടയ്ക്കും! ഞങ്ങൾ ചാക്രികമായി മിന്നിമറയും, ഞങ്ങൾ ഒരു ലൂപ്പിൽ ലൂപ്പ് ചെയ്യും സമയത്ത്.സൈക്കിളിൻ്റെ അവസ്ഥ 1 ആയിരിക്കും. ഒന്ന് എപ്പോഴും സത്യമാണ്, പൂജ്യം എപ്പോഴും തെറ്റാണ്... അതാണ് ഇത്...

ഔട്ട്പുട്ടിലേക്ക് കറൻ്റ് പ്രയോഗിക്കുന്നതിന്, നിങ്ങൾ ബിറ്റ് സജ്ജീകരിക്കേണ്ടതുണ്ട്, ഔട്ട്പുട്ട് ഓഫ് ചെയ്യാൻ, നിങ്ങൾ ബിറ്റ് പുനഃസജ്ജമാക്കേണ്ടതുണ്ട്. ഇത് എങ്ങനെ ചെയ്യാം - എല്ലാം ഒന്നുതന്നെയാണ് stm32f10x_gpio.h:

ഞങ്ങൾ ഇത് ചെയ്യുന്നു:

അതേസമയം (1)(

GPIO_SetBits(GPIOC, GPIO_Pin_9);

കാലതാമസം (200000);

GPIO_ResetBits(GPIOC, GPIO_Pin_9);

കാലതാമസം (200000);

1 എല്ലായ്പ്പോഴും ശരിയാണ്, അതായത് ലൂപ്പ് ലൂപ്പുചെയ്യും.

GPIO_SetBits - ബിറ്റ് ക്രമീകരണ പ്രവർത്തനം

GPIO_ResetBits - ബിറ്റ് റീസെറ്റ് പ്രവർത്തനം

കാലതാമസം (200000) - ഈ വരിയിൽ പ്രോഗ്രാം എക്സിക്യൂഷൻ ഒരു ഫംഗ്ഷനിലേക്ക് പോകുന്നു കാലതാമസം, സൈക്കിൾ അതേ ഒന്ന് വേണ്ടി. പരാൻതീസിസിലെ 200000 എന്ന സംഖ്യ ഈ ഫംഗ്‌ഷനിലേക്ക് ഒരു വേരിയബിളായി നൽകുന്നു . (ലൈൻ ഓർക്കുക അസാധുവായ കാലതാമസം (int i)?) കൂടാതെ ഈ ഫംഗ്ഷനിൽ ഒരേ ലൂപ്പ് എല്ലാ 200,000 തവണയും നടപ്പിലാക്കുന്നു. ഇത് വേഗതയുള്ളതാണ് :) സൈക്കിൾ അവസാനിച്ചതിന് ശേഷം വേണ്ടിപ്രവർത്തനം ഡിഎലേകാരണം അതിൻ്റെ ജോലി പൂർത്തിയാക്കുന്നു അവൾ ശൂന്യം, പിന്നീട് അത് ഒന്നും തിരികെ നൽകുന്നില്ല കൂടാതെ പ്രോഗ്രാം എക്സിക്യൂട്ട് ചെയ്യുന്നത് തുടരുന്നു.

കാരണം സമയത്ത്ലൂപ്പ് ചെയ്‌തിരിക്കുന്നു, തുടർന്ന് LED ഓൺ, കാലതാമസം, LED ഓഫ്, കാലതാമസം അനന്തമായ ലൂപ്പിൽ നടപ്പിലാക്കും. വൈദ്യുതി നിലയ്ക്കുന്നത് വരെ അല്ലെങ്കിൽ ഒരു തടസ്സം സംഭവിക്കുന്നത് വരെ (അതിനെക്കുറിച്ച് കൂടുതൽ അടുത്ത ലേഖനത്തിൽ).

ശരി, ആദ്യ പ്രോഗ്രാം തയ്യാറാണ്. ഇപ്പോൾ F7 അമർത്തുക, പ്രോഗ്രാം കംപൈൽ ചെയ്യുന്നു.

ഇപ്പോൾ നിങ്ങൾക്ക് ഒരു ഡീബഗ് ബോർഡ് ഉണ്ടെങ്കിൽ, ഒരു USB കോർഡ് ഉപയോഗിച്ച് അത് ബന്ധിപ്പിച്ച് അമർത്തുക ഫ്ലാഷിലേക്ക് കോഡ് ഡൗൺലോഡ് ചെയ്യുക. ചെയ്ത ജോലിയിലും നേടിയ അറിവിലും ഞങ്ങൾ സന്തുഷ്ടരാണ് :)

നിങ്ങൾക്ക് ഒരു ഡീബഗ് ബോർഡ് ഇല്ലെങ്കിൽ, മുമ്പ് നിർമ്മിച്ച അഡാപ്റ്റർ നിങ്ങളുടെ ബോർഡിലേക്കും അഡാപ്റ്റർ കമ്പ്യൂട്ടറിൻ്റെ COM പോർട്ടിലേക്കും ബന്ധിപ്പിക്കുക. അടുത്തതായി, ഔട്ട്പുട്ട് ബന്ധിപ്പിക്കുക ബൂട്ട് 0മൈക്രോകൺട്രോളറിൻ്റെ പോസിറ്റീവ് പവർ സപ്ലൈ ഉപയോഗിച്ച് മൈക്രോകൺട്രോളറിൻ്റെ പവർ ഓണാക്കുക. ഇത് മൈക്രോകൺട്രോളർ ഫേംവെയർ മോഡിൽ പ്രവേശിക്കാൻ ഇടയാക്കും. പൊതുവേ, ഫേംവെയർ നടപടിക്രമം സങ്കീർണ്ണമല്ല. നിങ്ങൾ ആപ്ലിക്കേഷൻ്റെ നിർദ്ദേശങ്ങൾ പാലിക്കേണ്ടതുണ്ട് ഫ്ലാഷ് ലോഡർ ഡെമോൺസ്ട്രേറ്റർ. ആദ്യം, നിങ്ങളുടെ മൈക്രോകൺട്രോളർ കണക്റ്റുചെയ്തിരിക്കുന്ന COM പോർട്ടിൻ്റെ എണ്ണവും വേഗതയും സൂചിപ്പിക്കുക. പരാജയങ്ങൾ ഒഴിവാക്കാൻ, കുറഞ്ഞ വേഗത തിരഞ്ഞെടുക്കുന്നതാണ് നല്ലത്

പ്രോഗ്രാം നിങ്ങളുടെ മൈക്രോകൺട്രോളർ കാണുകയാണെങ്കിൽ, ഒരു വിൻഡോ ദൃശ്യമാകും, അതിൽ എത്ര മെമ്മറി ഉണ്ടെന്ന് എഴുതപ്പെടും.

"അടുത്തത്" ക്ലിക്ക് ചെയ്ത ശേഷം, നിങ്ങൾ മെമ്മറി വിലാസ പേജ് കാണും. ഞങ്ങൾക്ക് അത് ആവശ്യമില്ല.

അടുത്ത ഘട്ടമാണ് ഏറ്റവും പ്രധാനം. നിങ്ങൾക്ക് മെമ്മറി ക്ലിയറിംഗ് അല്ലെങ്കിൽ ഫേംവെയർ തിരഞ്ഞെടുക്കാം

ഫേംവെയർ തിരഞ്ഞെടുക്കുക ഉപകരണത്തിലേക്ക് ഡൗൺലോഡ് ചെയ്യുകവയലിലും ഫയലിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്യുകഫോൾഡറിൽ സ്ഥിതി ചെയ്യുന്ന കംപൈൽ ചെയ്ത .hex ഫയൽ തിരഞ്ഞെടുക്കുക CooCox -> CooIDE -> വർക്ക്‌സ്‌പെയ്‌സ് -> project_name -> project_name -> ഡീബഗ് -> ബിൻ. തുടർന്ന് വീണ്ടും "അടുത്തത്" ക്ലിക്ക് ചെയ്യുക.

ഞങ്ങൾ ഈ വിൻഡോ കണ്ടതിനുശേഷം:

മൈക്രോകൺട്രോളറിലേക്കുള്ള പവർ ഓഫാക്കി അടയ്ക്കുക ഫ്ലാഷ് ലോഡർ ഡെമോൺസ്ട്രേറ്റർ, അഡാപ്റ്റർ വിച്ഛേദിക്കുക, മൈക്രോകൺട്രോളർ ഓണാക്കുക സാധാരണ നില(എപ്പോൾ ഓൺ ചെയ്യുമ്പോൾപിൻ BOOT 0 മൈക്രോകൺട്രോളറിൻ്റെ നെഗറ്റീവ് പവർ സപ്ലൈയുമായി ബന്ധിപ്പിച്ചിരിക്കുന്നു). ഞങ്ങൾ സന്തോഷിക്കുന്നു!

അതിനാൽ, STM മൈക്രോകൺട്രോളറുകൾ മറ്റുള്ളവരെക്കാൾ മികച്ചത് എന്തുകൊണ്ടാണെന്ന് ഇപ്പോൾ നമുക്കറിയാം, മൈക്രോകൺട്രോളർ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നമുക്കറിയാം, ഡീബഗ് ബോർഡിലും ഞങ്ങളുടെ ബോർഡിലും മൈക്രോകൺട്രോളർ എങ്ങനെ ഫ്ലാഷ് ചെയ്യാമെന്ന് നമുക്കറിയാം, പ്രോഗ്രാം ചെയ്യുന്നതിന് ആവശ്യമായ സി ഭാഷയുടെ അടിസ്ഥാനകാര്യങ്ങൾ ഞങ്ങൾക്കറിയാം. STM32, ഞങ്ങൾ മൈക്രോകൺട്രോളറുമായി പ്രവർത്തിച്ച അനുഭവം നേടിയിട്ടുണ്ട് (പ്രതീക്ഷയോടെ പോസിറ്റീവ്) ഏറ്റവും പ്രധാന കാര്യം ഇപ്പോൾ നിങ്ങൾക്ക് നിങ്ങളുടെ ആശയങ്ങൾ തിരിച്ചറിയാൻ കഴിയും എന്നതാണ് ഡിജിറ്റൽ ഉപകരണങ്ങൾജീവിതത്തിലേക്ക് (ഞങ്ങളുടെ പ്രിയപ്പെട്ട റേഡിയോകോട്ടിൽ അവരെക്കുറിച്ച് പറയുക)! അവ ഇപ്പോഴും ലളിതമായിരിക്കാം, പക്ഷേ എല്ലാം അനുഭവം കൊണ്ട് നിർമ്മിച്ചതാണ്. ഇനിപ്പറയുന്ന ലേഖനങ്ങളിൽ ഞാൻ ADC-കൾ, DAC-കൾ, തടസ്സങ്ങൾ, ഡീബഗ്ഗിംഗിൻ്റെ ഉപയോഗം, മറ്റ് ഉപയോഗപ്രദമായ കാര്യങ്ങൾ എന്നിവയെക്കുറിച്ച് സംസാരിക്കാൻ ശ്രമിക്കും.

ഈ ലേഖനത്തെക്കുറിച്ച് നിങ്ങൾ എന്താണ് ചിന്തിക്കുന്നത്?