2017-02-13 24 views
7

द्वारा स्टैंडबाय से जाग गया मैं प्रोग्रामिंग STM32L051R8 और अगली समस्या है। मैं समय के अधिकांश हिस्सों में स्टैंडबाय मोड का उपयोग करने की कोशिश कर रहा हूं, और कभी-कभी आरटीसी द्वारा जागता हूं, यह एक ऑटो वेक-अप है। अगर मैं नींद के बिना काम करता हूं - सब कुछ पूरी तरह से काम करता है, तो मुझे हर बार एक आरटीसी बाधा मिलती है, लेकिन जब मैं स्टैंडबाय का उपयोग करता हूं - नहीं।एसटीएम 32 आरटीसी

अगर मैं अतिरिक्त उपयोग करते हैं, मैं एक अच्छा पहला चक्र है:

  1. रीसेट
  2. सेट आरटीसी
  3. स्टैंडबाय दर्ज
  4. लिए इंतज़ार कर रहे व्यवधान
  5. वेक-अप

लेकिन दूसरे और अगले चक्र स्टैंडबाय (3) में प्रवेश करने के तुरंत बाद जागते हैं।

+0

हार्ड बताने के लिए, तो यह अच्छा हो सकता है अगर आप अपने कोड दिखा सकता है, लेकिन ऐसा लगता है कि आप वेकअप ध्वज को साफ़ करना भूल गए हैं। –

+1

'__HAL_PWR_CLEAR_FLAG (PWR_FLAG_WU); 'ऐसा कुछ प्रारंभ होने पर गायब है। –

+0

ओह, बहुत बहुत धन्यवाद, मैंने आरटीसी में स्पष्ट झंडे की कोशिश की। मैं हल करने की तरह टिप्पणी की जांच नहीं कर सकता। यदि आप इसे उत्तर की तरह सही करते हैं, तो मैं इसे देख लूंगा। – luden

उत्तर

10

जब माइक्रोकंट्रोलर स्टैंडबाय मोड में है और एक आरटीसी बाधा उत्पन्न होती है से WUF-: वेकअप झंडाPWR control/status register (162 पेज) में हार्डवेयर द्वारा निर्धारित किया जाएगा।

बिट 0 से WUF-: वेकअप झंडा

इस बिट हार्डवेयर द्वारा निर्धारित और एक प्रणाली द्वारा मंजूरी दे दी है रीसेट या PWR बिजली नियंत्रण रजिस्टर में CWUF बिट की स्थापना करके (PWR_CR)

0 : नहीं Wakeup घटना

1 हुआ: एक वेकअप घटना WKUP पिन से या आरटीसी अलार्म (अलार्म एक या अलार्म बी), आरटीसी छेड़छाड़ घटना, आरटीसी टाइमस्टैम्प घटना या आरटीसी वेकअप) से प्राप्त किया गया था।

प्रारंभ में यह सिस्टम रीसेट द्वारा साफ़ किया गया है, यही कारण है कि आपका पहला चक्र ठीक है। लेकिन स्टैंडबाय से जागने के बाद आपको पीडब्लूआर नियंत्रण रजिस्टर में सीडब्ल्यूयूएफ बिट का उपयोग करके इसे मैन्युअल रूप से साफ़ करना होगा। यदि आप ऐसा नहीं करते हैं तो नियंत्रक एक बार जागृत हो जाएगा क्योंकि इस बिट संकेतों में जागृत घटना हुई थी।

आप इस बिट या एचएएल पुस्तकालय के साथ निम्न मैक्रो इस्तेमाल किया जा सकता सेट करने के लिए सीधे रजिस्टर का उपयोग कर सकते हैं:

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); 
संबंधित मुद्दे