खोज…


टिप्पणियों

यह खंड क्या stm32 का अवलोकन प्रदान करता है, और क्यों एक डेवलपर इसका उपयोग करना चाहता है।

यह भी stm32 के भीतर किसी भी बड़े विषयों का उल्लेख करना चाहिए, और संबंधित विषयों के लिए लिंक करना चाहिए। चूंकि stm32 के लिए दस्तावेज़ीकरण नया है, इसलिए आपको उन संबंधित विषयों के प्रारंभिक संस्करण बनाने की आवश्यकता हो सकती है।

एसटीएम 32 क्या है


STM32 एक 32-बिट फ्लैश माइक्रोकंट्रोलर परिवार है जिसे ST माइक्रोइलेक्ट्रॉनिक द्वारा विकसित किया गया है। यह ARM® Cortex® ARM M प्रोसेसर पर आधारित है और एक 32 range बिट उत्पाद रेंज प्रदान करता है जो बहुत ही उच्च प्रदर्शन, रीयल-टाइम क्षमताओं, डिजिटल सिग्नल प्रोसेसिंग और कम, पावर, कम operation वोल्टेज ऑपरेशन को जोड़ती है।

प्रत्येक श्रृंखला, विकास उपकरण और भाग संख्या डिकोडिंग के बारे में विस्तृत विवरण विकिपीडिया पर पाया जा सकता है।

उत्पादन श्रेणी

Cortex-M0 / -M0 + कॉर्टेक्स- एम 3 कॉर्टेक्स- एम 4 कॉर्टेक्स- M7
उच्च प्रदर्शन: STM32F2 STM32F4 एसटीएम 32 एफ 7 , एसटीएम 32 एच 7
मुख्यधारा: STM32F0 STM32F1 STM32F3
अल्ट्रा कम बिजली: STM32L0 STM32L1 STM32L4

विकास बोर्ड

STM32 न्यूक्लियो ( सक्षम सक्षम ) डिस्कवरी किट मूल्यांकन बोर्ड
विशिष्ट उपयोग के मामले: लचीले प्रोटोटाइप, समुदाय प्रोटोटाइप, रचनात्मक डेमो पूर्ण सुविधा मूल्यांकन
एक्सटेंशन संभावनाएं: +++ ++ ++
संपर्क: Arduino ™, ST, Morpho अनुसूचित जनजाति अनुसूचित जनजाति

संस्करण

संस्करण रिलीज़ की तारीख
1.0.0 2016/11/01

SW4STM32 और HAL लाइब्रेरी का उपयोग करके पलक एलईडी उदाहरण के साथ पहली बार सेटअप

( नोट: कई IDE, Toolchain और पुस्तकालय हैं जो STM32 के साथ तैयार हैं। निम्नलिखित सेटअप को इसे प्राप्त करने के लिए कम से कम प्रयास की आवश्यकता है, लेकिन यह कई में से केवल एक है। दूसरों का पता लगाने के लिए स्वतंत्र महसूस करें, यह नहीं है। इस उदाहरण का उद्देश्य किसी को भी उन उपकरणों का उपयोग करने के लिए मजबूर करना है जो यहां उपयोग किए जाएंगे।)


आईडीई स्थापना

STM32 के लिए सिस्टम कार्यक्षेत्र : विंडोज, लिनक्स और ओएस एक्स पर मुफ्त आईडीई। इसे AC6 द्वारा बनाया गया है और ओपनस्ट्रीम 32 समुदाय की वेबसाइट से पंजीकरण के बाद डाउनलोड के लिए उपलब्ध है।

आईडीई खुद ग्रहण पर आधारित है, लेकिन एसटीएम 32 के विकास के लिए कुछ अतिरिक्त के साथ आता है:

  • एसी 6 एसटीएम 32 एमसीयू जीसीसी टूलचैन
  • OpenOCD और GDB (हाथ-कोई- कोई-eBB -gdb) स्वचालित रूप से उत्पन्न डिबग कॉन्फ़िगरेशन लक्ष्य बोर्ड के आधार पर
  • अंतर्निहित विकल्पों में प्रोग्राम या चिप को मिटाने के लिए

अपना बोर्ड बनाने से पहले STM32 के साथ शुरू करने के लिए , एक डिस्कवरी , एक न्यूक्लियो या एक एवल बोर्ड के साथ प्रयोग करने की सिफारिश की जाती है, जो एसटी-लिंक नामक ऑन-बोर्ड एसडीडी (सीरियल वायर डिबग) प्रोग्रामर / डीबगर के साथ आता है।

एक परियोजना का निर्माण

यह उदाहरण STM32F4 डिस्कवरी किट का उपयोग करेगा, जिसमें एक STM32F407VG माइक्रोकंट्रोलर है। (किसी अन्य बोर्ड का भी इस्तेमाल किया जा सकता है।)

  1. SW4STM32 खोलें और एक नया C प्रोजेक्ट बनाएं: फ़ाइल → नया → C प्रोजेक्ट

  2. इसे "STM32F4_Discovery-Blinky" जैसा नाम दें और प्रोजेक्ट प्रकार सूची से निष्पादन योग्य / Ac6 STM32 MCU प्रोजेक्ट चुनें । डिफ़ॉल्ट रूप से एकमात्र उपलब्ध टूलचैन Ac6 STM32 MCU GCC है । अगला पर क्लिक करें।

    यहाँ छवि विवरण दर्ज करें

  3. अगला चरण डिबग / रिलीज़ सेटिंग्स है , अब अगला क्लिक करके छोड़ दिया जा सकता है।

  4. बोर्ड का चयन मौजूदा बोर्डों को चुना जा सकता है क्योंकि इस उदाहरण में STM32F4 डिस्कवरी या नए कस्टम बोर्ड जोड़े जा सकते हैं।

    यहाँ छवि विवरण दर्ज करें

  5. अगला कदम प्रोजेक्ट फर्मवेयर कॉन्फ़िगरेशन हैकोई फर्मवेयर , मानक परिधीय पुस्तकालय (एसपीएल) या हार्डवेयर एब्स्ट्रक्शन लेयर (एचएएल) के बीच चयन करें। यह सवाल किया जाता है कि विकास के लिए कौन अधिक उपयुक्त है, लेकिन यह प्रश्न इस उदाहरण के दायरे से बाहर है। यह उदाहरण HAL लाइब्रेरी का उपयोग करेगा क्योंकि यह वर्तमान में ST माइक्रोइलेक्ट्रॉनिक द्वारा समर्थित है। HAL के लिए अतिरिक्त उपलब्ध सॉफ़्टवेयर उपकरण STM32CubeMX है , जो एक इनिशियलाइज़ेशन कोड जनरेटर है। इसके अलावा कई उदाहरण अनुप्रयोग STM32CubeFx या STM32CubeLx सॉफ़्टवेयर पैकेजों द्वारा उपलब्ध हैं। लक्ष्य फर्मवेयर डाउनलोड करें यदि यह गायब है और यह अनुशंसा की जाती है कि "प्रोजेक्ट में निम्न स्तर के ड्राइवर जोड़ें" और "एप्लिकेशन में स्रोत के रूप में" विकल्प चुनें। अंत में, समाप्त पर क्लिक करें।

    यहाँ छवि विवरण दर्ज करें

एलईडी आवेदन पलक

जैसा कि यह प्रोजेक्ट STM32F4 डिस्कवरी के साथ बनाया गया है, पहले से ही / STM32F4_Discovery-Blinky / Utilities / STM32F4-Discovery / परियोजना फ़ोल्डर के तहत कई तैयार-से-उपयोग के कार्य हैं जो डिस्कवरी किट के बाह्य उपकरणों (एक्सीलरोमीटर, ऑडियो) को इंटरफ़ेस करने के लिए उपयोग किए जा सकते हैं , एलईडी, पुश बटन)। इस उदाहरण में void BSP_LED_Init(Led_TypeDef Led) और void BSP_LED_Toggle(Led_TypeDef Led) फ़ंक्शन का उपयोग stm32f4_discovery.c फ़ाइल से हरे रंग की LED को ब्लिंक करने के लिए किया जाएगा, जो कि LED4 । यह तय करने के लिए कि कौन सी एलईडी डिस्कवरी किट के स्कीमैटिक का उपयोग करती है।

यहाँ छवि विवरण दर्ज करें

वास्तविक पिन और पोर्ट नाम पहले से ही कुछ #define और enum द्वारा छिपे हुए हैं, उन्हें ट्रैक करने के लिए Ctrl + क्लिक का उपयोग करें

  1. main अंदर, HAL_Init() फ़ंक्शन को कॉल करें जो सभी बाह्य उपकरणों को रीसेट करता है, फ्लैश इंटरफ़ेस और सिस्टिक को प्रारंभ करता है। (पलक के लिए देरी उत्पन्न करने के लिए सिस्टिक का उपयोग किया जाएगा।)
  2. सिस्टम क्लॉक को कॉन्फ़िगर करना होगा। यह STM32CubeMX घड़ी कॉन्फ़िगरेशन सुविधा का उपयोग करके या संदर्भ मैनुअल द्वारा किया जा सकता है। इस उदाहरण में सिस्टम क्लॉक को आंतरिक PLL (फेज़ लॉक्ड लूप) द्वारा खिलाया जाता है, जिसे बाहरी 8 मेगाहर्ट्ज क्रिस्टल थरथरानवाला (HSE) द्वारा दिया जाता है। अधिकतम उपलब्ध आवृत्ति को प्राप्त करने के लिए प्रीस्कूलर निर्धारित किए गए हैं, जो एफ 4 डिस्कवरी के मामले में 168 मेगाहर्ट्ज है।
  3. इस मामले में, एक GPIO पिन, परिधीय का प्रारंभ।
  4. एक अंतहीन लूप के अंदर, एलईडी टॉगल और HAL_Delay() फ़ंक्शन को कॉल करें। HAL_Delay() का उपयोग करता है और Systick में देरी उत्पन्न करता है।

पूरा कोड निम्नलिखित है:

#include "stm32f4xx.h"
#include "stm32f4_discovery.h"
            
void SystemClock_Config(void);

int main(void)
{
    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();

    /* Configure the system clock */
    SystemClock_Config();

    /* Initialize one of the LED GPIO pin */
    BSP_LED_Init(LED4);

    while(1)
    {
        BSP_LED_Toggle(LED4);
        HAL_Delay(1000);       // in miliseconds
    }
}

/**
 * @brief  System Clock Configuration
 *         The system Clock is configured as follow :
 *            System Clock source            = PLL (HSE)
 *            SYSCLK(Hz)                     = 168000000
 *            HCLK(Hz)                       = 168000000
 *            AHB Prescaler                  = 1
 *            APB1 Prescaler                 = 4
 *            APB2 Prescaler                 = 2
 *            HSE Frequency(Hz)              = HSE_VALUE
 *            PLL_M                          = (HSE_VALUE/1000000u)
 *            PLL_N                          = 336
 *            PLL_P                          = 2
 *            PLL_Q                          = 7
 *            VDD(V)                         = 3.3
 *            Main regulator output voltage  = Scale1 mode
 *            Flash Latency(WS)              = 5
 * @param  None
 * @retval None
 */
void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;

  // Enable Power Control clock
  __PWR_CLK_ENABLE();

  // The voltage scaling allows optimizing the power consumption when the
  // device is clocked below the maximum system frequency, to update the
  // voltage scaling value regarding system frequency refer to product
  // datasheet.
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  // Enable HSE Oscillator and activate PLL with HSE as source
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

  // This assumes the HSE_VALUE is a multiple of 1MHz. If this is not
  // your case, you have to recompute these PLL constants.
  RCC_OscInitStruct.PLL.PLLM = (HSE_VALUE/1000000u);
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  // Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
  // clocks dividers
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK
      | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
}

हथौड़े से बनाएँ यहाँ छवि विवरण दर्ज करें , और प्रोजेक्ट फ़ोल्डर पर राइट क्लिक करके और टारगेट → प्रोग्राम चिप ... विकल्प को चुनकर एप्लिकेशन डाउनलोड करें।

डाउनलोड करने का एक और तरीका डीबग का उपयोग करने के साथ है। ऐसा करने के लिए बग आइकन के बगल में तीर पर क्लिक करें यहाँ छवि विवरण दर्ज करें टूलबार में और डिबग कॉन्फ़िगरेशन खोलें ... मेनू। एक नया Ac6 STM32 डिबगिंग कॉन्फ़िगरेशन बनाएं और यदि C / C ++ अनुप्रयोग फ़ील्ड रिक्त है, तो निम्न भरें:

डीबग \ STM32F4_Discovery-Blinky.elf

अन्य डीबग पैरामीटर जैसे कि ओपनओसीडी कॉन्फ़िगरेशन फ़ाइल और उपयोग किए गए टेलनेट और जीडीबी पोर्ट स्वचालित रूप से फ्रेमवर्क द्वारा उत्पन्न और भरे जाते हैं। अंत में, डीबग बटन पर क्लिक करें।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow