- ST- लिंक V2
- STM32CubeMX
- सामग्री की आवश्यकता
- सर्किट आरेख और कनेक्शन
- Keil uVision और ST-Link का उपयोग करके STM32 में एक प्रोग्राम बनाना और जलाना
- केइएल प्रोग्राम्ड एसटीएम 32 बोर्ड का आउटपुट
- कार्यक्रम
STM32 माइक्रोकंट्रोलर जो ARM Cortex M आर्किटेक्चर का उपयोग करते हैं, अब लोकप्रिय हो रहे हैं और इसकी विशेषता, लागत और प्रदर्शन के कारण कई अनुप्रयोगों में उपयोग किए जाते हैं। हमने अपने पिछले ट्यूटोरियल में Arduino IDE का उपयोग करके STM32F103C8 को प्रोग्राम किया है। Arduino IDE के साथ प्रोग्रामिंग STM32 सरल है, क्योंकि किसी भी कार्य को करने के लिए विभिन्न सेंसरों के लिए बहुत सारी लाइब्रेरी उपलब्ध हैं, हमें बस उन पुस्तकालयों को प्रोग्राम में जोड़ने की आवश्यकता है। यह एक आसान प्रक्रिया है और आप एआरएम प्रोसेसर के बारे में गहराई से नहीं जान सकते हैं। इसलिए अब हम प्रोग्रामिंग के अगले स्तर में आ रहे हैं जिसे एआरएम प्रोग्रामिंग कहा जाता है। इसके द्वारा हम न केवल कोड की अपनी संरचना में सुधार कर सकते हैं, बल्कि अनावश्यक पुस्तकालयों का उपयोग करके मेमोरी स्पेस को भी बचा सकते हैं।
STMicroelectronics ने STM32Cube MX नामक एक उपकरण पेश किया, जो परिधीय और चयनित STM32 बोर्ड के अनुसार मूल कोड उत्पन्न करता है। इसलिए हमें बुनियादी ड्राइवरों और बाह्य उपकरणों के लिए कोडिंग के बारे में चिंता करने की आवश्यकता नहीं है। आगे इस उत्पन्न कोड का उपयोग आवश्यकता के अनुसार संपादन के लिए Keil uVision में किया जा सकता है। और अंत में STMicroelectronics से ST-Link प्रोग्रामर का उपयोग करके कोड को STM32 में जला दिया जाता है।
इस ट्यूटोरियल में हम सीखेंगे कि कैसे एक धक्का बटन और एसटीएम 3 एफ 103 सी 8 ब्लू पिल बोर्ड के साथ एलईडी की जगह की एक साधारण परियोजना करके केइल uVision और STM32CubeMX का उपयोग करके STM32F103C8 को कैसे प्रोग्राम किया जाए । हम STM32Cube MX का उपयोग करके कोड उत्पन्न करेंगे और फिर Keil uVision का उपयोग करके कोड को STM32F103C8 पर संपादित करें और अपलोड करें। विस्तार में जाने से पहले, हम सबसे पहले ST-LINK प्रोग्रामर और STM32CubeMX सॉफ्टवेयर टूल के बारे में जानेंगे ।
ST- लिंक V2
ST-लिंक / V2 एक में सर्किट डिबगर और प्रोग्रामर है STM8 और STM32 माइक्रोकंट्रोलर परिवारों के लिए। हम इस ST-LINK का उपयोग करके STM32F103C8 और अन्य STM8 और STM32 माइक्रोकंट्रोलर्स को कोड अपलोड कर सकते हैं। सिंगल वायर इंटरफ़ेस मॉड्यूल (SWIM) और JTAG / सीरियल वायर डिबगिंग (SWD) इंटरफेस का उपयोग किसी भी STM8 या STM32 माइक्रोकंट्रोलर के साथ एक एप्लीकेशन बोर्ड पर संचार करने के लिए किया जाता है। चूंकि STM32 अनुप्रयोग Atollic, IAR, Keil या TASKING एकीकृत विकास वातावरण के साथ संवाद करने के लिए USB फुल-स्पीड इंटरफ़ेस का उपयोग करते हैं, इसलिए हम इस हार्डवेयर का उपयोग STM 8 और STM32 माइक्रोकंट्रोलर को प्रोग्राम करने के लिए कर सकते हैं।
ऊपर STMicroelectronics से ST-LINK V2 डोंगल की छवि है जो STM32 SWD डिबगिंग इंटरफ़ेस, एक साधारण 4-वायर इंटरफ़ेस (पावर सहित) की पूरी श्रृंखला का समर्थन करता है, तेज और स्थिर। यह कई तरह के रंगों में उपलब्ध है। शरीर एल्यूमीनियम मिश्र धातु से बना है। इसका एक नीला एलईडी संकेत है क्योंकि इसका उपयोग ST-LINK की कार्यशील स्थिति को देखने के लिए किया जाता है। पिन नाम स्पष्ट रूप से शेल पर चिह्नित हैं जैसा कि हम उपरोक्त छवि में देख सकते हैं। यह केइएल सॉफ्टवेयर के साथ हस्तक्षेप किया जा सकता है जहां कार्यक्रम को एसटीएम 32 माइक्रोकंट्रोलर्स पर फ्लैश किया जा सकता है। तो आइए इस ट्यूटोरियल में देखें कि कैसे STM32 माइक्रोकंट्रोलर को प्रोग्राम करने के लिए इस ST-LINK प्रोग्रामर का उपयोग किया जा सकता है । नीचे की छवि ST-LINK V2 मॉड्यूल के पिन दिखाती है।
नोट: जब पहली बार कंप्यूटर के साथ ST-Link कनेक्ट कर रहा है। हमें डिवाइस ड्राइवर को इंस्टॉल करने की आवश्यकता है। डिवाइस ड्राइवर आपके ऑपरेटिंग सिस्टम के अनुसार इस लिंक में पाए जा सकते हैं।
STM32CubeMX
STM32CubeMX टूल STMicroelectronics STMCube का हिस्सा है। यह सॉफ्टवेयर टूल विकास के प्रयासों, समय और लागत को कम करके विकास को आसान बनाता है। STM32Cube में STM32CubeMX शामिल है जो एक ग्राफिकल सॉफ्टवेयर कॉन्फ़िगरेशन टूल है, जो ग्राफिकल विज़ार्ड्स का उपयोग करके C इनिशियलाइज़ेशन कोड की पीढ़ी को अनुमति देता है। उस कोड का उपयोग विभिन्न विकास वातावरणों में किया जा सकता है जैसे keil uVision, GCC, IAR आदि। आप इस टूल को निम्न लिंक से डाउनलोड कर सकते हैं।
STM32CubeMX में निम्नलिखित विशेषताएं हैं
- पिन आउट-संघर्ष सॉल्वर
- एक घड़ी के पेड़ की स्थापना सहायक
- एक बिजली की खपत कैलकुलेटर
- GPIO पिन, USART आदि जैसे MCU परिधीय विन्यास का प्रदर्शन करने वाली एक उपयोगिता
- USB, TCP / IP आदि जैसे मिडलवेयर स्टैक के लिए MCU परिधीय कॉन्फ़िगरेशन प्रदर्शन करने वाली एक उपयोगिता
सामग्री की आवश्यकता
हार्डवेयर
- STM32F103C8 ब्लू पिल बोर्ड
- ST- लिंक V2
- बटन दबाओ
- एलईडी
- ब्रेड बोर्ड
- जम्पर तार
सॉफ्टवेयर
- STM32CubeMX कोड जनरेशन टूल (लिंक)
- Keil uVision 5 (लिंक)
- ST-Link V2 के लिए ड्राइवर (लिंक)
सर्किट आरेख और कनेक्शन
नीचे सर्किट डायग्राम है बस एक पुशबटन का उपयोग करके एसटीएम 32 बोर्ड के साथ एक एलईडी कनेक्ट करें ।
ST-LINK V2 और STM32F103C8 के बीच संबंध
यहां STM32 ब्लू पिल बोर्ड ST-LINK से संचालित होता है जो कंप्यूटर के USB पोर्ट से जुड़ा होता है। इसलिए हमें एसटीएम 32 को अलग से बिजली देने की आवश्यकता नहीं है। नीचे दी गई तालिका एसटी-लिंक और ब्लू पिल बोर्ड के बीच संबंध को दर्शाती है।
STM32F103C8 |
ST- लिंक V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
३ वी ३ |
3.3 |
एलईडी और पुश बटन
ब्लू पिल बोर्ड से आउटपुट को इंगित करने के लिए एलईडी का उपयोग किया जाता है जब एक पुश बटन दबाया जाता है। LED का एनोड ब्लू पिल बोर्ड के पिन PC13 से जुड़ा होता है और कैथोड ग्राउंडेड होता है।
ब्लू पिल बोर्ड के पिन PA1 को इनपुट प्रदान करने के लिए एक पुश बटन जुड़ा हुआ है। हमें मूल्य 10k के पुल-अप रेसिस्टर का भी उपयोग करना चाहिए क्योंकि बटन जारी होने पर पिन बिना किसी इनपुट के चल सकता है। पुश बटन का एक सिरा जमीन से जुड़ा होता है और दूसरा छोर PA1 पिन करने के लिए और 10k का पुल अप अवरोधक भी ब्लू पिल बोर्ड के 3.3V से जुड़ा होता है।
Keil uVision और ST-Link का उपयोग करके STM32 में एक प्रोग्राम बनाना और जलाना
चरण 1: - सबसे पहले ST-LINK V2, सॉफ़्टवेयर टूल्स STM32Cube MX और Keil uVision के लिए सभी डिवाइस ड्राइवर स्थापित करें और STM32F103C8 के लिए आवश्यक पैकेज स्थापित करें।
चरण 2: - दूसरा चरण खुला है >> STM32Cube MX
स्टेप 3: - इसके बाद न्यू प्रोजेक्ट पर क्लिक करें
चरण 4: - इसके बाद हमारे माइक्रोकंट्रोलर STM32F103C8 को खोजें और चुनें
चरण 5: - अब STM32F103C8 का पिन-आउट स्केच दिखाई देता है, यहाँ हम पिन कॉन्फ़िगरेशन सेट कर सकते हैं। हम अपनी परियोजना के अनुसार परिधीय खंड में अपने पिन भी चुन सकते हैं।
चरण 6: - आप सीधे पिन पर भी क्लिक कर सकते हैं और एक सूची दिखाई देती है, अब आवश्यक पिन कॉन्फ़िगरेशन चुनें।
चरण 7: - हमारी परियोजना के लिए हमने GPIO INPUT, PC13 को GPIO OUTPUT & SYS डिबग के रूप में SERIAL WIRE के रूप में चुना है, यहाँ केवल हम ST-LINK SWCLK & SWDIO पिन कनेक्ट करते हैं। चयनित और कॉन्फ़िगर किए गए पिन GREEN रंग में दिखाई देते हैं । आप इसे नीचे दी गई छवि में नोट कर सकते हैं।
चरण 8: - कॉन्फ़िगरेशन टैब के तहत , हमारे द्वारा चयनित पिन के लिए GPIO पिन कॉन्फ़िगरेशन सेट करने के लिए GPIO का चयन करें।
चरण 9: - इस पिन कॉन्फ़िगरेशन बॉक्स के आगे हम पिन का उपयोग करने के लिए उपयोगकर्ता लेबल को कॉन्फ़िगर कर सकते हैं, जो कि उपयोगकर्ता परिभाषित पिन नाम है।
Step 10: - उसके बाद Project >> Generate Code पर क्लिक करें ।
चरण 11: - अब प्रोजेक्ट सेटिंग्स डायलॉग बॉक्स दिखाई देता है। इस बॉक्स में अपने प्रोजेक्ट का नाम और स्थान चुनें और विकास के वातावरण का चयन करें। हम Keil का उपयोग कर रहे हैं इसलिए IDE के रूप में MDK-ARMv5 चुनें ।
चरण 12: - के तहत अगला कोड जेनरेटर टैब, चयन कॉपी केवल आवश्यक पुस्तकालय फ़ाइलें और फिर ठीक क्लिक करें।
Step 13: - अब कोड जनरेशन डायलॉग बॉक्स दिखाई देता है। स्वचालित रूप से Keil uvsion में उत्पन्न कोड को खोलने के लिए ओपन प्रोजेक्ट का चयन करें ।
चरण 14: - अब Keil uVision टूल हमारे उत्पन्न कोड के साथ STM32CubeMx में एक ही प्रोजेक्ट नाम के साथ आवश्यक लाइब्रेरी और कोड के साथ खुलता है जो हमारे द्वारा चुने गए पिन के लिए कॉन्फ़िगर किए गए हैं।
चरण 15: - अब हमें बस आउटपुट एलईडी (पिन PC13) पर कुछ कार्रवाई करने के लिए तर्क को शामिल करना होगा जब बटन दबाया जाता है और GPIO इनपुट (पिन PA1) पर जारी किया जाता है। इसलिए कुछ कोड को शामिल करने के लिए हमारे main.c प्रोग्राम को चुनें ।
चरण 16: - अब कोड को जबकि (1) लूप में जोड़ें, नीचे दी गई छवि देखें जहां मैंने उस अनुभाग को उजागर किया था जो कोड को लगातार चलाता है।
जबकि (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS बटन दबाया गया है {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1)। // जब बटन दबाया जाता है तो आउटपुट अधिक करने के लिए) और {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // आउटपुट कम करने के लिए जब बटन दबाया गया}}
चरण 17: - कोड को समाप्त करने के बाद, डीबग टैब के तहत लक्ष्य आइकन के विकल्प पर क्लिक करें ST-LINK डीबगर का चयन करें
इसके अलावा, सेटिंग बटन पर क्लिक करें और फिर फ्लैश डाउनलोड टैब के नीचे रीसेट और रन चेक बॉक्स पर टिक करें और 'ओके' पर क्लिक करें।
Step 18: - अब सभी टारगेट फाइल्स को फिर से बनाने के लिए Rebuild आइकन पर क्लिक करें ।
चरण 19: - अब आप सर्किट कनेक्शन के साथ कंप्यूटर में ST-LINK को प्लग इन कर सकते हैं और DOWNLOAD आइकन पर क्लिक करें या F8 दबाएं और STM32F103C8 को आपके द्वारा तैयार किए गए कोड के साथ फ्लैश करें और संपादित करें।
चरण 20: - आप केइल uVision विंडो के तल पर चमकती संकेत को देख सकते हैं।
केइएल प्रोग्राम्ड एसटीएम 32 बोर्ड का आउटपुट
अब जब हम पुश बटन दबाते हैं, तो एलईडी चालू होता है और जब हम इसे जारी करते हैं, तो एलईडी बंद हो जाता है।
कार्यक्रम
उत्पन्न कार्यक्रम में हमने जो मुख्य भाग जोड़ा है, वह नीचे दिखाया गया है। यह नीचे कोड STM32CubeMX द्वारा उत्पन्न main.c कार्यक्रम के (1 ) में शामिल किए जाने की आवश्यकता है। आप जानने के लिए कि यह कैसे में जोड़ा जाना चाहिए कदम से 17 चरण 15 में वापस जा सकते main.c कार्यक्रम।
जबकि (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS बटन दबाया गया है {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1)। // जब बटन दबाया जाता है तो आउटपुट अधिक करने के लिए) और {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // आउटपुट कम करने के लिए जब बटन दबाया गया}}
STM32 बोर्ड में प्रोजेक्ट बनाने और अपलोड करने की पूरी प्रक्रिया भी अंत में दिए गए वीडियो में बताई गई है । इसके अलावा main.c फ़ाइल का पूरा कोड ऊपर दिए गए कोड सहित नीचे दिया गया है।
इसके अलावा, आप हमारे STM32 परियोजनाओं का पूरा सेट यहाँ पा सकते हैं।