विषयसूची:

STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx): 5 कदम
STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx): 5 कदम

वीडियो: STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx): 5 कदम

वीडियो: STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx): 5 कदम
वीडियो: STM32F4 Programming in C 5- Accelerometer coding in Keil using STM32CubeMx 2024, जुलाई
Anonim
STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx)
STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx)
STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx)
STM32F4 डिस्कवरी बोर्ड और पायथन USART संचार (STM32CubeMx)

नमस्ते! इस ट्यूटोरियल में हम STM32F4 ARM MCU और Python (इसे किसी अन्य भाषा से बदला जा सकता है) के बीच USART संचार स्थापित करने का प्रयास करेंगे। तो चलो शुरू हो जाओ:)

चरण 1: सॉफ्टवेयर और हार्डवेयर आवश्यकताएँ

हार्डवेयर के संदर्भ में आपको चाहिए:

  • STM32F4 डिस्कवरी बोर्ड (या कोई अन्य STM32 बोर्ड)
  • यूएसबी से टीटीएल कनवर्टर

सॉफ्टवेयर के संदर्भ में:

  • STM32CubeMX
  • कील यूविज़न5
  • सीरियल लाइब्रेरी के साथ पायथन स्थापित

चरण 2: STM32CubeMX कॉन्फ़िगरेशन

आइए पहले समझते हैं कि हम क्या करना चाहते हैं। हम USART पर पायथन से बोर्ड को डेटा संचारित करना चाहते हैं और जांचते हैं कि क्या हमारे पास सही डेटा है और टॉगल का नेतृत्व किया गया है। इसलिए, हमें USART और LED को सक्षम करने की आवश्यकता है।

  • कनेक्टिविटी टैब से USART2 को सक्षम करें।

    • मोड को असिंक्रोनस में बदलें
    • बॉड दर 9600 बिट/सेकेंड
    • शब्द की लंबाई बिना समानता के 8 बिट तक
    • कोई समता बिट
    • DMA सेटिंग से USART2_RX को सिकुलर मोड में जोड़ें
    • NVIC सेटिंग्स से USART2 वैश्विक व्यवधान को सक्षम करें
  • PD12 पर क्लिक करके LED सक्षम करें

फिर कोड जेनरेट करें:)

चरण 3: कील सॉफ्टवेयर विकास

#शामिल

#शामिल

स्ट्रिंग संचालन में और बूलियन चर को परिभाषित करने के लिए इन पुस्तकालयों की आवश्यकता होगी।

/* उपयोगकर्ता कोड BEGIN 2 */ HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1); /* उपयोगकर्ता कोड समाप्ति 2 */

यहां, यूएआरटी प्राप्त डीएमए के साथ शुरू हुआ।

/* यूजर कोड BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {/* अप्रयुक्त तर्क (ओं) संकलन चेतावनी को रोकें */ UNUSED(huart); /* नोट: इस फ़ंक्शन को संशोधित नहीं किया जाना चाहिए, जब कॉलबैक की आवश्यकता होती है, तो उपयोगकर्ता फ़ाइल में HAL_UART_RxCpltCallback लागू किया जा सकता है */ if(data_buffer[0] != '\n'){ data_full[index_] = data_buffer[0]; अनुक्रमणिका_++; }अन्य{ अनुक्रमणिका_ = 0; समाप्त = 1; } //HAL_UART_Transmit(&huart2, data_buffer, 1, 10); } /* उपयोगकर्ता कोड समाप्ति 4 */

यह ISR है जो तब सक्रिय होता है जब हमें एक बाइट कैरेक्टर मिलता है। इसलिए। हम उस बाइट को प्राप्त करते हैं और इसे data_full पर लिखते हैं जिसमें पूर्ण प्राप्त डेटा होता है जब तक कि हमें '\ n' नहीं मिलता। जब हमें '\ n' मिलता है तो हम तैयार ध्वज 1 बनाते हैं और लूप में:

जबकि (1) {/* उपयोगकर्ता कोड समाप्त होने पर */ यदि (समाप्त) { अगर (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } मेमसेट (डेटा_फुल, '\ 0', स्ट्रेल (डेटा_फुल)); समाप्त = 0; }और{ _एनओपी (); } /* प्रयोक्ता कोड प्रारंभ ३ */ }

यदि समाप्त ध्वज उच्च है तो हम पूर्ण प्राप्त डेटा और डेटा की सामग्री की तुलना करते हैं जो हम चाहते हैं और यदि वे बराबर हैं तो हम नेतृत्व में टॉगल करते हैं। उसके बाद हम समाप्त ध्वज को साफ़ करते हैं और नए डेटा की प्रतीक्षा करते हैं और सरणी को अधिलेखित न करने के लिए data_full सरणी को भी साफ़ करते हैं।

चरण 4: पायथन सॉफ्टवेयर विकास

इसलिए, यहां हम अंत में '/n' के साथ अपना नंबर भेजना चाहते हैं, क्योंकि कील सॉफ्टवेयर को अंत जानने के लिए इसे देखना होगा।

आयात धारावाहिक

ser = serial. Serial('COM17') # डिवाइस मैनेजर से अपने डिवाइस पर उस पोर्ट की जांच करें

सेर.लिखें (बी'24\n')

हर बार जब आप '24\n' भेजते हैं तो आपको यह देखना चाहिए कि एलईडी टॉगल करता है। अगर आप कुछ और भेजते हैं तो इसका असर नहीं होना चाहिए।

चरण 5: निष्कर्ष

हम ट्यूटोरियल के अंत तक पहुँच चुके हैं। यदि आपको कोई समस्या या प्रश्न है तो कृपया पूछने में संकोच न करें। मुझसे जितना हो सकेगा मदद करने की कोशिश करूंगा। आपका बहुत बहुत धन्यवाद:)

सिफारिश की: