arm NVIC_SystemReset() फंस गया जबकि लूप(STM32F302VB)



embedded (1)

मैं वर्तमान में एक STM32F302VB पर विकास कर रहा हूं और मुझे सॉफ़्टवेयर रीसेट करने की आवश्यकता है I मेरे सभी पिछली परियोजनाओं (STM32F427 और STM32F030C8 के साथ), मैंने हमेशा NVIC_SystemReset () फ़ंक्शन सफलतापूर्वक उपयोग किया है लेकिन किसी कारण से यह इस चिप के साथ काम नहीं करेगा। कार्यान्वयन सीएमएसआईएस core_cm4.h में है और निम्नानुसार है:

__STATIC_INLINE void NVIC_SystemReset(void)
{
  __DSB(); /* Ensure all outstanding memory accesses included buffered write are completed before reset */
  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |
             (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
             SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */
  __DSB();                                                     /* Ensure completion of memory access */
  while(1);                                                    /* wait until reset */
}

फ़ंक्शन को कहा जाता है और सभी निर्देश निष्पादित होते हैं, लेकिन यह लूप में फंस जाता है, और रीसेट कभी नहीं होता है। मुझे इसे फिर से JTAG के माध्यम से इसे उस राज्य से बाहर निकालने के लिए रीसेट करना होगा।

मैंने प्रोग्रामिंग मैनुअल की जांच की और कार्यान्वयन ठीक लग रहा है (यह आश्चर्यजनक नहीं है क्योंकि यह पूरी तरह से F4 और F0 पर काम करता है)

मैं सच में नहीं जानता कि समस्या क्या हो सकती है, क्या किसी को पता चलता है कि क्या हो रहा है?

संपादित करें: फ़ंक्शन अभी भी काम नहीं कर रहा है, लेकिन फ़ंक्शन फ़ंस होने के बाद, एक वैकल्पिक हल के रूप में, मैं nRST पिन को खींच कर और फिर ऊपर यह बदसूरत है, लेकिन यह अब के लिए काम करता है। मैं इसे सॉफ्टवेयर में हालांकि सब कुछ करना होगा।


टोनी के ने अपनी टिप्पणी में सही था, एनआरएसटी पिन को वास्तव में उच्चतर रूप से खींचा जा रहा था, क्योंकि रूटिंग गलती के कारण

और जो मैंने सोचा, इसके विपरीत, एनआरएसटी पिन को सॉफ़्टवेयर रीसेट में भी लिया जाता है: संदर्भ मैनुअल कहता है: "[रीसेट] सूत्र एनआरएसटी पिन पर काम करते हैं और यह हमेशा देरी के चरण में कम रहता है", इसलिए मुझे चाहिए ज्ञात था!

पुल-अप को हटाने से चाल चलती है, NVIC_SystemReset () फ़ंक्शन अब अपेक्षित काम करता है!

आपका बहुत बहुत धन्यवाद!