UM3029 گھٽ پرت ڊرائيور

پيداوار جي ڄاڻ

پراڊڪٽ HAL (هارڊويئر ايبسٽرڪشن ليئر) ڊرائيورن جو هڪ سيٽ آهي
STM32C0 microcontrollers لاء. HAL ڊرائيورن جي ھڪڙي سيٽ تي مشتمل آھي
سڀ کان وڌيڪ عام پردي خاصيتن کي ڍڪيندڙ افعال ۽ آهن
APIs جو هڪ ڀرپور سيٽ پيش ڪرڻ ۽ آساني سان رابطو ڪرڻ لاءِ ٺهيل آهي
اپليڪيشن جي مٿين پرت. هر ڊرائيور هڪ عام API طرفان هلائي ٿو
جيڪو ڊرائيور جي جوڙجڪ، افعال، ۽ پيٽرولر کي معياري ڪري ٿو
نالا HAL ڊرائيورن ۾ ڊرائيور ماڊلز جو هڪ سيٽ، هر ماڊل شامل آهن
ھڪڙي اسٽينڊل پردي يا فنڪشنل موڊ سان ڳنڍيل آھي.

مخففات ۽ وصفون

مخفف وصف
ADC اينالاگ کان ڊجيٽل ڪنورٽر
ANSI آمريڪي قومي معيار انسٽيٽيوٽ
API ايپليڪيشن پروگرامنگ انٽرفيس
بي ايس پي بورڊ سپورٽ پيڪيج
CMSIS Cortex microcontroller سافٽ ويئر انٽرفيس معياري
سي پي يو مرڪزي پروسيسنگ يونٽ
سي آر سي سي آر سي حساب ڪتاب يونٽ
سي ايس ايس ڪلاڪ سيڪيورٽي سسٽم
ڊي ايل بي دير بلاڪ
ڊي ايم اي سڌو ميموري رسائي
ڊي ايم ايم ايڪس ترقي يافته ڪنٽرول، عام مقصد يا بنيادي ٽائمر
EXTI يونيورسل هم وقت ساز رسيور/ٽرانسميٽر
فليش يونيورسل هم وقت ساز رسيور/ٽرانسميٽر
GPIO جلدtage حوالو بفر
HAL هارڊويئر خلاصو پرت
I2C انٽيگريڊ سرڪٽ
آئي 2 ايس انٽيگريٽيڊ انٽرچپ آواز
ICACHE هدايتون ڪيش
IRDA انفراريڊ ڊيٽا ايسوسيئيشن
ڊبليو ايڇ آزاد نگران
ايم سي او مائڪرو ڪنٽرولر ڪلاڪ آئوٽ
ايم پي يو ميموري تحفظ يونٽ
ايم ايس پي مکيه اسٽيڪ پوائنٽر
NVIC Nested vectored interrupt controller
پيپلز پارٽي پردي / ماڊل ڊرائيور جو نالو
PWR پاور ڪنٽرول
آر سي سي ري سيٽ ۽ ڪلاڪ ڪنٽرول
آر ٽي سي حقيقي وقت جي گھڙي
SMBUS سسٽم مينيجمينٽ بس
SPI سيريل پرديئر انٽرفيس
SRAM جامد بي ترتيب رسائي ياداشت
SysTick سسٽم ٽڪ ٽائمر
ٽِم ٽائمر
UART يونيورسل هم وقت ساز رسيور/ٽرانسميٽر
يو ايس آر ٽي يونيورسل هم وقت ساز رسيور/ٽرانسميٽر
VREFBUF جلدtage حوالو بفر
ڊبليو ڊبليو ڊبليو پي درٻار جي نگراني

پيداوار جي استعمال جون هدايتون

پيداوار کي استعمال ڪرڻ لاء، انهن قدمن تي عمل ڪريو:

  1. مان ضروري سافٽ ويئر ڊائون لوڊ ۽ انسٽال ڪريو
    ايس ٽي مائڪرو اليڪٽرانڪس webسائيٽ.
  2. ضروري HAL ڊرائيور شامل ڪريو files توهان جي پروجيڪٽ ۾، جهڙوڪ
    stm32c0xx_hal_ppp.c, stm32c0xx_hal_ppp.h, stm32c0xx_hal_ppp_ex.c,
    ۽ stm32c0xx_hal_ppp_ex.h.
  3. استعمال ڪندي HAL ڊرائيورن کي شروع ڪريو stm32c0xx_hal.c ۽
    stm32c0xx_hal.h files.
  4. HAL ڊرائيورن پاران مهيا ڪيل معياري APIs استعمال ڪريو
    STM32C0 microcontroller تي پردي سان لهه وچڙ.
  5. خاص تي وڌيڪ معلومات لاءِ استعمال ڪندڙ مينوئل ڏانهن رجوع ڪريو
    APIs ۽ پردي خاصيتون.

يو ايم 3029
استعمال ڪندڙ دستي
STM32C0 HAL ۽ گھٽ-پرت ڊرائيور جي وضاحت
تعارف
STM32Cube هڪ STMicroelectronics اصل شروعات آهي جنهن ۾ ترقي جي ڪوشش، وقت ۽ قيمت کي گهٽائڻ سان ڊولپر جي پيداوار کي خاص طور تي بهتر بڻائي سگهجي ٿو. STM32Cube STM32 پورٽ فوليو کي ڍڪي ٿو. STM32Cube ۾ شامل آهن: · STM32CubeMX، هڪ گرافڪ سافٽ ويئر ترتيب ڏيڻ وارو اوزار جيڪو گرافڪ استعمال ڪندي C شروعاتي ڪوڊ جي نسل جي اجازت ڏئي ٿو
جادوگر · هڪ جامع ايمبيڊڊ سافٽ ويئر پليٽ فارم، ڊيليور ڪيل في سيريز (جهڙوڪ STM32CubeC0 STM32C0 سيريز لاءِ)
STM32Cube HAL، STM32 تجريدي پرت ايمبيڊڊ سافٽ ويئر STM32 پورٽ فوليو ۾ وڌ کان وڌ پورٽبلٽي کي يقيني بڻائي ٿي. HAL APIs موجود آهن سڀني پردي لاءِ.
گھٽ-پرت APIs (LL) پيش ڪري ٿو ھڪڙو تيز ھلڪو وزن جي ماهر تي مبني پرت جيڪو HAL کان وڌيڪ هارڊويئر جي ويجھو آھي. LL APIs صرف پردي جي ھڪڙي سيٽ لاءِ موجود آھن.
مڊل ويئر اجزاء جو هڪ مسلسل سيٽ جهڙوڪ Azure® RTOS ThreadX، FileX ۽ LevelX HAL ڊرائيور پرت اپر پرت (ايپليڪيشن، لائبريري ۽ اسٽيڪ) سان رابطي لاءِ APIs (ايپليڪيشن پروگرامنگ انٽرفيس) جو هڪ سادو، عام ملٽي انسٽنس سيٽ مهيا ڪري ٿي. HAL ڊرائيور APIs کي ٻن ڀاڱن ۾ ورهايو ويو آھي: عام APIs، جيڪي سڀني STM32 سيريز ۽ ايڪسٽينشن APIs لاءِ عام ۽ عام افعال مهيا ڪن ٿا، جن ۾ ڏنل لائن يا پارٽ نمبر لاءِ مخصوص ۽ ڪسٽمائيز افعال شامل آھن. HAL ڊرائيورن ۾ استعمال لاءِ تيار APIs جو هڪ مڪمل سيٽ شامل آهي جيڪو صارف جي ايپليڪيشن جي عمل کي آسان بڻائي ٿو. مثال طورample، ڪميونيڪيشن پرديئرز ۾ APIs شامل آهن پردي کي شروع ڪرڻ ۽ ترتيب ڏيڻ، پولنگ موڊ ۾ ڊيٽا جي منتقلي کي منظم ڪرڻ، مداخلت يا DMA کي سنڀالڻ، ۽ مواصلاتي غلطين کي منظم ڪرڻ. HAL ڊرائيور IP-oriented جي بدران خصوصيت تي مبني آهن. مثال طورampلي، ٽائمر APIs کي IP افعال جي پٺيان ڪيترن ئي ڀاڱن ۾ ورهايو ويو آھي، جھڙوڪ بنيادي ٽائمر، ڪيپچر ۽ پلس ويڊٿ ماڊلوليشن (PWM). HAL ڊرائيور پرت سڀني ڪمن جي ان پٽ ويلز کي جانچڻ سان رن ٽائم ناڪامي جي سڃاڻپ کي لاڳو ڪري ٿي. اهڙي متحرڪ چيڪنگ فرم ویئر جي مضبوطي کي وڌائي ٿي. رن-ٽائم ڳولڻ پڻ مناسب آهي صارف جي ايپليڪيشن ڊولپمينٽ ۽ ڊيبگنگ لاءِ. ايل ايل ڊرائيور هارڊويئر خدمتون پيش ڪن ٿا STM32 پرديئرز جي دستياب خاصيتن جي بنياد تي. اهي خدمتون بلڪل هارڊويئر جي صلاحيتن کي ظاهر ڪن ٿيون، ۽ ايٽمي آپريشنز مهيا ڪن ٿيون جيڪي پراڊڪٽ لائين ريفرنس مينوئل ۾ بيان ڪيل پروگرامنگ ماڊل جي پيروي ڪندي سڏجڻ گهرجن. نتيجي طور، ايل ايل خدمتون اسٽينڊل پروسيس تي ٻڌل نه آهن ۽ انهن جي رياستن، انسداد يا ڊيٽا پوائنٽرز کي بچائڻ لاء ڪنهن به اضافي ميموري وسيلن جي ضرورت ناهي. سڀني عملن کي لاڳاپيل پردي جي رجسٽر جي مواد کي تبديل ڪندي انجام ڏنو ويو آهي. HAL جي برعڪس، LL APIs پرديئرز لاءِ مهيا نه ڪيا ويا آهن جن جي لاءِ بهتر رسائي هڪ اهم خصوصيت نه آهي، يا انهن لاءِ جن کي ڳري سافٽ ويئر ترتيب ۽/يا پيچيده اپر-ليول اسٽيڪ جي ضرورت آهي. HAL ۽ LL مڪمل آهن ۽ ايپليڪيشن گهرجن جي هڪ وسيع رينج کي ڍڪيندا آهن: · HAL اعلي سطحي ۽ خصوصيت تي مبني APIs پيش ڪري ٿو هڪ اعلي-پورٽيبلٽي ليول سان. اهي MCU ۽ پردي کي لڪائيندا آهن
آخري استعمال ڪندڙ کان پيچيدگي. · LL پيش ڪري ٿو گهٽ-سطح APIs رجسٽري سطح تي، بهتر اصلاح سان پر گهٽ پوربلٽي. ان لاءِ گهڻي ڄاڻ جي ضرورت آهي
MCU ۽ پردي جي وضاحت. HAL- ۽ LL-ڊرائيور سورس ڪوڊ سخت ANSI-C ۾ ترقي ڪئي وئي آھي، جيڪا ان کي ڊولپمينٽ ٽولز کان آزاد بڻائي ٿي. اهو چيڪ ڪيو ويو آهي CodeSonar® جامد تجزياتي اوزار سان. اهو مڪمل طور تي دستاويز ٿيل آهي. اهي MISRA C®: 2012 معيار سان مطابقت رکن ٿا. ھي يوزر مينوئل ھيٺ ڏنل آھي: · ختمview HAL ڊرائيورن جو · اوورview گھٽ-پرت ڊرائيورن جي · HAL ۽ LL ڊرائيورن جي گڏ ٿيڻ · هر پردي جي ڊرائيور جو تفصيلي بيان: ٺاھ جوڙ جي جوڙجڪ، افعال، ۽ ڪيئن استعمال ڪرڻ لاء ڏنل API کي تعمير ڪرڻ لاء
توهان جي درخواست

UM3029 - Rev 1 - سيپٽمبر 2022 وڌيڪ معلومات لاءِ پنهنجي مقامي STMicroelectronics سيلز آفيس سان رابطو ڪريو.

www.st.com

1
نوٽ:

يو ايم 3029
عام معلومات
عام معلومات
STM32CubeC0 MCU پيڪيج STM32C0 32-bit microcontrollers تي هلندو آهي Arm® Cortex®-M پروسيسر جي بنياد تي. Arm آمريڪا ۽/يا ٻين هنڌن تي Arm Limited (يا ان جي ماتحت ادارن) جو رجسٽرڊ ٽريڊ مارڪ آهي.

UM3029 - Rev 1

صفحو 2/1419

يو ايم 3029
مخففات ۽ وصفون

2

مخففات ۽ وصفون

مخفف ADC ANSI API BSP
CMSIS CPU CRC CSS DLYB DMA
DMAMUX EXTI فليش GPIO HAL I2C I2S
ICACHE IRDA IWDG MCO MPU MSP NVIC PPP PWR RCC RTC
SMBUS SPI
SRAM SysTick
TIM UART USART VREFBUF WWDG

جدول 1. مخففات ۽ وصفون
وصف اينالاگ کان ڊجيٽل ڪنورٽر آمريڪي نيشنل معيار انسٽيٽيوٽ ايپليڪيشن پروگرامنگ انٽرفيس
بورڊ سپورٽ پيڪيج Cortex microcontroller سافٽ ويئر انٽرفيس معياري
سينٽرل پروسيسنگ يونٽ CRC حسابي يونٽ ڪلاڪ سيڪيورٽي سسٽم دير بلاڪ سڌو ميموري رسائي
سڌو ميموري رسائي جي درخواست ملٽي پلڪسر خارجي مداخلت/ايونٽ ڪنٽرولر فليش ميموري جنرل مقصد I/OS هارڊويئر ايبسٽرڪشن ليئر انٽر انٽيگريٽڊ سرڪٽ انٽر انٽيگريٽڊ سائونڊ انسٽرڪشن ڪيش انفرارڊ ڊيٽا ايسوسيئيشن آزاد واچ ڊاگ مائڪرو ڪنٽرولر ڪلاڪ آئوٽ پٽ ميموري پروٽيڪشن يونٽ MCU مخصوص پيڪيج Nested vectored interrupt controller per STM32 يا بلاڪ پاور ڪنٽرولر ري سيٽ ۽ ڪلاڪ ڪنٽرولر ريئل ٽائيم ڪلاڪ سسٽم مئنيجمينٽ بس سيريل پرفيرل انٽرفيس SRAM خارجي ميموري سسٽم ٽِڪ ٽائمر
ڳوڙهي ڪنٽرول، عام مقصد يا بنيادي ٽائمر يونيورسل هم وقت ساز رسيور/ٽرانسميٽر يونيورسل هم وقت ساز رسيور/ٽرانسميٽر Voltagاي ريفرنس بفر ونڊو واچ ڊاگ

UM3029 - Rev 1

صفحو 3/1419

يو ايم 3029
مٿانview HAL ڊرائيورن جو

3

مٿانview HAL ڊرائيورن جو

HAL ڊرائيورز APIs جو هڪ ڀرپور سيٽ پيش ڪرڻ ۽ ايپليڪيشن جي مٿين پرت سان آساني سان رابطو ڪرڻ لاءِ ٺهيل آهن.
هر ڊرائيور تي مشتمل آهي افعال جو هڪ سيٽ جيڪو سڀ کان وڌيڪ عام پردي خاصيتن کي ڍڪيندو آهي. هر ڊرائيور جي ترقي هڪ عام API طرفان هلائي وئي آهي جيڪا ڊرائيور جي جوڙجڪ، افعال ۽ پيٽرولر جا نالا معياري ڪري ٿي.
HAL ڊرائيورن ۾ ڊرائيور ماڊلز جو ھڪڙو سيٽ شامل آھي، ھر ماڊل ھڪڙي اسٽينڊل پردي سان ڳنڍيل آھي. بهرحال، ڪجهه حالتن ۾، ماڊل هڪ پردي فنڪشنل موڊ سان ڳنڍيل آهي. هڪ سابق جي طور تيampلي، USART پردي لاءِ ڪيترائي ماڊل موجود آهن: UART ڊرائيور ماڊل، USART ڊرائيور ماڊل، SMARTCARD ڊرائيور ماڊل ۽ IRDA ڊرائيور ماڊل.
HAL جي مکيه خاصيتون هيٺ ڏنل آهن:
· ڪراس فيملي پورٽيبل سيٽ APIs جو عام پردي جي خاصيتن کي ڍڪيندو آهي ۽ انهي سان گڏ مخصوص پردي خاصيتن جي صورت ۾ ايڪسٽينشن APIs.
· ٽي API پروگرامنگ ماڊل: پولنگ، مداخلت ۽ DMA.
· APIs RTOS مطابق آهن:
مڪمل طور تي ريٽرنٽ APIs
پولنگ موڊ ۾ ٽائيم آئوٽ جو منظم استعمال
· پردي جي گھڻن مثالن جي حمايت ڏني وئي پردي جي ڪيترن ئي مثالن لاءِ سمورو API ڪالز (جهڙوڪ USART1 يا USART2)
· سڀ HAL APIs لاڳو ڪن ٿا استعمال ڪندڙ-ڪالبڪ فنڪشن ميڪانيزم:
Peripheral Init/DeInit HAL APIs ڪال ڪري سگھن ٿا صارف-ڪالبڪ افعال کي انجام ڏيڻ لاءِ پردي جي سسٽم جي سطح جي شروعات/ڊي-شروعات (گھڙي، GPIOs، مداخلت، DMA)
پرديئر واقعن ۾ مداخلت ڪن ٿا
غلطيون واقعا
· آبجیکٹ لاڪنگ ميکانيزم: محفوظ هارڊويئر جي رسائي کي روڪڻ لاءِ گڏيل وسيلن تائين ڪيترن ئي بيڪار رسائي کي روڪڻ لاءِ.
· ٽائم آئوٽ سڀني بلاڪنگ عملن لاءِ استعمال ڪيو ويو: ٽائم آئوٽ هڪ سادي ڪائونٽر يا ٽائم بيس ٿي سگهي ٿو.

UM3029 - Rev 1

صفحو 4/1419

3.1
3.1.1
3.1.2

يو ايم 3029
HAL ۽ استعمال ڪندڙ-ايپليڪيشن files

HAL ۽ استعمال ڪندڙ-ايپليڪيشن files
HAL ڊرائيور files HAL ڊرائيور ھيٺ ڏنل سيٽ مان ٺهيل آھن files:

ٽيبل 2. HAL ڊرائيور files

File

وصف

stm32c0xx_hal_ppp.c

مکيه پردي / ماڊل ڊرائيور file ان ۾ APIs شامل آھن جيڪي عام آھن سڀني STM32 ڊوائيسز لاءِ. مثالample: stm32c0xx_hal_adc.c, stm32c0xx_hal_irda.c.

stm32c0xx_hal_ppp.h

مٿو file مکيه ڊرائيور سي file
ان ۾ عام ڊيٽا، ھينڊل ۽ ڳڻپ جي جوڙجڪ، بيان بيان ۽ ميڪرو شامل آھن، گڏوگڏ برآمد ٿيل عام APIs. مثالample:stm32c0xx_hal_adc.h,stm32c0xx_hal_irda.h.

stm32c0xx_hal_ppp_ex.c

واڌارو file هڪ پردي / ماڊل ڊرائيور جي. ان ۾ مخصوص APIs شامل آھن ھڪڙي ڏنل حصو نمبر يا خاندان لاءِ، گڏوگڏ نوان بيان ڪيل APIs جيڪي ڊفالٽ عام APIs کي مٿي لکندا آھن جيڪڏھن اندروني عمل کي مختلف طريقي سان لاڳو ڪيو وڃي.
Example:stm32c0xx_hal_adc_ex.c,stm32c0xx_hal_flash_ex.c.

stm32c0xx_hal_ppp_ex.h

مٿو file جي واڌ سي file
ان ۾ شامل آهي مخصوص ڊيٽا ۽ ڳڻپ جا ڍانچا، بيان بيان ۽ ميڪرو، گڏوگڏ برآمد ٿيل ڊوائيس جو حصو نمبر مخصوص APIs Example: stm32c0xx_hal_adc_ex.h,stm32c0xx_hal_flash_ex.h.

stm32c0xx_hal.c stm32c0xx_hal.h

هي file HAL جي شروعات لاءِ استعمال ڪيو ويندو آهي ۽ DBGMCU تي مشتمل آهي، ريميپ ۽ ٽائيم ڊيلي تي ٻڌل SysTick APIs.
stm32c0xx_hal.c هيڊر file

سانچو file يوزر ايپليڪيشن فولڊر ۾ نقل ڪيو وڃي stm32c0xx_hal_msp_template.c ان ۾ شامل آهي MSP جي شروعات ۽ ختم ڪرڻ (مکيه معمول ۽ ڪال بيڪس)
صارف جي ايپليڪيشن ۾ استعمال ٿيل پردي.
stm32c0xx_hal_conf_template.h سانچو file ڏنل ايپليڪيشن لاء ڊرائيورز کي ترتيب ڏيڻ جي اجازت ڏئي ٿي

stm32c0xx_hal_def.h

عام HAL وسيلن جهڙوڪ عام بيان بيان، ڳڻپ، ساخت ۽ ميڪرو

استعمال ڪندڙ-ايپليڪيشن files گھٽ ۾ گھٽ fileHAL استعمال ڪندي ايپليڪيشن ٺاهڻ جي ضرورت آهي هيٺ ڏنل جدول ۾ درج ٿيل آهن:

ٽيبل 3. استعمال ڪندڙ-ايپليڪيشن files

File سسٽم_stm32c0xx.c
startup_stm32c0xx.s stm32c0xx_flash.icf
(اختياري) stm32c0xx_hal_msp.c stm32c0xx_hal_conf.h

وصف
هي file تي مشتمل آهي SystemInit() جنهن کي ري سيٽ ڪرڻ کان پوءِ شروع ٿيڻ تي سڏيو ويندو آهي ۽ مکيه پروگرام ڏانهن برانچ ڪرڻ کان اڳ. اهو شروع ڪرڻ تي سسٽم ڪلاڪ کي ترتيب نٿو ڏئي (معياري لائبريري جي برعڪس). اهو استعمال ڪندڙ ۾ HAL APIs استعمال ڪندي ڪيو وڃي fileايس. اهو اندروني SRAM ۾ ویکٹر ٽيبل کي منتقل ڪرڻ جي اجازت ڏئي ٿو.
خاص اوزار file جنهن ۾ ري سيٽ هينڊلر ۽ استثنا ویکٹر شامل آهن.
ڪجهه ٽول چينز لاءِ، اها اجازت ڏئي ٿي اسٽيڪ/هيپ سائيز کي ترتيب ڏيڻ لاءِ ايپليڪيشن گهرجن کي پورو ڪرڻ لاءِ.
ڳنڍيندڙ file EWARM ٽول چين لاءِ اجازت ڏئي ٿي بنيادي طور تي اسٽيڪ/هيپ سائيز کي ترتيب ڏيڻ لاءِ ايپليڪيشن گهرجن کي پورو ڪرڻ لاءِ.
هي file صارف جي ايپليڪيشن ۾ استعمال ٿيل پردي جي MSP شروعاتي ۽ ختم ڪرڻ (مکيه معمول ۽ ڪال بيڪس) تي مشتمل آهي.
هي file صارف کي اجازت ڏئي ٿو ته مخصوص ايپليڪيشن لاءِ HAL ڊرائيورن کي ترتيب ڏئي.

UM3029 - Rev 1

صفحو 5/1419

نوٽ:

يو ايم 3029
HAL ۽ استعمال ڪندڙ-ايپليڪيشن files

File stm32c0xx_it.c/.h
main.c/.h

وضاحت هن ترتيب کي تبديل ڪرڻ لازمي ناهي. اپليڪيشن بغير ڪنهن ترميم جي ڊفالٽ ترتيبن کي استعمال ڪري سگھي ٿي.
هي file استثنيٰ هينڊلر ۽ پيريفيرل مداخلت سروس روٽين تي مشتمل آهي، ۽ HAL_IncTick() کي باقاعده وقت جي وقفن تي ڪال ڪري ٿو ته جيئن HAL ٽائم بيس طور استعمال ٿيل مقامي متغير (stm32c0xx_hal.c ۾ بيان ڪيل) کي وڌايو وڃي. ڊفالٽ طور، هي فنڪشن سڏيو ويندو آهي هر 1ms Systick ISR ۾. .
PPP_IRQHandler() روٽين کي HAL_PPP_IRQHandler() کي ڪال ڪرڻ گهرجي جيڪڏهن ايپليڪيشن ۾ مداخلت تي ٻڌل عمل استعمال ڪيو وڃي.
هي file مکيه پروگرام جي روٽين تي مشتمل آهي، خاص طور تي: · ڪال کي HAL_Init() · assert_failed() عمل درآمد · سسٽم ڪلاڪ جي ترتيب · پردي HAL شروعاتي ۽ صارف ايپليڪيشن ڪوڊ.

STM32Cube پيڪيج استعمال ڪرڻ لاءِ تيار پراجيڪٽ ٽيمپليٽس سان گڏ اچي ٿو، هر هڪ سپورٽ ٿيل بورڊ لاءِ. هر منصوبي تي مشتمل آهي fileمٿي ڏنل فهرست ۽ سپورٽ ٿيل ٽول چينز لاءِ اڳ ۾ ترتيب ڏنل پروجيڪٽ. هر پروجيڪٽ ٽيمپليٽ خالي مکيه لوپ فنڪشن مهيا ڪري ٿو ۽ STM32Cube لاءِ پروجيڪٽ سيٽنگن سان واقف ٿيڻ لاءِ شروعاتي نقطي طور استعمال ٿي سگهي ٿو. ان جون خاصيتون هن ريت آهن:
· ان ۾ HAL، CMSIS ۽ BSP ڊرائيور جا ذريعا شامل آھن جيڪي ڏنل بورڊ تي ڪوڊ تيار ڪرڻ لاءِ گھٽ ۾ گھٽ جزا آھن.
· ان ۾ شامل رستا شامل آھن سڀني فرم ويئر اجزاء لاءِ. · اهو وضاحت ڪري ٿو STM32 ڊيوائس سپورٽ ڪئي، ۽ ان مطابق CMSIS ۽ HAL ڊرائيورن کي ترتيب ڏيڻ جي اجازت ڏئي ٿي. · اهو صارف کي استعمال ڪرڻ لاء تيار مهيا ڪري ٿو files اڳ ۾ ترتيب ڏنل آهي جيئن هيٺ بيان ڪيو ويو آهي:
HAL شروعاتي آهي SysTick ISR HAL_GetTick() سسٽم جي گھڙي لاءِ لاڳو ڪئي وئي آھي منتخب ٿيل ڊيوائس فريڪوئنسي سان ترتيب ڏنل.
جيڪڏهن هڪ موجوده پروجيڪٽ ڪنهن ٻئي هنڌ تي نقل ڪيو ويو آهي، ته پوءِ شامل ڪيل رستا اپڊيٽ ٿيڻ گهرجن.

UM3029 - Rev 1

صفحو 6/1419

شڪل 1. سابقampمنصوبي ٽيمپليٽ جي le

يو ايم 3029
HAL ڊيٽا جي جوڙجڪ

3.2
3.2.1

HAL ڊيٽا جي جوڙجڪ
ھر HAL ڊرائيور ھيٺ ڏنل ڊيٽا ڍانچي تي مشتمل ٿي سگھي ٿو: · پردي جي ھٿن جي جوڙجڪ · شروعاتي ۽ ترتيب جي جوڙجڪ · مخصوص عمل جي جوڙجڪ.
Peripheral handle structures APIs وٽ ھڪڙو ماڊيولر جنريڪ ملٽي انسٽنس آرڪيٽيڪچر آھي جيڪو ھڪ ئي وقت ڪيترن ئي IP مثالن سان ڪم ڪرڻ جي قابل بنائي ٿو. PPP_HandleTypeDef *هينڊل بنيادي ڍانچي آهي جيڪا HAL ڊرائيورن ۾ لاڳو ٿئي ٿي. اهو پردي / ماڊل ترتيبن کي سنڀاليندو آهي ۽ پردي جي ڊوائيس جي وهڪري جي پيروي ڪرڻ لاءِ گهربل سڀني اڏاوتن ۽ متغيرن کي رجسٽر ۽ ايمبيڊ ڪري ٿو.

UM3029 - Rev 1

صفحو 7/1419

نوٽ:

يو ايم 3029
HAL ڊيٽا جي جوڙجڪ
پردي جي ھٿ ھيٺ ڏنل مقصدن لاء استعمال ڪيو ويندو آھي:
· ملٽي-انسٽنس سپورٽ: هر پردي/ماڊل مثال جو پنهنجو هينڊل هوندو آهي. نتيجي طور، وسيلا آزاد آهن.
· Peripheral process intercommunication: هينڊل استعمال ڪيو ويندو آهي گڏيل ڊيٽا وسيلن کي منظم ڪرڻ لاءِ پروسيس جي روٽين جي وچ ۾. مثالample: گلوبل پوائنٽرز، ڊي ايم اي هٿيار، رياستي مشين.
· اسٽوريج: هي هينڊل پڻ استعمال ڪيو ويندو آهي عالمي متغيرن کي منظم ڪرڻ لاءِ ڏنل HAL ڊرائيور اندر.
هڪ سابقampپردي جي جوڙجڪ هيٺ ڏيکاريل آهي:
typedef struct { USART_TypeDef *مثال؛ /* USART رجسٽرس بنيادي پتو */ USART_InitTypeDef Init؛ /* Usart ڪميونيڪيشن پيٽرولر */ uint8_t *pTxBuffPtr؛/* Usart Tx منتقلي بفر ڏانهن اشارو */ uint16_t TxXferSize؛ /* Usart Tx ٽرانسفر سائيز */ __IO uint16_t TxXferCount؛/* Usart Tx ٽرانسفر ڪائونٽر */ uint8_t *pRxBuffPtr؛/* Usart Rx منتقلي بفر ڏانهن اشارو */ uint16_t RxXferSize؛ /* Usart Rx منتقلي سائيز */ __IO uint16_t RxXferCount؛ /* Usart Rx ٽرانسفر ڪائونٽر */ DMA_HandleTypeDef *hdmatx؛ /* Usart Tx DMA هينڊل پيٽرولر */ DMA_HandleTypeDef *hdmarx؛ /* Usart Rx DMA هينڊل پيٽرولر */ HAL_LockTypeDef Lock؛ /* بند ٿيل اعتراض */ __IO HAL_USART_StateTypeDef State؛ /* Usart ڪميونيڪيشن اسٽيٽ */ __IO HAL_USART_ErrorTypeDef ErrorCode؛/* USART Error code */ }USART_HandleTypeDef؛
1. گھڻن مثالن جي خاصيت جو مطلب آھي ته ايپليڪيشن ۾ استعمال ٿيل سڀئي APIs ٻيهر داخل ٿيل آھن ۽ عالمي متغيرن کي استعمال ڪرڻ کان پاسو ڪن ڇاڪاڻ ته سب روٽينس ٻيهر داخل ٿيڻ ۾ ناڪام ٿي سگھن ٿيون جيڪڏھن اھي بدليل رھڻ لاءِ عالمي متغير تي ڀروسو ڪن پر اھو متغير تبديل ڪيو ويندو آھي جڏھن سب روٽين کي بار بار ڪيو ويندو آھي. سڏ ڪيو. انهي سبب لاء، هيٺ ڏنل ضابطن جو احترام ڪيو وڃي ٿو: ريٽرنٽ ڪوڊ ڪو به جامد (يا عالمي) غير مستقل ڊيٽا نه رکندو آهي: ريٽرنٽ افعال عالمي ڊيٽا سان ڪم ڪري سگهن ٿيون. مثال طورample، هڪ ريٽرنٽ مداخلت واري خدمت جو معمول ڪم ڪرڻ لاءِ هارڊويئر اسٽيٽس جو هڪ ٽڪرو وٺي سگھي ٿو (اڳوڻي لاءِample serial port read buffer) جيڪو نه رڳو عالمي، پر غير مستحڪم آهي. اڃا تائين، جامد متغيرن ۽ عالمي ڊيٽا جي عام استعمال جي صلاح نه ڏني وئي آهي، انهي معنى ۾ ته صرف ايٽمي پڙهڻ واري تبديلي-لکڻ جي هدايتن کي انهن متغيرن ۾ استعمال ڪيو وڃي. اهو ممڪن نه هجڻ گهرجي ته اهڙي هدايت جي عمل جي دوران مداخلت يا سگنل ٿيڻ لاء. Reentrant ڪوڊ پنهنجي ڪوڊ کي تبديل نٿو ڪري.
2. جڏهن هڪ پردي هڪ ئي وقت ڪيترن ئي عملن کي منظم ڪري سگهي ٿي DMA (مڪمل ڊپلڪس ڪيس) استعمال ڪندي، هر عمل لاءِ DMA انٽرفيس هينڊل PPP_HandleTypeDef ۾ شامل ڪيو ويو آهي.
3. حصيداري ۽ سسٽم جي پرديئرز لاء، ڪو به هينڊ يا مثال اعتراض استعمال نه ڪيو ويو آهي. هن استثنا سان لاڳاپيل پرديز هيٺ ڏنل آهن: GPIO SYSTICK NVIC PWR RCC FLASH

UM3029 - Rev 1

صفحو 8/1419

3.2.2
نوٽ: 3.2.3

يو ايم 3029
HAL ڊيٽا جي جوڙجڪ
شروعات ۽ ٺاھ جوڙ ڍانچي اھي ڍانچي بيان ڪيا ويا آهن عام ڊرائيور هيڊر ۾ file جڏهن اهو سڀ حصو نمبرن لاءِ عام آهي. جڏهن اهي هڪ حصو نمبر کان ٻئي ڏانهن تبديل ڪري سگهن ٿا، ساخت جي وضاحت ڪئي وئي آهي واڌ جي هيڊر ۾ file هر حصو نمبر لاء.
typedef struct { uint32_t BaudRate؛ /*!< هي ميمبر UART ڪميونيڪيشن باڊريٽ ترتيب ڏئي ٿو.*/ uint32_t WordLength; /*!< هڪ فريم ۾ منتقل ٿيل يا وصول ڪيل ڊيٽا بٽس جو تعداد بيان ڪري ٿو.*/ uint32_t StopBits؛ /*!< منتقل ٿيل اسٽاپ بٽس جو تعداد بيان ڪري ٿو.*/ uint32_t برابري؛ /*!< برابري موڊ بيان ڪري ٿو. */ uint32_t موڊ؛ /*!< بيان ڪري ٿو ته ڇا وصول يا منتقلي موڊ فعال يا غير فعال آهي.*/ uint32_t HwFlowCtl; /*!< وضاحت ڪري ٿو ته ڇا هارڊويئر فلو ڪنٽرول موڊ فعال يا غير فعال آهي.*/ uint32_t OverSampلنگ؛ /*!< وضاحت ڪري ٿو Wether the Over sampling 8 فعال يا بند ٿيل آهي، تيز رفتار حاصل ڪرڻ لاءِ (fPCLK/8 تائين).*/ }UART_InitTypeDef؛
ترتيب جي جوڙجڪ ذيلي ماڊلز يا ذيلي مثالن کي شروع ڪرڻ لاء استعمال ڪيو ويندو آهي. هيٺ ڏسو example: HAL_ADC_ConfigChannel (ADC_HandleTypeDef*hadc، ADC_ChannelConfTypeDef* sConfig)
مخصوص پروسيس ڍانچو مخصوص پروسيس ڍانچو استعمال ڪيا ويندا آهن مخصوص پروسيس لاءِ (عام APIs). اهي عام ڊرائيور هيڊر ۾ بيان ڪيا ويا آهن file. سابقampاليزي:
HAL_PPP_Process (PPP_HandleTypeDef*hadc,PPP_ProcessConfig* sConfig)

UM3029 - Rev 1

صفحو 9/1419

3.3
نوٽ: نوٽ:

يو ايم 3029
API جي درجه بندي

API جي درجه بندي
HAL APIs کي ھيٺين ڀاڱن ۾ ورهايو ويو آھي:
· عام APIs: عام عام APIs جيڪي سڀني STM32 ڊوائيسز تي لاڳو ٿين ٿيون. اهي APIs جي نتيجي ۾ عام HAL ڊرائيور ۾ موجود آهن fileسڀني STM32 مائڪرو ڪنٽرولرز جو.
HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc)؛ HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)؛ HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc)؛ HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc)؛ HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc)؛ HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc)؛ void HAL_ADC_IRQHandler(ADC_HandleTypeDef*hadc)؛
· ايڪسٽينشن APIs: API جو هي سيٽ ٻن ذيلي ڀاڱن ۾ ورهايل آهي:
خانداني مخصوص APIs: APIs ڏنل خاندان تي لاڳو ٿين ٿا. اهي ايڪسٽينشن HAL ڊرائيور ۾ واقع آهن file (ڏسو مثالampهيٺ ڏنل ADC سان لاڳاپيل).
HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc,uint32_t SingleDiff)؛ uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef* hadc, uint32_t SingleDiff)؛
خصوصيت/ڊوائيس مخصوص APIs: اهي APIs ايڪسٽينشن ۾ لاڳو ٿيل آهن file CMSIS بٽس يا خاصيتن جي حوالي سان مخصوص بيان ڪيل بيانن جي ذريعي ۽ ڊيوائس پارٽ نمبر تي منحصر ڪري.
مخصوص APIs سان لاڳاپيل ڊيٽا جو ڍانچو ڊيوائس پارٽ نمبر define Statement ذريعي محدود ڪيو ويو آهي. اهو لاڳاپيل ايڪسٽينشن هيڊر سي ۾ واقع آهي file. ھيٺ ڏنل جدول ڊرائيور ۾ HAL APIs جي مختلف قسمن جي جڳھ کي مختصر ڪري ٿو files.

عام APIs خانداني مخصوص APIs ڊوائيس مخصوص APIs

جدول 4. API درجه بندي عام file ايڪس -

واڌارو file ايڪس اينڪس

خانداني مخصوص APIs صرف ڏنل خاندان سان لاڳاپيل آهن. هن جو مطلب اهو آهي ته جيڪڏهن هڪ مخصوص API ڪنهن ٻئي خاندان ۾ لاڳو ٿئي ٿي، ۽ هن پوئين خاندان جا دليل مختلف آهن، اضافي جوڙجڪ ۽ دليلن کي شامل ڪرڻ جي ضرورت هجي. IRQ هينڊلر عام ۽ خانداني مخصوص عملن لاءِ استعمال ٿيندا آهن.

UM3029 - Rev 1

صفحو 10/1419

3.4

يو ايم 3029
ڊوائيسز HAL ڊرائيورن جي مدد سان

ڊوائيسز HAL ڊرائيورن جي مدد سان

ٽيبل 5. HAL ڊرائيورن جي مدد سان ڊوائيسز جي فهرست

IP/module stm32c0xx_hal.c stm32c0xx_hal_adc.c stm32c0xx_hal_adc_ex.c stm32c0xx_hal_cortex.c stm32c0xx_hal_crc.c stm32c0xx_hal_crc_ex.c stm32c0xx_hal_dma.c stm32c0xx_hal_dma_ex.c stm32c0xx_hal_exti.c stm32c0xx_hal_flash.c stm32c0xx_hal_flash_ex.c stm32c0xx_hal_gpio.c stm32c0xx_hal_i2c.c stm32c0xx_hal_i2c_ex.c stm32c0xx_hal_i2s.c stm32c0xx_hal_irda.c stm32c0xx_hal_iwdg.c stm32c0xx_hal_msp_template.c stm32c0xx_hal_pwr.c stm32c0xx_hal_pwr_ex.c stm32c0xx_hal_rcc.c stm32c0xx_hal_rcc_ex.c stm32c0xx_hal_rtc.c stm32c0xx_hal_rtc_ex.c stm32c0xx_hal_smartcard.c stm32c0xx_hal_smartcard_ex.c stm32c0xx_hal_smbus.c stm32c0xx_hal_smbus_ex.c stm32c0xx_hal_spi.c stm32c0xx_hal_spi_ex.c stm32c0xx_hal_tim.c stm32c0xx_hal_tim_ex.c stm32c0xx_hal_uart.c stm32c0xx_hal_uart_ex.c stm32c0xx_hal_usart.c stm32c0xx_hal_usart_ex.c stm32c0xx_hal_wwdg.c

STM32C031xx ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها

STM32C011xx ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها ها

UM3029 - Rev 1

صفحو 11/1419

يو ايم 3029
HAL ڊرائيور ضابطا

3.5
3.5.1

HAL ڊرائيور ضابطا
HAL API نالي جا ضابطا هيٺ ڏنل نالا ڏيڻ جا قاعدا HAL ڊرائيورن ۾ استعمال ٿيندا آهن:

ٽيبل 6. HAL API نالي جا ضابطا

File نالا
ماڊل جو نالو
فنڪشن جو نالو
نالو سنڀال
شروعاتي جوڙجڪ
نالو
نالو Enum

عام stm32c0xx_hal_ppp (c/h)
HAL_PPP_Function HAL_PPP_FeatureFunction_MODE
PPP_HandleTypedef PPP_InitTypeDef
HAL_PPP_StructnameTypeDef

خانداني مخصوص APIs stm32c0xx_hal_ppp_ex (c/h)
HAL_PPP_ MODULE HAL_PPPEx_Function HAL_PPPEx_FeatureFunction_MODE
NA
NA
NA

ڊوائيس مخصوص APIs stm32c0xx_ hal_ppp_ex (c/h)
HAL_PPPEx_Function HAL_PPPEx_FeatureFunction_MODE
NA PPP_InitTypeDef
NA

· PPP پريفڪس پردي جي فعلي موڊ ڏانهن اشارو ڪري ٿو ۽ نه پردي ڏانهن. مثال طورample، جيڪڏھن USART، PPP ٿي سگھي ٿو USART، IRDA، UART يا SMARTCARD پردي جي موڊ جي لحاظ کان.
· هڪ ۾ استعمال ٿيندڙ مستقل file ان ۾ وضاحت ڪئي وئي آهي file. هڪ مسلسل ڪيترن ئي ۾ استعمال ڪيو files کي هيڊر ۾ بيان ڪيو ويو آهي file. پردي ڊرائيور فنڪشن پيرا ميٽرز کان سواءِ، سڀ مستقل اُپر اکر ۾ لکيل آهن.
· ٽائپ ڊيف متغير جا نالا _TypeDef سان لاڳاپا ٿيڻ گهرجن.
· رجسٽر کي مستقل طور سمجهيو ويندو آهي. اڪثر صورتن ۾، انهن جو نالو وڏي ۾ آهي ۽ ساڳيو مخفف استعمال ڪري ٿو جيئن STM32C0 ريفرنس مينوئل ۾.
· پردي جي رجسٽرن کي PPP_TypeDef ساخت ۾ قرار ڏنو ويو آهي (مثال طورample ADC_TypeDef) stm32c0xxx.h هيڊر ۾ file:
stm32c0xxx.h stm32c031xx.h ۽ stm32c011xx.h سان ملندو آهي.
· پرفيرل فنڪشن جا نالا اڳي ۾ HAL_ سان لڳل آهن، پوءِ لاڳاپيل پردي جو مخفف اپر ڪيس ۾ ان کان پوءِ انڊر اسڪور. هر لفظ جو پهريون اکر وڏي اکر ۾ آهي (مثال طورample HAL_UART_Transmit()). فنڪشن جي نالي ۾ صرف هڪ انڊر اسڪور جي اجازت ڏني وئي آهي ته جيئن پردي جي مخفف کي باقي فنڪشن جي نالي کان الڳ ڪري سگهجي.
· پي پي پي پرديري شروعاتي پيٽرولر تي مشتمل ڍانچي جو نالو رکيو ويو آهي PPP_InitTypeDef (اڳئين لاءِample ADC_InitTypeDef).
· PPP پردي لاءِ مخصوص تشڪيل جي ماپن تي مشتمل ڍانچي کي PPP_xxxxConfTypeDef (مثال طورample ADC_ChannelConfTypeDef).
· پردي جي هينڊل ڍانچي جو نالو رکيو ويو آهي PPP_HandleTypedef (مثال طور DMA_HandleTypeDef)
· PPP_InitTypeDef ۾ بيان ڪيل پيرا ميٽرز جي مطابق PPP پردي کي شروع ڪرڻ لاءِ استعمال ٿيندڙ ڪمن جو نالو رکيو ويو آھي HAL_PPP_Init (اڳئين لاءِample HAL_TIM_Init()).
· PPP پردي جي رجسٽرن کي انهن جي ڊفالٽ ويلز تي ري سيٽ ڪرڻ لاءِ استعمال ٿيندڙ ڪمن جو نالو رکيو ويو آهي HAL_PPP_DeInit (مثال طورample HAL_TIM_DeInit()).
· موڊ لافڪس پروسيس موڊ ڏانهن اشارو ڪري ٿو، جيڪو پولنگ، مداخلت يا DMA ٿي سگهي ٿو. هڪ سابق جي طور تيample، جڏهن DMA استعمال ڪيو ويندو آهي مقامي وسيلن کان علاوه، فنڪشن کي سڏيو وڃي ٿو: HAL_PPP_Function_DMA().
· فيچر اڳياڙي کي نئين خصوصيت ڏانهن رجوع ڪرڻ گهرجي. مثالample: HAL_ADCEx_InjectedStart()() انجيڪشن موڊ ڏانهن اشارو ڪري ٿو.

UM3029 - Rev 1

صفحو 12/1419

يو ايم 3029
HAL ڊرائيور ضابطا

3.5.2 نوٽ:

HAL عام نالو ڏيڻ جا ضابطا · حصيداري ۽ سسٽم جي پردي لاء، ڪو به هينڊل يا مثالي اعتراض استعمال نه ڪيو ويو آهي. هي اصول تي لاڳو ٿئي ٿو
هيٺين پرديز:
GPIO SYSTICK NVIC RCC فليش Example: HAL_GPIO_Init() صرف GPIO ايڊريس ۽ ان جي ٺاھ جوڙ جي ماپ جي ضرورت آھي.
HAL_StatusTypeDef HAL_GPIO_Init (GPIO_TypeDef* GPIOx, GPIO_InitTypeDef *Init) { /*GPIO شروعاتي جسم */ }
· ميڪرو جيڪي مداخلت ڪن ٿا ۽ مخصوص گھڙي جي ترتيبن کي هر پردي / ماڊل ڊرائيور ۾ بيان ڪيو ويو آهي. اهي ميڪرو برآمد ڪيا ويا آهن پردي ڊرائيور هيڊر ۾ files ته جيئن اهي واڌ جي ذريعي استعمال ڪري سگھجن file. انهن ميڪرو جي فهرست هيٺ بيان ڪئي وئي آهي:
هي فهرست مڪمل نه آهي ۽ پردي خاصيتن سان لاڳاپيل ٻيا ميڪرو شامل ڪري سگھجن ٿا، ته جيئن اهي صارف جي ايپليڪيشن ۾ استعمال ڪري سگھجن.

ٽيبل 7. ميڪرو هينڊلنگ مداخلت ۽ مخصوص گھڙي ترتيب

ميڪروس

وصف

__HAL_PPP_ENABLE_IT(__HANDLE__, __INTERRUPT__) هڪ مخصوص پرديري مداخلت کي فعال ڪري ٿو

__HAL_PPP_DISABLE_IT(__HANDLE__, __INTERRUPT__)

هڪ مخصوص پردي جي مداخلت کي بند ڪري ٿو

__HAL_PPP_GET_IT (__HANDLE__, __ INTERRUPT __) حاصل ڪري ٿو مخصوص پردي جي مداخلت واري حيثيت

__HAL_PPP_CLEAR_IT (__HANDLE__, __ INTERRUPT __) هڪ مخصوص پردي جي مداخلت واري صورتحال کي صاف ڪري ٿو

__HAL_PPP_GET_FLAG (__HANDLE__, __FLAG__) حاصل ڪري ٿو ھڪ مخصوص پردي واري پرچم جي حيثيت

__HAL_PPP_CLEAR_FLAG (__HANDLE__, __FLAG__) هڪ مخصوص پردي جي پرچم جي حيثيت کي صاف ڪري ٿو

__HAL_PPP_ENABLE(__HANDLE__)

هڪ پردي کي فعال ڪري ٿو

__HAL_PPP_DISABLE(__HANDLE__)

هڪ پردي کي بند ڪري ٿو

__HAL_PPP_XXXX (__HANDLE__, __PARAM__)

مخصوص PPP HAL ڊرائيور ميڪرو

__HAL_PPP_GET_ IT_SOURCE (__HANDLE__, __ INTERRUPT __)

مخصوص مداخلت جو ذريعو چيڪ ڪري ٿو

· NVIC ۽ stm32c0xx_hal_cortex.c ٻه Arm® Cortex® بنيادي خاصيتون آهن. انهن خاصيتن سان لاڳاپيل APIs stm32c0xx_hal_cortex.c ۾ واقع آهن file.
· جڏهن هڪ اسٽيٽس بٽ يا جھنڊو رجسٽر مان پڙهيو وڃي ٿو، اهو پڙهيل قدرن جي تعداد ۽ انهن جي سائيز جي لحاظ سان تبديل ٿيل قدرن تي مشتمل هوندو آهي. انهي صورت ۾، واپسي جي حيثيت جي چوٽي آهي 32 بٽ. مثالampاليزي:
اسٽيٽس = XX | (YY << 16) يا STATUS = XX | (YY << 8) | (YY << 16) | (YY << 24).
· PPP هينڊلز HAL_PPP_Init() API استعمال ڪرڻ کان اڳ صحيح آهن. init فنڪشن هينڊل فيلڊ کي تبديل ڪرڻ کان پهريان هڪ چيڪ انجام ڏئي ٿو.
HAL_PPP_Init(PPP_HandleTypeDef) if(hppp == NULL)
{ واپسي HAL_ERROR ؛ }

UM3029 - Rev 1

صفحو 13/1419

3.5.3
3.6

يو ايم 3029
HAL عام APIs

· هيٺ بيان ڪيل ميڪرو استعمال ڪيا ويا آهن: مشروط ميڪرو:
# وضاحت ڪريو ABS(x) (((x)> 0)؟ (x) :-(x))
Pseudo-code macro (ڪيترائي هدايتون ميڪرو):
# define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD_, __DMA_HANDLE_) ڪندا{ (__HANDLE__)->__PPP_DMA_FIELD_ = &(__DMA_HANDLE_); (__DMA_HANDLE_).Parent = (__HANDLE__)؛ } جڏهن (0)

HAL interrupt هينڊلر ۽ ڪال بڪ افعال APIs کان علاوه، HAL پردي ڊرائيور شامل آهن:
· HAL_PPP_IRQHandler() peripheral interrupt handler جنهن کي stm32c0xx_it.c کان ڪال ڪيو وڃي · يوزر ڪال بڪ افعال.
صارف ڪال بڪ افعال کي "ضعيف" وصف سان خالي افعال طور بيان ڪيو ويو آھي. انهن کي استعمال ڪندڙ ڪوڊ ۾ بيان ڪيو وڃي. اتي ٽي قسم جا صارف ڪال بڪ افعال آھن:
· پردي واري نظام جي سطح جي شروعات/ شروعاتي ڪال بيڪس: HAL_PPP_MspInit() ۽ HAL_PPP_MspDeInit
· پروسيس مڪمل ڪال بڪ: HAL_PPP_ProcessCpltCallback · غلطي ڪال بيڪ: HAL_PPP_ErrorCallback.

ٽيبل 8. ڪال بڪ افعال

ڪال بڪ افعال

Example

HAL_PPP_MspInit() / _DeInit()

Example: HAL_USART_MspInit()
HAL_PPP_Init() API فنڪشن مان سڏيو پردي جي سسٽم جي سطح جي شروعات ڪرڻ لاءِ (GPIOs، ڪلاڪ، DMA، مداخلت)

Example: HAL_USART_TxCpltCallback HAL_PPP_ProcessCpltCallback
پردي يا ڊي ايم اي مداخلت واري هينڊلر طرفان سڏيو ويندو آهي جڏهن پروسيس مڪمل ٿئي ٿي

HAL_PPP_ErrorCallback

Example: HAL_USART_ErrorCallback سڏجي ٿو پردي يا ڊي ايم اي انٽرپرٽ هينڊلر طرفان جڏهن ڪا غلطي ٿئي ٿي

HAL عام APIs
عام APIs سڀني STM32 ڊوائيسز تي لاڳو عام عام افعال مهيا ڪن ٿا. اهي چار APIs گروپن تي مشتمل آهن:
· شروعاتي ۽ ختم ڪرڻ جا ڪم: HAL_PPP_Init(), HAL_PPP_DeInit() · IO آپريشن جا ڪم: HAL_PPP_Read (), HAL_PPP_Write (), HAL_PPP_Transmit (), HAL_PPP_Receive () · ڪنٽرول افعال: HAL_PP_Receive () · ڪنٽرول افعال: HAL_PPP () · رياست ۽ غلطيون افعال: HAL_PPP_GetState (), HAL_PPP_GetError ().
ڪجھ پردي/ماڊيول ڊرائيورن لاءِ، ھي گروپ تبديل ڪيا ويا آھن پردي/ماڊيول تي عمل ڪرڻ جي لحاظ کان.
Example: ٽائمر ڊرائيور ۾، API گروپنگ ٽائمر جي خاصيتن تي ٻڌل آهي (جهڙوڪ PWM، OC ۽ IC).
شروعاتي ۽ شروع ڪرڻ وارا ڪم هڪ پردي کي شروع ڪرڻ ۽ گھٽ سطح جي وسيلن کي ترتيب ڏيڻ جي اجازت ڏين ٿا، خاص طور تي گھڙي، GPIO، متبادل افعال (AF) ۽ ممڪن طور تي DMA ۽ مداخلت. HAL_DeInit() فنڪشن پردي جي ڊفالٽ حالت کي بحال ڪري ٿو، گھٽ سطح جي وسيلن کي آزاد ڪري ٿو ۽ هارڊويئر سان ڪنهن به سڌي انحصار کي هٽائي ٿو.
IO آپريشن فنڪشن انجام ڏئي ٿو قطار جي رسائي کي پردي جي پيل لوڊ ڊيٽا تائين لکڻ ۽ پڙهڻ جي طريقن ۾.
ڪنٽرول افعال کي متحرڪ طور تي پردي جي ترتيب کي تبديل ڪرڻ ۽ ٻيو آپريٽنگ موڊ سيٽ ڪرڻ لاء استعمال ڪيو ويندو آهي.

UM3029 - Rev 1

صفحو 14/1419

3.7
3.7.1

يو ايم 3029
HAL توسيع APIs

پردي جي حالت ۽ غلطين جا ڪم رن ٽائيم ۾ پردي ۽ ڊيٽا جي وهڪري جي رياستن کي ٻيهر حاصل ڪرڻ جي اجازت ڏين ٿا، ۽ غلطين جي قسم کي سڃاڻڻ جي اجازت ڏين ٿيون. سابقampهيٺ ڏنل ADC پردي تي ٻڌل آهي. عام APIs جي فهرست مڪمل نه آھي. اهو صرف هڪ اڳوڻي طور ڏنو ويو آهيampلي.

ٽيبل 9. HAL عام APIs

فنڪشنل گروپ شروعاتي گروپ
IO آپريشن گروپ
ڪنٽرول گروپ رياست ۽ غلطيون
گروپ

عام API جو نالو

وصف

HAL_ADC_Init()

ھي فنڪشن پردي کي شروع ڪري ٿو ۽ گھٽ سطح جي وسيلن کي ترتيب ڏئي ٿو (گھڙا، GPIO، AF..)

HAL_ADC_DeInit()

هي فنڪشن پردي جي ڊفالٽ رياست کي بحال ڪري ٿو، هيٺين سطح جي وسيلن کي آزاد ڪري ٿو ۽ هارڊويئر سان ڪنهن به سڌي انحصار کي هٽائي ٿو.

HAL_ADC_Start ()

هي فنڪشن شروع ٿئي ٿو ADC تبديليون جڏهن پولنگ جو طريقو استعمال ڪيو ويندو آهي

HAL_ADC_Stop ()

هي فنڪشن ADC تبديلين کي روڪي ٿو جڏهن پولنگ جو طريقو استعمال ڪيو ويندو آهي

هي فنڪشن اجازت ڏئي ٿو تبديلين جي پڄاڻي جي انتظار ۾ جڏهن HAL_ADC_PollForConversion() پولنگ جو طريقو استعمال ڪيو وڃي. انهي حالت ۾، هڪ ٽائم آئوٽ قدر بيان ڪيو ويو آهي
استعمال ڪندڙ جي درخواست موجب.

HAL_ADC_Start_IT()

هي فنڪشن شروع ٿئي ٿو ADC تبديليون جڏهن مداخلت جو طريقو استعمال ڪيو ويندو آهي

HAL_ADC_Stop_IT() HAL_ADC_IRQHandler()

هي فنڪشن ADC تبديلين کي روڪي ٿو جڏهن مداخلت جو طريقو استعمال ڪيو ويندو آهي
هي فنڪشن ADC مداخلت جي درخواستن کي سنڀاليندو آهي

HAL_ADC_ConvCpltCallback()

ڪال بڪ فنڪشن کي سڏيو ويندو آهي آئي ٽي سبروٽين ۾ موجوده عمل جي خاتمي کي ظاهر ڪرڻ لاءِ يا جڏهن ڊي ايم اي منتقلي مڪمل ٿي چڪي آهي

HAL_ADC_ErrorCallback()

ڪال بڪ فنڪشن کي IT سب روٽين ۾ سڏيو ويندو آهي جيڪڏهن هڪ پردي جي غلطي يا DMA منتقلي جي غلطي ٿي وئي

HAL_ADC_ConfigChannel()

هي فنڪشن منتخب ٿيل ADC باقاعده چينل کي ترتيب ڏئي ٿو، ترتيب ۾ لاڳاپيل درجه بندي ۽ ايسampوقت

HAL_ADC_AnalogWDGConfig هي فنڪشن چونڊيل ADC لاءِ اينالاگ واچ ڊاگ کي ترتيب ڏئي ٿو

HAL_ADC_GetState()

هي فنڪشن رن ٽائيم ۾ حاصل ڪرڻ جي اجازت ڏئي ٿو پردي ۽ ڊيٽا جي وهڪري جي رياستن.

HAL_ADC_GetError()

هي فيڪشن رن ٽائم ۾ حاصل ڪرڻ جي اجازت ڏئي ٿو اها غلطي جيڪا آئي ٽي روٽين دوران ٿي

HAL توسيع APIs
HAL توسيع ماڊل ختمview ايڪسٽينشن APIs هڪ مخصوص خاندان (سيريز) يا ساڳئي خاندان جي مخصوص پارٽ نمبر لاءِ مخصوص افعال مهيا ڪن ٿا يا تبديل ٿيل APIs کي اوور رائٽ ڪن ٿا. توسيع ماڊل هڪ اضافي تي مشتمل آهي file, stm32c0xx_hal_ppp_ex.c، جنهن ۾ سڀني مخصوص افعال شامل آهن ۽ بيان ڪيل بيان (stm32c0xx_hal_ppp_ex.h) ڏنل حصو نمبر لاءِ. هڪ اڳوڻي هيٺانample ADC پردي جي بنياد تي:

ٽيبل 10. HAL ايڪسٽينشن APIs

فنڪشن گروپ HAL_ADCEx_CalibrationStart() HAL_ADCEx_Calibration_GetValue()

عام API نالو هي فنڪشن خودڪار ADC حساب ڪتاب شروع ڪرڻ لاء استعمال ڪيو ويندو آهي
هي فنڪشن ADC calibration عنصر حاصل ڪرڻ لاء استعمال ڪيو ويندو آهي

UM3029 - Rev 1

صفحو 15/1419

3.7.2

يو ايم 3029
HAL توسيع APIs
HAL ايڪسٽينشن ماڊل ڪيس مخصوص پردي جي خاصيتن کي HAL ڊرائيور پاران پنج مختلف طريقن سان سنڀالي سگھجي ٿو. اهي هيٺ بيان ڪيا ويا آهن.
حصو نمبر-مخصوص فنڪشن شامل ڪرڻ جڏھن ھڪڙي نئين خصوصيت جي ھڪڙي مخصوص ڊيوائس جي ضرورت پوندي آھي، نيون APIs شامل ڪيون وينديون آھن stm32c0xx_hal_ppp_ex.c. file. انهن جو نالو HAL_PPPEx_Function().
شڪل 2. ڊوائيس جي مخصوص افعال کي شامل ڪرڻ

Example: stm32c0xx_hal_pwr_ex.c/h #if defined(PWR_SHDW_SUPPORT) void HAL_PWREx_EnterSHUTDOWNMode(void)؛ #endif
خاندان جي مخصوص فنڪشن کي شامل ڪرڻ هن صورت ۾، API کي وڌايو ويو آهي ايڪسٽينشن ڊرائيور سي ۾ file ۽ نالو HAL_PPPEx_Function ().
شڪل 3. خاندان جي مخصوص افعال کي شامل ڪرڻ

ھڪڙو نئون پردي شامل ڪرڻ (مخصوص ھڪڙي خاندان سان تعلق رکندڙ ڊوائيس لاء)
جڏهن هڪ پردي جيڪو صرف هڪ مخصوص ڊوائيس ۾ موجود آهي گهربل هجي، هن نئين پردي / ماڊل (نئين پي پي پي) سان لاڳاپيل APIs نئين stm32c0xx_hal_newppp.c ۾ شامل ڪيا ويا آهن. تنهن هوندي به هن جي شموليت file macro استعمال ڪندي stm32c0xx_hal_conf.h ۾ چونڊيو ويو آهي:
# تعريف ڪريو HAL_NEWPPP_MODULE_ENABLED

UM3029 - Rev 1

صفحو 16/1419

شڪل 4. نئين پردي کي شامل ڪرڻ

يو ايم 3029
HAL توسيع APIs

Example: stm32c0xx_hal_adc.c/h
موجوده عام APIs کي تازه ڪاري ڪرڻ هن صورت ۾، معمول جي وضاحت ڪئي وئي آهي ساڳين نالن سان stm32c0xx_hal_ppp_ex.c واڌ ۾ file، جڏهن ته عام API کي ضعيف طور بيان ڪيو ويو آهي، انهي ڪري ته مرتب ڪندڙ نئين بيان ڪيل فنڪشن طرفان اصل معمول کي اوور رائٽ ڪري ٿو.
شڪل 5. موجوده APIs کي اپڊيٽ ڪرڻ

موجوده ڊيٽا جي جوڙجڪ کي اپڊيٽ ڪرڻ
ڊيٽا جو ڍانچو هڪ مخصوص ڊيوائس پارٽ نمبر لاءِ (مثال طورample PPP_InitTypeDef) جا مختلف شعبا ٿي سگھن ٿا. انهي صورت ۾، ڊيٽا جي جوڙجڪ جي وضاحت ڪئي وئي آهي واڌ جي هيڊر ۾ file ۽ مخصوص حصو نمبر بيان بيان جي ذريعي حد بندي.

UM3029 - Rev 1

صفحو 17/1419

يو ايم 3029
File شامل ڪرڻ وارو ماڊل

3.8

File شامل ڪرڻ وارو ماڊل

عام HAL ڊرائيور جو هيڊر file (stm32c0xx_hal.h) سڄي HAL لائبريريءَ لاءِ عام ترتيبون شامل آھن. اهو ئي سر آهي file جيڪو استعمال ڪندڙ ذريعن ۽ HAL C ذريعن ۾ شامل آهي fileHAL وسيلن کي استعمال ڪرڻ جي قابل ٿي.

شڪل 6. File شامل ڪرڻ وارو ماڊل

هڪ پي پي پي ڊرائيور هڪ اسٽينڊل ماڊل آهي جيڪو هڪ منصوبي ۾ استعمال ڪيو ويندو آهي. استعمال ڪندڙ کي لازمي طور تي ترتيب ڏيڻ ۾ لاڳاپيل USE_HAL_PPP_MODULE بيان بيان کي فعال ڪرڻ گهرجي file.
/************************************************** ********************* @file stm32c0xx_hal_conf.h * @author MCD ايپليڪيشن ٽيم * @version VX.YZ * @date dd-mm-yyyy * @brief This file استعمال ڪرڻ جا ماڊل شامل آهن ****************************************** ************************** (…) # تعريف ڪريو HAL_USART_MODULE_ENABLED # define HAL_IRDA_MODULE_ENABLED # define HAL_DMA_MODULE_ENABLED # define HAL_RCC_MODULE_ENABLED (...)

UM3029 - Rev 1

صفحو 18/1419

3.9 3.10

يو ايم 3029
HAL عام وسيلا

HAL عام وسيلا
عام HAL وسيلا، جهڙوڪ عام بيان ڪيل ڳڻپ، ساخت ۽ ميڪرو، stm32c0xx_hal_def.h ۾ بيان ڪيا ويا آهن. مکيه عام تعريف ڪيل ڳڻپ HAL_StatusTypeDef آهي.
· HAL اسٽيٽس HAL اسٽيٽس تقريبن سڀني HAL APIs پاران استعمال ڪيو ويندو آهي، سواءِ بولان فنڪشن ۽ IRQ هينڊلر. اهو موجوده API عملن جي حالت کي واپس ڏئي ٿو. ان ۾ چار ممڪن قدر آهن جيئن هيٺ بيان ڪيو ويو آهي:
Typedef enum { HAL_OK = 0x00، HAL_ERROR = 0x01، HAL_BUSY = 0x02، HAL_TIMEOUT = 0x03 } HAL_StatusTypeDef؛
· HAL لاڪ ڪيو ويو HAL تالا سڀني HAL APIs پاران استعمال ڪيو ويندو آهي حادثي سان حصيداري ڪيل وسيلن جي رسائي کي روڪڻ لاء.
typedef enum { HAL_UNLOCKED = 0x00، /*!
عام وسيلن کان علاوه، stm32c0xx_hal_def.h file stm32c0xx.h کي سڏي ٿو file CMSIS لائبريري ۾ ڊيٽا جي جوڙجڪ ۽ ايڊريس ميپنگ حاصل ڪرڻ لاءِ سڀني پردي لاءِ:
پردي جي رجسٽر ۽ بٽس جي تعريف جو اعلان. پرديئر رجسٽر هارڊويئر تائين رسائي حاصل ڪرڻ لاءِ ميڪروس (جهڙوڪ رجسٽر لکو يا رجسٽر پڙهو). · عام ميڪرو ميڪرو وضاحت ڪندڙ HAL_MAX_DELAY
# تعريف ڪريو HAL_MAX_DELAY 0xFFFFFFFF
ميڪرو PPP پردي کي DMA ساخت جي پوائنٽر سان ڳنڍيندي:
# define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD_, __DMA_HANDLE_) ڪندا{
(__HANDLE__)->__PPP_DMA_FIELD_ = &(__DMA_HANDLE_)؛ (__DMA_HANDLE_).Parent = (__HANDLE__)؛ } جڏهن (0)

HAL ترتيب
تشڪيل file, stm32c0xx_hal_conf.h، صارف جي ايپليڪيشن لاء ڊرائيورز کي ترتيب ڏيڻ جي اجازت ڏئي ٿي. ھن ٺاھ جوڙ کي تبديل ڪرڻ لازمي نه آھي: ايپليڪيشن ڊفالٽ ٺاھ جوڙ کي بغير ڪنھن ترميم جي استعمال ڪري سگھي ٿي.
انهن پيرا ميٽرن کي ترتيب ڏيڻ لاءِ، صارف کي ڪجهه اختيارن کي فعال، غير فعال يا تبديل ڪرڻ گهرجي، جيئن هيٺ ڏنل جدول ۾ بيان ڪيل لاڳاپيل وضاحتي بيانن جي قدرن کي غير تبصرو، تبصرو يا تبديل ڪندي:

جدول 11. HAL ٺاھ جوڙ لاءِ استعمال ڪيل بيان بيان ڪريو

ترتيب واري شيءِ HSE_VALUE
HSE_STARTUP_TIMEOUT HSI_VALUE
HSI48_VALUE
LSI_VALUE

وصف
خارجي اوسيليٽر (HSE) جو قدر بيان ڪري ٿو Hz ۾ بيان ڪيل. استعمال ڪندڙ کي لازمي طور تي ھن بيان بيان کي ترتيب ڏيڻ گھرجي جڏھن مختلف ڪرسٽل قدر استعمال ڪندي.
HSE جي شروعات لاءِ وقت ختم، ايم ايس ۾ اظهار ڪيو ويو
Hz ۾ ظاهر ڪيل اندروني اوسليٽر (HSI) جي قيمت کي بيان ڪري ٿو.
هز ۾ ظاهر ڪيل USB لاءِ اندروني هاءِ اسپيڊ اوسيليٽر جي قيمت کي بيان ڪري ٿو. حقيقي قدر مختلف ٿي سگھي ٿي حجم ۾ تبديلين جي لحاظ کانtage ۽ درجه حرارت.
گھٽ-رفتار اندروني اوسليٽر (LSI) جي ڊفالٽ قدر بيان ڪري ٿو Hz ۾ بيان ڪيل.

ڊفالٽ ويليو 48 000 000 Hz
100 48 000 000 Hz 48 000 000 Hz
32000 هز

UM3029 - Rev 1

صفحو 19/1419

نوٽ:
3.11
3.11.1
3.11.2

يو ايم 3029
HAL سسٽم پردي جي سنڀال

ترتيب واري شيءِ
LSE_VALUE LSE_STARTUP_TIMEOUT
VDD_VALUE

وصف
خارجي اوسليٽر (LSE) جو قدر بيان ڪري ٿو Hz ۾ بيان ڪيل. استعمال ڪندڙ کي لازمي طور تي ھن بيان بيان کي ترتيب ڏيڻ گھرجي جڏھن مختلف ڪرسٽل قدر استعمال ڪندي.
LSE شروع ڪرڻ لاء وقت ختم، ms ۾ اظهار ڪيو
VDD قدر

USE_RTOS

RTOS جي استعمال کي فعال ڪري ٿو

PREFETCH_ENABLE

اڳڀرائي جي خصوصيت کي فعال ڪري ٿو

INSTRUCTION_CACHE_ENABLE ICACHE خصوصيت کي فعال ڪري ٿو

ڊفالٽ قدر
32768 هز
5000 3300 (mV) FALSE (مستقبل لاءِ
استعمال ڪريو) FALSE TRUE

stm32c0xx_hal_conf_template.h file HAL ڊرائيورز Inc فولڊر ۾ واقع آهي. ان کي يوزر فولڊر ۾ نقل ڪيو وڃي، نالو تبديل ڪيو وڃي ۽ تبديل ڪيو وڃي جيئن مٿي بيان ڪيو ويو آهي. ڊفالٽ طور، قدر بيان ڪيل stm32c0xx_hal_conf_template.h ۾ file ساڳيا آهن جيڪي اڳ ۾ استعمال ڪيا ويا آهنampليس ۽ مظاهرا. سڀ HAL شامل آهن files کي فعال ڪيو ويو آهي ته جيئن اهي استعمال ڪري سگھجن ٿيون صارف ڪوڊ ۾ بغير ڪنهن ترميم جي.

HAL سسٽم پردي جي سنڀال
هي سيڪشن هڪ اوور ڏئي ٿوview HAL ڊرائيورن پاران سسٽم جي پرديئرز کي ڪيئن سنڀاليو وڃي ٿو. مڪمل API لسٽ مهيا ڪئي وئي آهي هر پردي ڊرائيور جي تفصيل واري حصي ۾.

گھڙيون ٻه مکيه ڪم سسٽم جي گھڙي کي ترتيب ڏيڻ لاء استعمال ڪري سگھجن ٿيون:
· HAL_RCC_OscConfig (RCC_OscInitTypeDef *RCC_OscInitStruct). هي فنڪشن ڪيترن ئي ڪلاڪ ذريعن کي ترتيب ڏئي ٿو / فعال ڪري ٿو (HSE، HSI، LSE، LSI).
· HAL_RCC_ClockConfig (RCC_ClkInitTypeDef *RCC_ClkInitStruct، uint32_t FLatency). هن فنڪشن
سسٽم جي گھڙي جو ماخذ ترتيب ڏئي ٿو AHB ۽ APB1 گھڙي ورهائيندڙ فليش ميموري جي تعداد کي ترتيب ڏئي ٿو انتظار رياستون SysTick ترتيبن کي اپڊيٽ ڪري ٿو جڏهن HCLK گھڙي تبديل ٿي.
ڪجھ پردي گھڙيون سسٽم جي گھڙي مان نڪتل نه آھن (جهڙوڪ RTC). ھن حالت ۾، گھڙي جي ٺاھ جوڙ ھڪڙي وڌايل API جي ذريعي ڪئي وئي آھي stm32c0xx_hal_rcc_ex.c: HAL_RCCEx_PeriphCLKConfig (RCC_PeriphCLKInitTypeDef *PeriphClkInit). اضافي RCC HAL ڊرائيور افعال موجود آهن:
· HAL_RCC_DeInit() ڪلاڪ ڊي-انٽيليائيزيشن فنڪشن جيڪو ڪلاڪ جي ڪنفيگريشن کي ري سيٽ ڪرڻ لاءِ واپس ڪري ٿو · گھڙي جا افعال حاصل ڪريو جيڪي گھڙي جي مختلف ترتيبن کي ٻيهر حاصل ڪرڻ جي اجازت ڏين ٿا (جهڙوڪ سسٽم ڪلاڪ، HCLK يا
PCLK1) · MCO ۽ CSS ترتيب ڏيڻ جا ڪم
ميڪروز جو هڪ سيٽ stm32c0xx_hal_rcc.h ۽ stm32c0xx_hal_rcc_ex.h ۾ بيان ڪيو ويو آهي. اهي آر سي سي بلاڪ رجسٽرن تي ابتدائي عملن کي انجام ڏيڻ جي اجازت ڏين ٿا، جهڙوڪ پرديئرز ڪلاڪ گيٽنگ/ ري سيٽ ڪنٽرول:
· __HAL_PPP_CLK_ENABLE/__HAL_PPP_CLK_DISABLE پردي جي گھڙي کي چالو/بند ڪرڻ لاءِ · __HAL_PPP_FORCE_RESET/__HAL_PPP_RELEASE_RESET پردي جي ري سيٽ کي زور ڏيڻ/ جاري ڪرڻ لاءِ · __HAL_PPP__HAL_PPP__ALEP_CLEP_ABLE_ABLE_ABLE پردي کي فعال/بند ڪرڻ لاءِ SABLE
سمهڻ واري موڊ دوران ڪلاڪ. · __HAL_PPP_IS_CLK_ENABLED/__HAL_PPP_IS_CLK_DISABLED فعال/معذور بابت سوال ڪرڻ لاءِ
پردي جي گھڙي جي حالت. · __HAL_PPP_IS_CLK_SLEEP_ENABLED/__HAL_PPP_IS_CLK_SLEEP_DISABLED بابت سوال ڪرڻ لاءِ
سمهڻ واري موڊ دوران پردي جي گھڙي جي فعال / غير فعال حالت.

GPIOs GPIO HAL APIs ھيٺ ڏنل آھن:

UM3029 - Rev 1

صفحو 20/1419

يو ايم 3029
HAL سسٽم پردي جي سنڀال

· HAL_GPIO_Init() / HAL_GPIO_DeInit () · HAL_GPIO_ReadPin () / HAL_GPIO_WritePin () · HAL_GPIO_TogglePin ().
معياري GPIO موڊس (ان پٽ، آئوٽ پُٽ، اينالاگ) کان علاوه، پن موڊ کي EXTI طور ترتيب ڏئي سگھجي ٿو مداخلت يا ايونٽ جي نسل سان. جڏهن مداخلت پيدا ڪرڻ سان EXTI موڊ چونڊيو، صارف کي ڪال ڪرڻ گهرجي HAL_GPIO_EXTI_IRQHandler() stm32c0xx_it.c کان ۽ لاڳو ڪرڻ گهرجي HAL_GPIO_EXTI_Rising_Callback() ۽/يا HAL_GPIO_EXTI_Falling_Callback(). هيٺ ڏنل جدول بيان ڪري ٿو GPIO_InitTypeDef ساخت جي ميدان.

جدول 12. GPIO_InitTypeDef ساخت جو تفصيل

ساخت جو ميدان پن
موڊ
ڇڪڻ جي رفتار

وصف
GPIO پنن کي ترتيب ڏيڻ جي وضاحت ڪري ٿو. ممڪن قدر: GPIO_PIN_x يا GPIO_PIN_All، جتي x[0..15] چونڊيل پنن لاءِ آپريٽنگ موڊ بيان ڪري ٿو: GPIO موڊ يا EXTI موڊ. ممڪن قدر آهن: · GPIO موڊ
GPIO_MODE_INPUT : ان پٽ فلوٽنگ GPIO_MODE_OUTPUT_PP : آئوٽ پش پل GPIO_MODE_OUTPUT_OD : آئوٽ پٽ اوپن ڊرين GPIO_MODE_AF_PP : متبادل فنڪشن پش پل GPIO_MODE_AF_OD : متبادل فنڪشن اوپن ڊرين موڊ: MODE_MODE_AF_OD C_CONTROL: ADC اينالاگ موڊ · External Interrupt mode GPIO_MODE_IT_RISING : اڀرندڙ ايج ٽرگر جو پتو لڳائڻ GPIO_MODE_IT_FALLING : گرڻ ايج ٽرگر جو پتو لڳائڻ GPIO_T_ER_RENGE_AFIONET: XATE / FITENTE VEODE_EVED_EVET_EVER_EVER_EVERT_EVERE_EVER_EVER_EVER_EVER_EVER_EVER_EVERY_EVERY_EVERY
منتخب ٿيل پنن لاءِ پل اپ يا پل-ڊائون چالو ڪرڻ جي وضاحت ڪري ٿي. ممڪن قدر آهن: GPIO_NOPULL GPIO_PULLUP GPIO_PULLDOWN
منتخب ٿيل پنن جي رفتار کي بيان ڪري ٿو ممڪن قدر آهن: GPIO_SPEED_FREQ_LOW GPIO_SPEED_FREQ_MEDIUM GPIO_SPEED_FREQ_HIGH GPIO_SPEED_FREQ_VERY_HIGH

مھرباني ڪري ھيٺ ڏنل ڳولھيو GPIO ٺاھ جوڙ examples:
· GPIOs کي ٻاھرين LEDs کي ڊرائيو ڪرڻ لاءِ ٻاھرين پُش-پل جي طور تي ترتيب ڏيڻ:
GPIO_InitStruct.Pin = GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15؛ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP؛ GPIO_InitStruct.Pull = GPIO_PULLUP؛ GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_MEDIUM؛ HAL_GPIO_Init(GPIO_InitStruct)؛

UM3029 - Rev 1

صفحو 21/1419

3.11.3 3.11.4 3.11.5

يو ايم 3029
HAL سسٽم پردي جي سنڀال

· PA0 کي بيروني مداخلت جي طور تي ترتيب ڏيڻ واري ڪنڊ حساسيت سان:
GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStructure.Pull = GPIO_NOPULL؛ GPIO_InitStructure.Pin = GPIO_PIN_0; HAL_GPIO_Init(GPIOA، &GPIO_InitStructure)؛

Cortex® NVIC ۽ SysTick ٽائمر Cortex® HAL ڊرائيور، stm32c0xx_hal_cortex.c، NVIC ۽ SysTick کي سنڀالڻ لاءِ APIs مهيا ڪري ٿو. سپورٽ ٿيل APIs ۾ شامل آهن: · HAL_NVIC_SetPriority()/ HAL_NVIC_SetPriorityGrouping() · HAL_NVIC_GetPriority() / HAL_NVIC_GetPriorityGrouping() · HAL_NVIC_EnableIRQ() · HAL_NVIC_EnableIRQ()/ALQ_em ALQ_Set () · HAL_SYSTICK_IRQHandler() · HAL_NVIC_GetPendingIRQ () / HAL_NVIC_SetPendingIRQ () / HAL_NVIC_ClearPendingIRQ () · HAL_NVIC_GetActive(IRQn) · HAL_SYSTICK_Config() · HAL_SYSTICK_CLKSourceConfig() · HAL_SYSTICK_Callback()
PWR PWR HAL ڊرائيور پاور انتظام سنڀاليندو آهي. سڀ STM32 سيريز جي وچ ۾ حصيداري ڪيل خاصيتون ھيٺ ڏنل آھن: · ويڪ اپ پن ترتيب
HAL_PWR_EnableWakeUpPin() / HAL_PWR_DisableWakeUpPin() · گھٽ-پاور موڊ داخلا
HAL_PWR_EnterSLEEPMode() HAL_PWR_EnterSTANDBYMode() · STM32C0 گھٽ پاور مينيجمينٽ خاصيتون: HAL_PWREx_EnterSHUTDOWNMode()
EXTI The EXTI هڪ اسٽينڊ اڪيلو پردي جي طور تي نه سمجهيو ويندو آهي بلڪه هڪ خدمت جي طور تي استعمال ڪيو ويندو آهي ٻين پردي جي طرفان، جيڪو EXTI HAL APIs ذريعي سنڀاليو ويندو آهي. ان کان علاوه، هر پردي HAL ڊرائيور لاڳاپيل EXTI ترتيبن کي لاڳو ڪري ٿو ۽ ان جي هيڊر ۾ ميڪروس وانگر ڪم ڪري ٿو. file. پهرين 16 EXTI لائينون جيڪي GPIO سان ڳنڍيل آهن، GPIO ڊرائيور جي اندر منظم ٿيل آهن. GPIO_InitTypeDef جوڙجڪ I/O کي خارجي مداخلت يا خارجي واقعي جي طور تي ترتيب ڏيڻ جي اجازت ڏئي ٿي. EXTI لائينون اندروني طور تي RTC، I2C1، ۽ USART1 سان ڳنڍيل آهن، هيٺ ڏنل جدول ۾ ڏنل ميڪرو ذريعي انهن پردي جي HAL ڊرائيورن ۾ ترتيب ڏنل آهن. EXTI اندروني ڪنيڪشن ھدف ٿيل STM32 مائڪرو ڪنٽرولر تي ڀاڙي ٿو (وڌيڪ تفصيل لاءِ پراڊڪٽ ڊيٽا شيٽ جو حوالو ڏيو):

جدول 13. وضاحت EXTI ڪنفيگريشن ميڪروز

ميڪروس __HAL_PPP_{SUBLOCK}__EXTI_ENABLE_IT()
__HAL_PPP_{SUBLOCK}__EXTI_DISABLE_IT() __HAL_PPP_{SUBLOCK}__EXTI_GET_FLAG()

وضاحت ڏني وئي EXTI لائن مداخلت Example: __HAL_PWR_PVD_EXTI_ENABLE_IT() ڏنل EXTI لائن کي غير فعال ڪري ٿو. مثالample: __HAL_PWR_PVD_EXTI_DISABLE_IT() حاصل ڪري ٿو ڏنل EXTI لائن مداخلت واري جھنڊو پينڊنگ بٽ اسٽيٽس.

UM3029 - Rev 1

صفحو 22/1419

3.11.6

يو ايم 3029
HAL سسٽم پردي جي سنڀال

ميڪروس
__HAL_PPP_{SUBLOCK__EXTI_CLEAR_FLAG()
__HAL_ PPP_{SUBLOCK__EXTI_GENERATE_SWIT()
__HAL_PPP_SUBBLOCK_EXTI_ENABLE_EVENT()
__HAL_PPP_SUBBLOCK_EXTI_DISABLE_EVENT() __HAL_PPP_SUBBLOCK_EXTI_ENABLE_RISING_EDGE() __HAL_PPP_SUBBLOCK_EXTI_ENABLE_FALLING_EDGE() __HAL_PPP_SUBBLOCK_DISABLE_EXTI_SUBBLOCK_DISABLE_EXTI() _EXTI_DISABLE_FALLING_EDGE() __HAL_PPP_SUBBLOCK_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_PPP_SUBBLOCK_EXTI_DISABLE_RISING_FALLING_EDGE()

Exampاليزي:

وصف

__HAL_PWR_PVD_EXTI_GET_FLAG()

هڪ ڏنل EXTI لائن کي صاف ڪري ٿو مداخلت واري جھنڊو پينڊنگ بٽ. مثالample؛ __HAL_PWR_PVD_EXTI_CLEAR_FLAG()

ڏنل EXTI لائن لاءِ هڪ سافٽ ويئر مداخلت ٺاهي ٿو. مثالample: __HAL_PWR_PVD_EXTI_ GENERATE_SWIT ()

ڏنل EXTI لائن واقعي کي فعال ڪريو Example: __HAL_RTC_WAKEUP_EXTI_ENABLE_EVENT()

هڪ ڏنل EXTI لائن واقعي کي غير فعال ڪريو Example: __HAL_RTC_WAKEUP_EXTI_DISABLE_EVENT()

اڀرندڙ ڪنڊ تي EXTI مداخلت يا واقعي کي ترتيب ڏيو

Falling edge تي EXTI مداخلت يا واقعي کي فعال ڪريو

اڀرندڙ ڪنڊ تي EXTI مداخلت يا واقعي کي بند ڪريو

غير فعال ڪريو EXTI مداخلت يا واقعو گرڻ واري ڪنڊ تي

اڀرندڙ/گرڻ واري ڪنڊ تي EXTI مداخلت يا واقعي کي فعال ڪريو

اڀرندڙ/گرڻ واري ڪنڊ تي EXTI مداخلت يا واقعو کي بند ڪريو

جيڪڏهن EXTI مداخلت واري موڊ کي منتخب ڪيو ويو آهي، صارف ايپليڪيشن کي ڪال ڪرڻ گهرجي HAL_PPP_FUNCTION_IRQHandler() (اڳ لاءِample HAL_PWR_PVD_IRQHandler())، stm32c0xx_it.c کان file، ۽ HAL_PPP_FUNCTIONCallback() ڪال بيڪ فنڪشن (مثال طورample HAL_PWR_PVDCallback().
DMA DMA HAL ڊرائيور اجازت ڏئي ٿو پردي کي فعال ڪرڻ ۽ ترتيب ڏيڻ جي پردي کي DMA چينلز سان ڳنڍڻ جي (سواءِ اندروني SRAM/FLASH ميموري جي جنهن کي ڪنهن شروعات جي ضرورت ناهي). هر پردي سان لاڳاپيل DMA درخواست تي تفصيل لاءِ پراڊڪٽ ريفرنس مينوئل ڏانهن رجوع ڪريو. هڪ ڏنل چينل لاءِ، HAL_DMA_Init() API هيٺ ڏنل پيرا ميٽرز ذريعي گهربل ترتيب جي پروگرامنگ جي اجازت ڏئي ٿو: · منتقلي جي هدايت · ماخذ ۽ منزل ڊيٽا فارميٽ · سرڪيولر، عام ڪنٽرول موڊ · چينل جي ترجيحي سطح · ماخذ ۽ منزل انڪريمينٽ موڊ · هارڊويئر جي درخواست سان ڳنڍيل آهي پردي
ٻه آپريٽنگ موڊ موجود آهن: · پولنگ موڊ I/O آپريشن
1. استعمال ڪريو HAL_DMA_Start() DMA منتقلي کي شروع ڪرڻ لاءِ جڏهن ماخذ ۽ منزلن جا پتا ۽ ڊيٽا جي ڊگھائي کي ترتيب ڏني وئي جيڪا منتقل ڪئي ويندي.
2. استعمال ڪريو HAL_DMA_PollForTransfer() موجوده منتقلي جي خاتمي لاءِ پول ڪرڻ لاءِ. انهي صورت ۾ هڪ مقرر وقت ختم ٿي سگهي ٿو ترتيب ڏئي سگهجي ٿو صارف جي ايپليڪيشن جي بنياد تي.

UM3029 - Rev 1

صفحو 23/1419

نوٽ: نوٽ:
3.12
3.12.1

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي
· مداخلت موڊ I/O آپريشن 1. HAL_NVIC_SetPriority() استعمال ڪندي DMA مداخلت جي ترجيح کي ترتيب ڏيو. 2. HAL_NVIC_EnableIRQ() استعمال ڪندي DMA IRQ ھينڊلر کي فعال ڪريو. 3. استعمال ڪريو HAL_DMA_Start_IT() DMA منتقلي کي شروع ڪرڻ لاءِ جڏهن ماخذ ۽ منزلن جا پتا ۽ ڊيٽا جي ڊگھائي جيڪا منتقل ڪئي وڃي ٿي ترتيب ڏني وئي. انهي صورت ۾ ڊي ايم اي مداخلت ترتيب ڏني وئي آهي. 4. استعمال ڪريو HAL_DMA_IRQHandler() سڏجي ٿو DMA_IRQHandler() Interrupt subroutine تحت. 5. جڏهن ڊيٽا جي منتقلي مڪمل ٿئي ٿي، HAL_DMA_IRQHandler() فنڪشن تي عمل ڪيو ويندو آهي ۽ هڪ صارف فنڪشن کي ڪسٽمائيزنگ ڪري سگهجي ٿو XferCpltCallback ۽ XferErrorCallback فنڪشن پوائنٽر (جيڪو DMA هينڊل ڍانچي جو ميمبر آهي).
موثر DMA انتظام کي يقيني بڻائڻ لاءِ اضافي فنڪشن ۽ ميڪرو موجود آهن: · DMA اسٽيٽ واپس ڪرڻ لاءِ HAL_DMA_GetState() فنڪشن استعمال ڪريو ۽ غلطي جي صورت ۾ HAL_DMA_GetError()
پتو لڳائڻ. · موجوده منتقلي کي ختم ڪرڻ لاءِ HAL_DMA_Abort() فنڪشن استعمال ڪريو. سڀ کان وڌيڪ استعمال ٿيل DMA HAL ڊرائيور ميڪرو ھيٺ ڏنل آھن: · __HAL_DMA_ENABLE: مخصوص DMA چينل کي فعال ڪري ٿو · __HAL_DMA_DISABLE: مخصوص DMA چينل کي غير فعال ڪري ٿو · __HAL_DMA_GET_FLAG: حاصل ڪري ٿو DMA چينل پينڊنگ فليگ · __HAL_DMA_HAL_C ALDMA_HALD جھنڊو صاف ڪري ٿو. ENABLE_IT: کي فعال ڪري ٿو مخصوص ڊي ايم اي چينل مداخلت · __HAL_DMA_DISABLE_IT: مخصوص DMA چينل مداخلت کي غير فعال ڪري ٿو · __HAL_DMA_GET_IT_SOURCE: چيڪ ڪري ٿو ته ڇا مخصوص ڊي ايم اي چينل مداخلت کي فعال ڪيو ويو آهي يا
نه جڏهن هڪ پردي کي DMA موڊ ۾ استعمال ڪيو ويندو آهي، DMA جي شروعات کي HAL_PPP_MspInit() ڪال بڪ ۾ ٿيڻ گهرجي. اضافي طور تي، صارف جي ايپليڪيشن کي لازمي طور تي DMA هينڊل کي PPP هينڊل سان ڳنڍڻ گهرجي (حوالو سيڪشن "HAL IO آپريشن افعال"). ڊي ايم اي چينل ڪال بڪ کي صرف ميموري کان ميموري جي منتقلي جي صورت ۾ صارف جي ايپليڪيشن ذريعي شروع ڪرڻ جي ضرورت آهي. جڏهن ته پردي کان ياداشت جي منتقلي کي استعمال ڪيو ويندو آهي، اهي ڪال بڪ خودڪار طريقي سان شروع ڪيا ويندا آهن هڪ پروسيس API فنڪشن کي ڪال ڪندي جيڪو DMA استعمال ڪري ٿو.
HAL ڊرائيور ڪيئن استعمال ڪجي
HAL استعمال جا ماڊل ھيٺ ڏنل شڪل ڏيکاري ٿو HAL ڊرائيور جي عام استعمال ۽ ايپليڪيشن استعمال ڪندڙ، HAL ڊرائيور ۽ مداخلت جي وچ ۾ رابطي.

UM3029 - Rev 1

صفحو 24/1419

stm32c0xxx_it.c
DMAx_IRQHandler يا
PPP_IRQHandler

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

شڪل 7. HAL ڊرائيور ماڊل

hal_msp.c app.c/main.c
1. پي پي پي هينڊل جو اعلان ڪريو 2. انٽ هينڊل پارمس 3. ڪال ڪريو HAL_PPP_init()
HAL_PPP_Mspinit()

stm32c0xxx_hal_ppp.c

خدمتون

stm32c0xx_hal_gpio.c/h

HAL_PPP_Init()

stm32c0xx_hal_rcc.c/h stm32c0xx_hal_nvic.c/h

ڪال ڪريو HAL_PPP_Process()

HAL_PPP_Process()

stm32c0xx_hal_dma.c/h

مداخلت ماڊل

DMA ماڊل

Hal_PPP_ProcessCpltCallBack() Hal_PPP_ErrorCallBack()

ڪال ڪريو HAL_PPP_DeInit() HAL_PPP_MspDeinit()

HAL_PPP_DeInit()

نوٽ:
3.12.2 3.12.2.1

HAL ڊرائيور ۾ لاڳو ڪيل افعال سائي رنگ ۾ ڏيکاريا ويا آھن، ڊاٽ ٿيل لائنن ۾ مداخلت ڪندڙ ھينڊلر کان سڏيا ويا آھن، ۽ ايم ايس پي افعال ڳاڙھي ۾ استعمال ڪندڙ ايپليڪيشن ۾ لاڳو ڪيا ويا آھن. غير نقطي لائينون صارف جي ايپليڪيشن افعال جي وچ ۾ رابطي جي نمائندگي ڪن ٿيون. بنيادي طور تي، HAL ڊرائيور APIs کي صارف کان سڏيو ويندو آهي files ۽ اختياري طور تي مداخلت ڪرڻ وارن کان file جڏهن APIs جي بنياد تي ڊي ايم اي يا پي پي پي پرديري وقف وقفا استعمال ڪيا ويندا آهن. جڏهن ڊي ايم اي يا پي پي پي پرديري مداخلتون استعمال ڪيون وينديون آهن، پي پي پي پروسيس مڪمل ڪال بڪ سڏيا ويندا آهن صارف کي ڄاڻ ڏيڻ لاءِ پروسيس مڪمل ٿيڻ بابت ريئل ٽائيم ايونٽ موڊ (انٽرپٽس). نوٽ ڪريو ته ساڳيو عمل مڪمل ٿيڻ واري ڪال بڪ ڊي ايم اي لاءِ مداخلت واري موڊ ۾ استعمال ٿينديون آهن.
HAL جي شروعات
HAL عالمي شروعات کان علاوه پردي جي شروعات ۽ ختم ڪرڻ جي ڪمن کان علاوه، APIs جو هڪ سيٽ مهيا ڪيو ويو آهي شروع ڪرڻ لاءِ HAL ڪور ۾ لاڳو ڪيل. file stm32c0xx_hal.c. · HAL_Init(): ايپليڪيشن جي شروعات تي هن فنڪشن کي سڏڻ گهرجي
ڊيٽا/هدايت واري ڪيش کي شروع ڪريو ۽ اڳي آڻڻ واري قطار سيٽ ڪريو SysTick ٽائمر هر 1ms (HSI گھڙي جي بنياد تي) وقفو پيدا ڪرڻ لاءِ سڀ کان گھٽ ترجيح ڪال HAL_MspInit() صارف ڪال بڪ فنڪشن سان سسٽم جي سطح جي شروعاتن کي انجام ڏيڻ لاءِ (ڪلاڪ، GPIOs، DMA،
مداخلت). HAL_MspInit () HAL ڊرائيورن ۾ "ضعيف" خالي فنڪشن جي طور تي بيان ڪيو ويو آهي. · HAL_DeInit()
ري سيٽ ڪري ٿو سڀني پرديري ڪالز فنڪشن HAL_MspDeInit() جيڪو سسٽم ليول ڊي-انٽيلائيزيشن ڪرڻ لاءِ صارف ڪال بيڪ فنڪشن آهي.

UM3029 - Rev 1

صفحو 25/1419

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

3.12.2.2 3.12.2.3

· HAL_GetTick(): هي فنڪشن موجوده SysTick ڪائونٽر ويليو حاصل ڪري ٿو (SysTick interrupt ۾ وڌايل) پرفيرل ڊرائيورن طرفان استعمال ڪيو ويو ٽائيم آئوٽ کي سنڀالڻ لاءِ.
· HAL_Delay(). هي فنڪشن دير سان لاڳو ٿئي ٿو (ملي سيڪنڊن ۾ بيان ڪيل) SysTick ٽائمر استعمال ڪندي.
HAL_Delay() استعمال ڪرڻ وقت احتياط ڪرڻ گھرجي ڇو ته ھي فنڪشن ھڪ درست دير مهيا ڪري ٿو (ملي سيڪنڊن ۾ بيان ڪيل) ھڪ متغير جي بنياد تي SysTick ISR ۾ واڌارو. هن جو مطلب اهو آهي ته جيڪڏهن HAL_Delay() کي پردي جي ISR مان سڏيو وڃي ٿو، ته پوءِ SysTick مداخلت کي پردي جي مداخلت کان اعليٰ ترجيح (عددي طور تي گهٽ) هجڻ گهرجي، ٻي صورت ۾ ڪال ڪندڙ ISR بلاڪ ڪيو ويو آهي.
سسٽم گھڙي جي شروعات گھڙي جي ترتيب يوزر ڪوڊ جي شروعات ۾ ڪئي وئي آھي. جڏهن ته صارف پنهنجي ڪوڊ ۾ گھڙي جي ترتيب کي تبديل ڪري سگهي ٿو.
HSE گھڙي جي بنياد تي 48 MHz جي وڌ ۾ وڌ گھڙي جي تعدد تائين پھچڻ لاءِ عام گھڙي جي ترتيب جي ترتيب ھيٺ.
/** * مختصر سسٽم گھڙي جي ترتيب * @retval ڪو به نه */
void SystemClock_Config(void) {
RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** RCC_OscInitTypeDef ڍانچي ۾ مخصوص پيٽرولر * RCC Oscillators جي شروعات ڪري ٿو. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI؛ RCC_OscInitStruct.HSIState = RCC_HSI_ON؛ RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT؛ جيڪڏهن (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
Error_Handler()؛ } /** CPU، AHB ۽ APB بسن جي گھڙين کي شروع ڪري ٿو */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1؛ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI؛ RCC_ClkInitStruct.SYSCLKDivder = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.AHBCLKDivder = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivder = RCC_APB1_DIV1;
جيڪڏهن (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) {
Error_Handler()؛ } }
HAL MSP شروعاتي عمل HAL_PPP_Init() ذريعي پردي جي شروعات ڪئي ويندي آهي جڏهن ته هارڊويئر وسيلن جي شروعات هڪ پردي (PPP) پاران استعمال ڪئي ويندي آهي هن شروعات دوران MSP ڪالبڪ فنڪشن HAL_PPP_MspInit ().
MspInit ڪال بڪ مختلف اضافي هارڊويئر وسيلن سان لاڳاپيل هيٺين سطح جي شروعات کي انجام ڏئي ٿو: RCC، GPIO، NVIC ۽ DMA.
هينڊلز سان گڏ سڀئي HAL ڊرائيور شامل آهن شروع ڪرڻ ۽ شروع ڪرڻ لاءِ ٻه MSP ڪال بڪ:

UM3029 - Rev 1

صفحو 26/1419

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

3.12.3 3.12.3.1

/** * @brief PPP MSP جي شروعات ڪري ٿو. * @param hppp: PPP هينڊل * @retval None */ void __weak HAL_PPP_MspInit(PPP_HandleTypeDef *hppp) { /* نوٽ: هن فنڪشن کي تبديل نه ڪيو وڃي، جڏهن ڪال بڪ جي ضرورت هجي، HAL_PPP_MspInit استعمال ڪندڙ ۾ لاڳو ٿي سگهي ٿي file */ } /** * @brief DeInitializes PPP MSP. * @param hppp: PPP هينڊل * @retval None */ void __weak HAL_PPP_MspDeInit(PPP_HandleTypeDef *hppp) { /* نوٽ: هن فنڪشن کي تبديل نه ڪيو وڃي، جڏهن ڪال بڪ جي ضرورت هجي، HAL_PPP_MspDeInit استعمال ڪندڙ ۾ لاڳو ٿي سگهي ٿي. file */ }
ايم ايس پي ڪالبڪس کي خالي قرار ڏنو ويو آهي جيئن هر پردي ڊرائيور ۾ ڪمزور افعال. صارف انھن کي استعمال ڪري سگھي ٿو گھٽ سطح جي شروعاتي ڪوڊ کي سيٽ ڪرڻ لاءِ يا انھن کي ختم ڪرڻ ۽ پنھنجي شروعاتي استعمال جو معمول استعمال ڪري سگھي ٿو. HAL MSP ڪالبڪ stm32c0xx_hal_msp.c اندر لاڳو ڪيو ويو آهي file استعمال ڪندڙ فولڊر ۾. هڪ stm32c0xx_hal_msp.c file ٽيمپليٽ HAL فولڊر ۾ واقع آهي ۽ ان کي يوزر فولڊر ۾ نقل ڪيو وڃي. اهو خودڪار طريقي سان ٺاهي سگھجي ٿو STM32CubeMX اوزار ۽ وڌيڪ تبديل ٿيل. نوٽ ڪريو ته سڀئي روٽين کي ضعيف افعال قرار ڏنو ويو آھي ۽ صارف جي گھٽ سطح جي شروعاتي ڪوڊ کي استعمال ڪرڻ لاءِ ختم ڪري سگھجي ٿو. stm32c0xx_hal_msp.c file ھيٺ ڏنل افعال تي مشتمل آھي:

معمول جي باطل HAL_MspInit() void HAL_MspDeInit() void HAL_PPP_MspInit() void HAL_PPP_MspDeInit()

جدول 14. MSP افعال وضاحت
گلوبل ايم ايس پي جي شروعات جو معمول گلوبل ايم ايس پي کي ختم ڪرڻ جو معمول
پي پي پي ايم ايس پي جي شروعات جو معمول پي پي پي ايم ايس پي کي ختم ڪرڻ جو معمول

ڊفالٽ طور، جيڪڏهن پروگرام جي عمل جي دوران ڪنهن به پردي کي ختم ڪرڻ جي ضرورت ناهي، مڪمل MSP شروعاتي Hal_MspInit () ۽ MSP ڊي-ابتدائي ۾ Hal_MspDeInit (). ھن حالت ۾ HAL_PPP_MspInit () ۽ HAL_PPP_MspDeInit () لاڳو نه آھن. جڏهن رن ٽائم ۾ هڪ يا وڌيڪ پردي کي ختم ڪرڻ جي ضرورت آهي ۽ هڪ ڏنل پردي جي هيٺين سطح جي وسيلن کي ڇڏڻ جي ضرورت آهي ۽ ٻئي پردي طرفان استعمال ڪيو وڃي ٿو، HAL_PPP_MspDeInit() ۽ HAL_PPP_MspInit() لاڳاپيل پردي ۽ ٻين پردي جي شروعات لاءِ لاڳو ڪيا ويندا آهن. ۽ ڊي-شروعات کي عالمي HAL_MspInit() ۽ HAL_MspDeInit() ۾ رکيو ويو آهي. جيڪڏهن عالمي HAL_MspInit() ۽ HAL_MspDeInit() پاران شروعات ڪرڻ لاءِ ڪجھ به نه آهي، ته ٻن معمولن کي صرف ختم ڪري سگهجي ٿو.
HAL I/O آپريشن جو عمل اندروني ڊيٽا پروسيسنگ سان HAL افعال جهڙوڪ ٽرانسمٽ، وصول، لکڻ ۽ پڙھڻ کي عام طور تي ٽن ڊيٽا پروسيسنگ طريقن سان مهيا ڪيو ويو آھي: · پولنگ موڊ · مداخلت موڊ · DMA موڊ
پولنگ موڊ پولنگ موڊ ۾، HAL فنڪشن ان وقت پروسيس اسٽيٽس کي موٽائي ٿو جڏهن بلاڪنگ موڊ ۾ ڊيٽا پروسيسنگ مڪمل ٿئي ٿي. آپريشن کي مڪمل سمجهيو ويندو آهي جڏهن فنڪشن واپس ڪري ٿو HAL_OK اسٽيٽس، ٻي صورت ۾ هڪ غلطي جي صورتحال واپس ڪئي وئي آهي. استعمال ڪندڙ HAL_PPP_GetState() فنڪشن ذريعي وڌيڪ معلومات حاصل ڪري سگهي ٿو. ڊيٽا پروسيسنگ اندروني طور تي لوپ ۾ سنڀاليو ويندو آهي. هڪ ٽائم آئوٽ (ايم ايس ۾ ظاهر ڪيو ويو) عمل جي پھانسي کي روڪڻ لاء استعمال ڪيو ويندو آهي. سابقampهيٺ ڏنل ڏيکاري ٿو عام پولنگ موڊ پروسيسنگ تسلسل:

UM3029 - Rev 1

صفحو 27/1419

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

3.12.3.2

HAL_StatusTypeDef HAL_PPP_Transmit ( PPP_HandleTypeDef * phandle, uint8_t pData, int16_tSize,uint32_tTimeout) { if((pData == NULL) || (سائز == 0)) { واپسي HAL_ER؛ يا } (...) جڏهن ته (ڊيٽا پروسيسنگ هلندڙ آهي) { if( timeout پهچي ويو) { واپسي HAL_TIMEOUT؛ } } (…) واپسي HAL_OK؛ }
مداخلت موڊ
مداخلت واري موڊ ۾، HAL فنڪشن ڊيٽا پروسيسنگ شروع ڪرڻ ۽ مناسب مداخلت کي چالو ڪرڻ کان پوء پروسيس جي صورتحال کي واپس ڪري ٿو. آپريشن جي پڄاڻيءَ طرف اشارو ڪيو ويو آھي ڪال بڪ کي ڪمزور فعل قرار ڏنو ويو آھي. اهو صارف طرفان ترتيب ڏئي سگهجي ٿو ته عمل جي مڪمل ٿيڻ بابت حقيقي وقت ۾ ڄاڻايو وڃي. استعمال ڪندڙ پڻ HAL_PPP_GetState() فنڪشن ذريعي پروسيس اسٽيٽس حاصل ڪري سگهي ٿو.
مداخلت واري موڊ ۾، ڊرائيور ۾ چار افعال بيان ڪيا ويا آهن: · HAL_PPP_Process_IT (): عمل کي شروع ڪري ٿو · HAL_PPP_IRQHandler (): گلوبل پي پي پي پرديري مداخلت · __weak HAL_PPP_ProcessCpltCallback (): عمل جي مڪمل ٿيڻ سان لاڳاپيل ڪال بيڪ. · __weak HAL_PPP_ProcessErrorCallback(): عمل جي غلطي سان لاڳاپيل ڪال بيڪ. مداخلت موڊ ۾ عمل کي استعمال ڪرڻ لاء، HAL_PPP_Process_IT() سڏيو ويندو آهي صارف ۾ file ۽ HAL_PPP_IRQHandler stm32c0xx_it.c ۾. HAL_PPP_ProcessCpltCallback() فنڪشن کي ڊرائيور ۾ ڪمزور فنڪشن قرار ڏنو ويو آهي. هن جو مطلب آهي ته صارف ان کي ٻيهر ايپليڪيشن ۾ اعلان ڪري سگهي ٿو. ڊرائيور ۾ فنڪشن تبديل نه ڪيو ويو آهي.
هڪ سابقampاستعمال جو استعمال ھيٺ ڏنل آھي: main.c file:
UART_HandleTypeDef UartHandle؛ int main(void) { /* User Parameters سيٽ ڪريو */ UartHandle.Init.BaudRate = 9600؛ UartHandle.Init.WordLength = UART_DATABITS_8 ; UartHandle.Init.StopBits = UART_STOPBITS_1؛ UartHandle.Init.Parity = UART_PARITY_NONE؛ UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE؛ UartHandle.Init.Mode = UART_MODE_TX_RX؛ UartHandle.Init.Instance = USART1؛ HAL_UART_Init(&UartHandle)؛ HAL_UART_SendIT(&UartHandle, TxBuffer, sizeof(TxBuffer)); جڏهن ته (1)؛ } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { } void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { }

UM3029 - Rev 1

صفحو 28/1419

3.12.3.3

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي
stm32c0xx_it.cfile:
extern UART_HandleTypeDef UartHandle؛ void USART1_IRQHandler (void) { HAL_UART_IRQHandler (&UartHandle)؛ }
DMA موڊ DMA موڊ ۾، HAL فنڪشن DMA ذريعي ڊيٽا پروسيسنگ شروع ڪرڻ کان پوء ۽ مناسب DMA مداخلت کي چالو ڪرڻ کان پوء عمل جي حالت واپس ڪري ٿو. آپريشن جي پڄاڻي کي اشارو ڪيو ويو آھي ڪال بڪ طرفان جيڪو ضعيف فعل قرار ڏنو ويو آھي ۽ صارف کي ترتيب ڏئي سگھجي ٿو ته جيئن اصل وقت ۾ عمل جي مڪمل ٿيڻ بابت ڄاڻ ڏني وڃي. استعمال ڪندڙ پڻ HAL_PPP_GetState() فنڪشن ذريعي پروسيس اسٽيٽس حاصل ڪري سگهي ٿو. DMA موڊ لاءِ، ڊرائيور ۾ ٽي افعال بيان ڪيا ويا آهن: · HAL_PPP_Process_DMA(): عمل شروع ڪريو · HAL_PPP_DMA_IRQHandler(): PPP پردي پاران استعمال ٿيل DMA مداخلت · __weak HAL_PPP_ProcessCpltCallback(): عمل جي مڪمل ٿيڻ سان لاڳاپيل ڪال بڪ. · __weak HAL_PPP_ErrorCpltCallback(): عمل جي غلطي سان لاڳاپيل ڪال بڪ. DMA موڊ ۾ هڪ عمل کي استعمال ڪرڻ لاء، HAL_PPP_Process_DMA() سڏيو ويندو آهي صارف ۾ file ۽ HAL_PPP_DMA_IRQHandler() stm32c0xx_it.c ۾ رکيل آهي. جڏهن DMA موڊ استعمال ڪيو ويندو آهي، DMA شروعات ڪئي ويندي آهي HAL_PPP_MspInit() ڪال بڪ ۾. استعمال ڪندڙ کي به DMA هينڊل کي PPP هينڊل سان ڳنڍڻ گهرجي. هن مقصد لاء، سڀني پردي ڊرائيورن جا هينڊلز جيڪي DMA استعمال ڪن ٿا انهن کي هن ريت قرار ڏنو وڃي:
typedef struct { PPP_TypeDef *مثال؛ /* رجسٽر جو بنيادي پتو */ PPP_InitTypeDef Init؛ /* پي پي پي ڪميونيڪيشن پيٽرولر */ HAL_StateTypeDef State؛ /* پي پي پي ڪميونيڪيشن اسٽيٽ */ (…) DMA_HandleTypeDef *hdma؛ /* لاڳاپيل DMA هينڊل */ } PPP_HandleTypeDef؛
شروعات هن ريت ڪئي وئي آهي (UART example):
int main(void) { /* User Parameters سيٽ ڪريو */ UartHandle.Init.BaudRate = 9600؛ UartHandle.Init.WordLength = UART_DATABITS_8 ; UartHandle.Init.StopBits = UART_STOPBITS_1؛ UartHandle.Init.Parity = UART_PARITY_NONE؛ UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE؛ UartHandle.Init.Mode = UART_MODE_TX_RX؛ UartHandle.Init.Instance = UART1؛ HAL_UART_Init(&UartHandle)؛ (..) } void HAL_USART_MspInit (UART_HandleTypeDef * huart) { جامد DMA_HandleTypeDef hdma_tx؛ جامد DMA_HandleTypeDef hdma_rx؛ (…) __HAL_LINKDMA(UartHandle, DMA_Handle_tx, hdma_tx)؛ __HAL_LINKDMA(UartHandle, DMA_Handle_rx, hdma_rx)؛ (…)}
HAL_PPP_ProcessCpltCallback() فنڪشن کي ڊرائيور ۾ ڪمزور فنڪشن قرار ڏنو ويو آهي، مطلب ته، صارف ان کي ٻيهر ايپليڪيشن ڪوڊ ۾ اعلان ڪري سگهي ٿو. ڊرائيور ۾ فنڪشن تبديل نه ٿيڻ گهرجي. هڪ سابقampاستعمال جو طريقو هيٺ بيان ڪيو ويو آهي:

UM3029 - Rev 1

صفحو 29/1419

3.12.4 3.12.4.1

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

مکيه.c file:
UART_HandleTypeDef UartHandle؛ int main(void) { /* User Paramaters سيٽ ڪريو */ UartHandle.Init.BaudRate = 9600؛ UartHandle.Init.WordLength = UART_DATABITS_8 ; UartHandle.Init.StopBits = UART_STOPBITS_1؛ UartHandle.Init.Parity = UART_PARITY_NONE؛ UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE؛ UartHandle.Init.Mode = UART_MODE_TX_RX؛ UartHandle.Init.Instance = USART1؛ HAL_UART_Init(&UartHandle)؛ HAL_UART_Send_DMA(&UartHandle, TxBuffer, sizeof(TxBuffer)); جڏهن ته (1)؛ } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *phuart) { } void HAL_UART_TxErrorCallback(UART_HandleTypeDef *phuart) { }
stm32c0xx_it.c file:
extern UART_HandleTypeDef UartHandle؛ void DMAx_IRQHandler (void) { HAL_DMA_IRQHandler (&UartHandle.DMA_Handle_tx)؛ }
HAL_USART_TxCpltCallback() ۽ HAL_USART_ErrorCallback() کي HAL_PPP_Process_DMA() فنڪشن ۾ DMA منتقلي مڪمل ڪال بڪ ۽ DMA منتقلي ايرر ڪال بيڪ سان ڳنڍيل هجڻ گھرجي ھيٺ ڏنل بيان استعمال ڪندي:
HAL_PPP_Process_DMA (PPP_HandleTypeDef *hppp، Params….) { (…) hppp->DMA_Handle->XferCpltCallback = HAL_UART_TxCpltCallback ؛ hppp->DMA_Handle->XferErrorCallback = HAL_UART_ErrorCallback ؛ (…)}

وقت ختم ٿيڻ ۽ غلطي جو انتظام
ٽائم آئوٽ مئنيجمينٽ ٽائم آئوٽ اڪثر APIs لاءِ استعمال ٿيندو آهي جيڪي پولنگ موڊ ۾ هلن ٿا. اهو دير جي وضاحت ڪري ٿو جنهن جي دوران هڪ بلاڪنگ عمل کي انتظار ڪرڻ گهرجي جيستائين هڪ غلطي واپس نه اچي. هڪ سابقample هيٺ ڏنل آهي: HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t وقت ختم)
وقت ختم ٿيڻ ممڪن قدر ھيٺ ڏنل آھن:

جدول 15. ٽائم آئوٽ ويلز

وقت ختم ٿيڻ جو قدر

وصف

0

ڪو به پول: فوري عمل چيڪ ڪريو ۽ نڪرڻ

1 … (HAL_MAX_DELAY -1) (1)

ms ۾ وقت ختم

HAL_MAX_DELAY

لامحدود پول جيستائين عمل ڪامياب نه ٿئي

1. HAL_MAX_DELAY stm32c0xx_hal_def.h ۾ وضاحت ڪئي وئي آهي 0xFFFFFFFF

جڏهن ته، ڪجهه حالتن ۾، هڪ مقرر وقت استعمال ڪيو ويندو آهي سسٽم پرديئرز يا اندروني HAL ڊرائيور جي عملن لاءِ. انهن حالتن ۾، وقت ختم ٿيڻ جو ساڳيو مطلب آهي ۽ ساڳئي طريقي سان استعمال ڪيو ويندو آهي، سواء جڏهن اهو مقامي طور تي ڊرائيور ۾ بيان ڪيو ويو آهي ۽ تبديل نه ٿي ڪري سگھجي يا صارف ايپليڪيشن ۾ دليل جي طور تي متعارف ڪرايو وڃي.

UM3029 - Rev 1

صفحو 30/1419

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

3.12.4.2

Exampمقرر وقت ختم:
# define LOCAL_PROCESS_TIMEOUT 100 HAL_StatusTypeDef HAL_PPP_Process(PPP_HandleTypeDef) { (…) ٽائم آئوٽ = HAL_GetTick() + LOCAL_PROCESS_TIMEOUT؛ (...) جڏهن ته (پروسيس جاري آهي) { (...) جيڪڏهن (HAL_GetTick () ٽائم آئوٽ) { /* پروسيس انلاڪ ٿيل */ __HAL_UNLOCK(hppp)؛ hppp->State= HAL_PPP_STATE_TIMEOUT؛ واپسي HAL_PPP_STATE_TIMEOUT؛ } } (…) }
هيٺيون سابقample ڏيکاري ٿو ته پولنگ جي ڪمن ۾ ٽائم آئوٽ کي ڪيئن استعمال ڪجي:
HAL_PPP_StateTypeDef HAL_PPP_Poll (PPP_HandleTypeDef *hppp, uint32_t ٽائم آئوٽ) { (…) ٽائم آئوٽ = HAL_GetTick() + ٽائم آئوٽ؛ (...) جڏهن ته (پروسيس جاري آهي) { (…) if(Timeout!= HAL_MAX_DELAY) { if(HAL_GetTick() timeout) { /* پروسيس انلاڪ ٿيل */ __HAL_UNLOCK(hppp)؛ hppp->State= HAL_PPP_STATE_TIMEOUT؛ واپسي hppp-> رياست؛ } } (…) }
غلطي جو انتظام
HAL ڊرائيور ھيٺ ڏنل شيون تي چيڪ لاڳو ڪندا آھن:
· صحيح پيرا ميٽرس: ڪجھ عمل لاءِ استعمال ٿيل پيرا ميٽر صحيح ۽ اڳ ۾ ئي بيان ڪيل ھجن، ٻي صورت ۾ سسٽم خراب ٿي سگھي ٿو يا اڻڄاتل حالت ۾ وڃي سگھي ٿو. اهي نازڪ پيٽرول استعمال ٿيڻ کان پهريان چڪاس ڪيا ويا آهن (ڏسو مثالampهيٺ ڏنل).
HAL_StatusTypeDef HAL_PPP_Process(PPP_HandleTypeDef* hppp, uint32_t *pdata, uint32 Size) { جيڪڏھن ((pData == NULL) || (سائز == 0)) { واپسي HAL_ERROR؛ } }

UM3029 - Rev 1

صفحو 31/1419

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

3.12.4.3

· صحيح هينڊل: پي پي پي پريئرل هينڊل سڀ کان اهم دليل آهي ڇاڪاڻ ته اهو پي پي پي ڊرائيور جي اهم پيرا ميٽرز کي رکي ٿو. اهو هميشه HAL_PPP_Init() فنڪشن جي شروعات ۾ چيڪ ڪيو ويندو آهي.
HAL_StatusTypeDef HAL_PPP_Init(PPP_HandleTypeDef* hppp) { جيڪڏھن (hppp == NULL) // ھينڊل اڳ ۾ ئي مختص ڪيو وڃي { واپسي HAL_ERROR؛ } }
· وقت ختم ٿيڻ جي غلطي: ھيٺ ڏنل بيان استعمال ڪيو ويندو آھي جڏھن وقت ختم ٿيڻ جي غلطي ٿئي ٿي:
جڏهن ته (عمل جاري آهي) { وقت ختم = HAL_GetTick () + وقت ختم؛ جڏهن (ڊيٽا پروسيسنگ هلندڙ آهي) { if(timeout) { واپسي HAL_TIMEOUT؛ } }
جڏهن هڪ پردي جي عمل دوران هڪ غلطي ٿئي ٿي، HAL_PPP_Process () هڪ HAL_ERROR اسٽيٽس سان واپس اچي ٿو. HAL PPP ڊرائيور HAL_PPP_GetError () لاڳو ڪري ٿو غلطي جي اصليت کي ٻيهر حاصل ڪرڻ جي اجازت ڏيڻ لاءِ.
HAL_PPP_ErrorTypeDef HAL_PPP_GetError (PPP_HandleTypeDef *hppp)؛
سڀني پردي جي هٿن ۾، هڪ HAL_PPP_ErrorTypeDef بيان ڪيو ويو آهي ۽ آخري غلطي ڪوڊ کي ذخيرو ڪرڻ لاء استعمال ڪيو ويو آهي.
typedef struct { PPP_TypeDef * مثال؛ /* پي پي پي رجسٽرڊ بنيادي ايڊريس */ PPP_InitTypeDef Init؛ /* پي پي پي شروعاتي پيٽرولر */ HAL_LockTypeDef Lock؛ /* پي پي پي لاڪنگ اعتراض */ __IO HAL_PPP_StateTypeDef اسٽيٽ؛ /* پي پي پي اسٽيٽ */ __IO HAL_PPP_ErrorTypeDef ErrorCode؛ /* پي پي پي ايرر ڪوڊ */ (…) /* پي پي پي مخصوص پيٽرول */ } PPP_HandleTypeDef؛
غلطي جي حالت ۽ پردي جي عالمي رياست هميشه غلطي کي واپس ڪرڻ کان اڳ اپڊيٽ ڪيو ويندو آهي: PPP->State = HAL_PPP_READY؛ /* مقرر ڪريو پردي جي تياري */ PP->ErrorCode = HAL_ERRORCODE ؛ /* غلطي ڪوڊ مقرر ڪريو */ _HAL_UNLOCK(PPP) ؛ /* PPP وسيلن کي انلاڪ ڪريو */ واپسي HAL_ERROR؛ /*HAL غلطي سان واپسي */
HAL_PPP_GetError () غلط ڪال بڪ ۾ مداخلت واري موڊ ۾ استعمال ٿيڻ گھرجي:
void HAL_PPP_ProcessCpltCallback(PPP_HandleTypeDef *hspi) { ErrorCode = HAL_PPP_GetError (hppp)؛ /* غلطي ڪوڊ ٻيهر حاصل ڪريو */ }
رن-ٽائم چيڪنگ HAL HAL ڊرائيور جي سڀني ڪمن جي ان پٽ ويلز کي جانچڻ سان رن-ٽائم ناڪامي جي سڃاڻپ کي لاڳو ڪري ٿو. رن-ٽائم چيڪنگ حاصل ڪئي وئي آھي assert_param macro استعمال ڪندي. هي ميڪرو HAL ڊرائيور جي سڀني ڪمن ۾ استعمال ٿيندو آهي جنهن ۾ هڪ ان پٽ پيٽرول هوندو آهي. اهو تصديق ڪرڻ جي اجازت ڏئي ٿو ته ان پٽ قيمت پيراميٽر جي اجازت ڏنل قدرن جي اندر آهي. رن-ٽائم چيڪنگ کي فعال ڪرڻ لاءِ، assert_param macro استعمال ڪريو، ۽ stm32c0xx_hal_conf.h ۾ بيان ڪيل USE_FULL_ASSERT کي غير تبصرو ڇڏي ڏيو. file.

UM3029 - Rev 1

صفحو 32/1419

يو ايم 3029
HAL ڊرائيور ڪيئن استعمال ڪجي

void HAL_UART_Init(UART_HandleTypeDef *huart) { (..) /* پيراميٽر چيڪ ڪريو */ assert_param(IS_UART_INSTANCE(huart->Instance))؛ assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate))؛ assert_param(IS_UART_WORD_LENGTH(huart->Init.WordLength))؛ assert_param(IS_UART_STOPBITS(huart->Init.StopBits))؛ assert_param(IS_UART_PARITY(huart->Init.Parity))؛ assert_param(IS_UART_MODE(huart->Init.Mode))؛ assert_param(IS_UART_HARDWARE_FLOW_CONTROL(huart->Init.HwFlowCtl))؛ (..)

ڌيان:

/** @defgroup UART_Word_Length * @{ */ #define UART_WORDLENGTH_8B ((uint32_t)0x00000000) #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M) #ThART_WORDLE(NG = TH_WORDLE(NG_ORDLE) = THART_WORDLE(NG_ULE) وضاحت ڪريو WORDLENGTH_8B) || ((LENGTH) == UART_WORDLENGTH_9B))
جيڪڏهن اظهار assert_param macro ڏانهن منتقل ڪيو ويو غلط آهي، theassert_failed فنڪشن سڏيو ويندو آهي ۽ ماخذ جو نالو واپس ڪندو file ۽ ڪال جو سورس لائن نمبر جيڪو ناڪام ٿيو. جيڪڏهن اظهار صحيح آهي، ڪابه قيمت واپس نه ڪئي وئي آهي. assert_param macro stm32c0xx_hal_conf.h ۾ لاڳو ڪيو ويو آهي:
/* ايڪسپورٽ ٿيل ميڪرو ——————————————————*/ #ifdef USE_FULL_ASSERT /** * @brief assert_param macro استعمال ڪيو ويندو آھي فنڪشن جي پيرا ميٽرز چيڪ ڪرڻ لاءِ. * @param expr: جيڪڏهن expr غلط آهي، اهو سڏي ٿو assert_failed فنڪشن * جيڪو ذريعو جي نالي جي رپورٽ ڪري ٿو file ۽ ڪال جو ذريعو * لائن نمبر جيڪو ناڪام ٿيو. * جيڪڏهن expr صحيح آهي، اهو ڪو قدر واپس نٿو ڪري. * @retval ڪو به نه */ # define assert_param(expr) ((expr)؟(void)0:assert_failed((uint8_t*)__FILE__، __LINE__)) /* برآمد ٿيل افعال ————————————–*/ void assert_failed(uint8_t* file, uint32_t لائن)؛ #else #define assert_param(expr)((void)0) #endif /*USE_FULL_ASSERT */
assert_failed فنڪشن main.c ۾ لاڳو ڪيو ويو آهي file يا ڪنهن ٻئي استعمال ڪندڙ ۾ C file:
#ifdef USE_FULL_ASSERT /** * مختصر رپورٽ ذريعن جو نالو file ۽ ماخذ لائن نمبر * جتي assert_param غلطي ٿي وئي آهي. * @پرم file: ذريعو ڏانهن اشارو file نالو * @param لائن: assert_param غلطي لائن سورس نمبر * @retval ڪو به نه */ void assert_failed(uint8_t* file, uint32_t لائن) { /* استعمال ڪندڙ کي رپورٽ ڪرڻ لاءِ پنهنجو عمل شامل ڪري سگھي ٿو file نالو ۽ لائن نمبر، مثال طور: printf ("غلط پيٽرولر ويل: file %s آن لائن %drn”, file، لائن) */ /* لاتعداد لوپ */ جڏهن ته (1) { } }
ڇاڪاڻ ته اوور هيڊ رن-ٽائم چيڪنگ متعارف ڪرايو ويو آهي، اها سفارش ڪئي وئي آهي ته ان کي ايپليڪيشن ڪوڊ ڊولپمينٽ ۽ ڊيبگنگ دوران استعمال ڪيو وڃي، ۽ ڪوڊ سائيز ۽ رفتار کي بهتر ڪرڻ لاءِ ان کي حتمي ايپليڪيشن مان هٽايو وڃي.

UM3029 - Rev 1

صفحو 33/1419

4
4.1
نوٽ:

يو ايم 3029
مٿانview گھٽ پرت ڊرائيورن جي

مٿانview گھٽ پرت ڊرائيورن جي

گھٽ-پرت (LL) ڊرائيورز تيار ڪيا ويا آھن پيش ڪرڻ لاءِ تيز ھلڪي وزن جي ماهر-ايجنڊا پرت جيڪا HAL کان وڌيڪ هارڊويئر جي ويجھو آھي. HAL جي برعڪس، LL APIs پرديئرز لاءِ مهيا نه ڪيا ويا آهن جتي بهتر رسائي هڪ اهم خصوصيت نه آهي، يا جن کي ڳري سافٽ ويئر جي جوڙجڪ ۽/يا پيچيده اپر-ليول اسٽيڪ جي ضرورت آهي (جهڙوڪ USB). ايل ايل ڊرائيور خاصيتون:
· ڊيٽا جي جوڙجڪ ۾ بيان ڪيل پيرا ميٽرز جي مطابق پردي جي مکيه خصوصيتن کي شروع ڪرڻ لاءِ افعال جو هڪ سيٽ
· فنڪشنز جو هڪ سيٽ جيڪو استعمال ڪيو ويندو آهي شروعاتي ڊيٽا جي جوڙجڪ کي ڀرڻ لاءِ هر فيلڊ جي ري سيٽ ويلز سان · پرفيرل ڊي انيشلائيزيشن انجام ڏيڻ لاءِ افعال (پريفيرل رجسٽرز انهن جي ڊفالٽ ويلز تي بحال ٿيل) · سڌي ۽ ايٽمي رجسٽر جي رسائي لاءِ ان لائن افعال جو هڪ سيٽ · مڪمل آزادي HAL کان وٺي LL ڊرائيور استعمال ڪري سگھجن ٿا يا ته اسٽينڊل موڊ ۾ (بغير HAL ڊرائيورن جي)
يا مخلوط موڊ ۾ (HAL ڊرائيورن سان) · سپورٽ ٿيل پردي جي خاصيتن جي مڪمل ڪوريج
گھٽ-پرت ڊرائيور STM32 پرديئرز جي دستياب خاصيتن جي بنياد تي هارڊويئر خدمتون مهيا ڪن ٿا. اهي خدمتون بلڪل هارڊويئر جي صلاحيتن کي ظاهر ڪن ٿيون ۽ هڪ شاٽ آپريشن مهيا ڪن ٿيون جن کي مائڪرو ڪنٽرولر لائن ريفرنس مينوئل ۾ بيان ڪيل پروگرامنگ ماڊل جي پٺيان سڏيو وڃي ٿو. نتيجي طور، LL خدمتون ڪنهن به پروسيسنگ تي عمل نه ڪندا آهن ۽ انهن جي رياستن، انسداد يا ڊيٽا پوائنٽرز کي بچائڻ لاء ڪنهن به اضافي ميموري وسيلن جي ضرورت ناهي: سڀني عملن سان لاڳاپيل پرديري رجسٽري مواد کي تبديل ڪندي انجام ڏنو ويندو آهي.
گھٽ پرت files
گھٽ-پرت ڊرائيور مٿي / سي جي چوڌاري ٺهيل آهن files (هڪ في هر هڪ سپورٽ ٿيل پردي) ۽ پنج هيڊر files ڪجهه سسٽم ۽ Cortex سان لاڳاپيل خاصيتن لاء.

ٽيبل 16. ايل ايل ڊرائيور files

File

وصف

stm32c0xx_ll_bus.h

هي آهي h-ذريعو file بنيادي بس ڪنٽرول ۽ پردي جي گھڙي چالو ڪرڻ ۽ غير فعال ٿيڻ Example: LL_AHB1_GRP1_EnableClock

stm32c0xx_ll_ppp.h/.c

stm32c0xx_ll_ppp.c پردي جي شروعاتي ڪم مهيا ڪري ٿي جهڙوڪ LL_PPP_Init()، LL_PPP_StructInit()، LL_PPP_DeInit(). ٻيا سڀئي APIs stm32c0xx_ll_ppp.h جي اندر بيان ڪيا ويا آهن file.
گھٽ-پرت پي پي پي ڊرائيور هڪ اسٽينڊل ماڊل آهي. ان کي استعمال ڪرڻ لاء، ايپليڪيشن کي لازمي طور تي شامل ڪيو وڃي stm32c0xx_ll_ppp.h file.

stm32c0xx_ll_cortex.h

Cortex-M سان لاڳاپيل رجسٽر آپريشن APIs جن ۾ سسٽڪ، گھٽ طاقت (جهڙوڪ LL_SYSTICK_xxxxx ۽ LL_LPM_xxxxx ”لو پاور موڊ“)

stm32c0xx_ll_utils.h/.c

هي file عام APIs کي ڍڪي ٿو: · ڊوائيس جي منفرد ID ۽ اليڪٽرانڪ دستخط کي پڙهو · ٽائم بيس ۽ دير جو انتظام · سسٽم ڪلاڪ جي ترتيب.

سسٽم سان لاڳاپيل آپريشن. stm32c0xx_ll_system.h
Example: LL_SYSCFG_xxx، LL_DBGMCU_xxx ۽ LL_FLASH_xxx

سانچو file assert_param macro کي بيان ڪرڻ جي اجازت ڏئي ٿي، جيڪو استعمال ڪيو ويندو آهي جڏهن رن-ٽائم چيڪنگ کي فعال ڪيو ويندو آهي. stm32_assert_template.h هي file صرف ان صورت ۾ گھربل آھي جڏھن LL ڊرائيور اسٽينڊل موڊ ۾ استعمال ڪيا وڃن (بغير HAL APIs کي سڏڻ جي). ان کي ايپليڪيشن فولڊر ۾ نقل ڪيو وڃي ۽ نالو تبديل ڪيو وڃي stm32_assert.h.

ڪا به ترتيب نه آهي file ايل ايل ڊرائيورز لاء. گھٽ پرت files ساڳئي HAL ڊرائيور فولڊر ۾ واقع آهن.

UM3029 - Rev 1

صفحو 34/1419

شڪل 8. گھٽ-پرت ڊرائيور فولڊر

يو ايم 3029
گھٽ پرت files

عام طور تي، گهٽ-پرت ڊرائيور صرف STM32 CMSIS ڊوائيس شامل آهن file. #شامل "stm32yyxx.h"

UM3029 - Rev 1

صفحو 35/1419

يو ايم 3029
مٿانview گھٽ-پرت APIs ۽ نالي جي ضابطن جو
شڪل 9. گھٽ-پرت ڊرائيور CMSIS files

4.2
4.2.1

درخواست files کي صرف استعمال ٿيل گھٽ-پرت ڊرائيور هيڊر شامل ڪرڻو پوندو files.
مٿانview گھٽ-پرت APIs ۽ نالي جي ضابطن جو
پردي جي شروعات جا ڪم ايل ايل ڊرائيور پيش ڪن ٿا ٽن سيٽن جي شروعاتي ڪمن جا. اهي stm32c0xx_ll_ppp.c ۾ بيان ڪيا ويا آهن file: · ڊيٽا ڍانچي ۾ بيان ڪيل پيرا ميٽرز جي مطابق پردي جي مکيه خصوصيتن کي شروع ڪرڻ لاءِ افعال · شروعاتي ڊيٽا ڍانچي کي هر فيلڊ جي ري سيٽ ويلز سان ڀرڻ لاءِ استعمال ٿيندڙ ڪمن جو هڪ سيٽ · پرفيرل ڊي-انيشنلائيزيشن لاءِ فنڪشن (پريفيرل رجسٽرز انهن جي ڊفالٽ ويلز تي بحال ٿيل) انهن LL شروعاتي ڪمن جي تعريف ۽ لاڳاپيل وسيلن (ڍانچي، لٽريلز ۽ پروٽوٽائپس) کي ترتيب ڏيڻ واري سوئچ سان مشروط ڪيو ويو آهي: USE_FULL_LL_DRIVER. انهن ڪمن کي استعمال ڪرڻ لاء، هي سوئچ ٽول چين ڪمپلر پري پروسيسر يا ڪنهن عام هيڊر ۾ شامل ڪيو وڃي. file جيڪو ايل ايل ڊرائيورز کان اڳ پروسيس ڪيو ويندو آهي. هيٺ ڏنل جدول ڏيکاري ٿو عام ڪمن جي فهرست جيڪي سڀني معاون پردي لاءِ مهيا ڪيل آهن:

UM3029 - Rev 1

صفحو 36/1419

يو ايم 3029
مٿانview گھٽ-پرت APIs ۽ نالي جي ضابطن جو

ٽيبل 17. عام پردي جي شروعات جا ڪم

فنڪشن LL_PPP_Init

واپسي جو قسم
· Error Status ·

LL_PPP_StructInit

باطل

·

LL_PPP_DeInit Error Status ·

پيرا ميٽر

وصف

PPP_TypeDef* PPPx LL_PPP_InitTypeDef* PPP_InitStruct LL_PPP_InitTypeDef* PPP_InitStruct
PPP_TypeDef* PPPx

PPP_InitStruct ۾ بيان ڪيل پيرا ميٽرز جي مطابق پردي جي مکيه خصوصيتن کي شروع ڪري ٿو.
Example: LL_USART_Init(USART_TypeDef *USARTx, LL_USART_InitTypeDef *USART_InitStruct)
هر PPP_InitStruct ميمبر کي ان جي ڊفالٽ ويل سان ڀري ٿو.
Exampلي. LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct)
پردي جي رجسٽرن کي ڊي-شروع ڪري ٿو، جيڪو انھن کي پنھنجي ڊفالٽ ري سيٽ ويلز ڏانھن بحال ڪري ٿو.
Exampلي. LL_USART_DeInit(USART_TypeDef *USARTx)

اضافي افعال ڪجھ پردي لاءِ موجود آھن (جدول 18 ڏانھن رجوع ڪريو. اختياري پردي جي شروعات جا ڪم).

جدول 18. اختياري پردي جي شروعات جا ڪم

افعال

واپسي جو قسم

پيرا ميٽر

Examples
PPP_InitStruct ۾ بيان ڪيل پيرا ميٽرز جي مطابق پردي خاصيتن کي شروع ڪري ٿو.

LL_PPP{_CATEGORY__Init

· Error Status ·

Exampاليزي:
LL_ADC_INJ_Init(ADC_TypeDef *ADCx، LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct)

PPP_TypeDef* PPPx LL_PPP{_CATEGORY__InitTypeDef* PPP{_CATEGORY__InitStruct

LL_RTC_TIME_Init(RTC_TypeDef *RTCx، uint32_t RTC_Format، LL_RTC_TimeTypeDef *RTC_TimeStruct)
LL_RTC_DATE_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_DateTypeDef *RTC_DateStruct)

LL_TIM_IC_Init(TIM_TypeDef* TIMx، uint32_t چينل، LL_TIM_IC_InitTypeDef* TIM_IC_InitStruct)

LL_PPP{_CATEGORY__StructInit

باطل

LL_PPP{_CATEGORY__InitTypeDef* PPP{_CATEGORY__InitStruct

LL_PPP_CommonInit

· Error Status ·

PPP_TypeDef* PPPx LL_PPP_CommonInitTypeDef* PPP_CommonInitStruct

LL_PPP_CommonStructInit

باطل

LL_PPP_CommonInitTypeDef* PPP_CommonInitStruct

LL_PPP_ClockInit

· Error Status ·

PPP_TypeDef* PPPx LL_PPP_ClockInitTypeDef* PPP_ClockInitStruct

LL_TIM_ENCODER_Init(TIM_TypeDef* TIMx, LL_TIM_ENCODER_InitTypeDef* TIM_EncoderInitStruct)
هر PPP{_CATEGORY__InitStruct ميمبر کي ان جي ڊفالٽ ويل سان ڀري ٿو.
Example: LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct)
ساڳئي پردي جي مختلف مثالن جي وچ ۾ حصيداري ڪيل عام خصوصيتن کي شروع ڪري ٿو.
Example: LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON، LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct)
هر PPP_CommonInitStruct ميمبر کي ان جي ڊفالٽ ويل سان ڀري ٿو
Example: LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct)
هم وقت سازي موڊ ۾ پردي جي گھڙي جي ترتيب کي شروع ڪري ٿو.

UM3029 - Rev 1

صفحو 37/1419

يو ايم 3029
مٿانview گھٽ-پرت APIs ۽ نالي جي ضابطن جو

افعال

واپسي جو قسم

LL_PPP_ClockStructInit

باطل

پيرا ميٽرز LL_PPP_ClockInitTypeDef*
PPP_ClockInitStruct

Examples
Example: LL_USART_ClockInit(USART_TypeDef *USARTx, LL_USART_ClockInitTypeDef *USART_ClockInitStruct)
هر PPP_ClockInitStruct ميمبر کي ان جي ڊفالٽ ويل سان ڀري ٿو
Example: LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct)

4.2.1.1
نوٽ: 4.2.2

HAL ڊرائيورن وانگر رن-ٽائم چيڪنگ، LL شروعاتي فنڪشن رن-ٽائم ناڪامي جي سڃاڻپ کي لاڳو ڪري ٿو سڀني LL ڊرائيور افعال جي ان پٽ ويلز کي چيڪ ڪندي. وڌيڪ تفصيل لاءِ، ڏسو سيڪشن 3.12.4.3 رن-ٽائم چيڪنگ. LL ڊرائيورن کي اسٽينڊالون موڊ ۾ استعمال ڪرڻ وقت (HAL افعال کي ڪال ڪرڻ کان سواءِ)، رن-ٽائم چيڪنگ کي استعمال ڪرڻ لاءِ ھيٺين عملن جي ضرورت پوندي آھي: 1. stm32_assert_template.h کي ايپليڪيشن فولڊر ۾ نقل ڪريو ۽ ان جو نالو تبديل ڪريو stm32_assert.h. هي file وضاحت ڪري ٿو
assert_param macro جيڪو استعمال ڪيو ويندو آهي جڏهن رن-ٽائم چيڪنگ کي فعال ڪيو ويندو آهي. 2. شامل ڪريو stm32_assert.h file ايپليڪيشن جي مکيه هيڊر ۾ file. 3. استعمال ڪريو USE_FULL_ASSERT تاليف سوئچ ٽول چين ڪمپائلر پري پروسيسر ۾ يا ڪنهن به عام ۾
هيڊر file جيڪو stm32_assert.h ڊرائيور کان اڳ پروسيس ڪيو ويو آهي. ايل ايل ان لائن افعال لاءِ رن-ٽائم چيڪنگ دستياب ناهي.
پردي جي رجسٽر-سطح جي ٺاھ جوڙ جا ڪم پردي جي شروعاتي ڪمن جي چوٽي تي، ايل ايل ڊرائيور سڌو ايٽمي رجسٽر جي رسائي لاء ان لائن افعال جو ھڪڙو سيٽ پيش ڪن ٿا. انهن جي شڪل هن ريت آهي:
__STATIC_INLINE return_type LL_PPP_Function (PPPx_TypeDef *PPPx، args)
"فنڪشن" جي نالي جي وضاحت ڪئي وئي آهي عمل جي درجي جي لحاظ سان: · مخصوص مداخلت، ڊي ايم اي درخواست ۽ اسٽيٽس فليگ مئنيجمينٽ: سيٽ ڪريو/حاصل ڪريو/صاف ڪريو/ فعال/ غير فعال ڪريو پرچم تي
مداخلت ۽ اسٽيٽس رجسٽر

جدول 19. مخصوص مداخلت، ڊي ايم اي درخواست ۽ اسٽيٽس فليگ مينيجمينٽ

نالو
LL_PPP_{_CATEGORY__ActionItem_BITNAME LL_PPP{_CATEGORY__IsItem_BITNAME_Action

Examples
· LL_RCC_IsActiveFlag_LSIRDY · LL_RCC_IsActiveFlag_FWRST() · LL_ADC_ClearFlag_EOC(ADC1) · LL_DMA_ClearFlag_TCx(DMA_TypeDef* DMAx)

نوٽ:

شين جي پرچم مداخلت
ڊي ايم اي

عمل پڌرو ٿيو
لائق بنائڻ ختم ڪرڻ
حاصل ڪريو فعال ڪريو غير فعال ڪريو
حاصل ڪريو

ٽيبل 20. دستياب فنڪشن فارميٽ
فارميٽ LL_PPP_IsActiveFlag_BITNAME
LL_PPP_ClearFlag_BITNAME LL_PPP_EnableIT_BITNAME LL_PPP_DisableIT_BITNAME LL_PPP_IsEnabledIT_BITNAME LL_PPP_EnableDMAReq_BITNAME LL_PPP_DisableDMAReq_BITNAME_PPP_DISable

BITNAME جو حوالو ڏئي ٿو پردي جي رجسٽر بٽ جو نالو جيئن بيان ڪيل پراڊڪٽ لائين ريفرنس مينوئل ۾.

UM3029 - Rev 1

صفحو 38/1419

نوٽ: نوٽ:

يو ايم 3029
مٿانview گھٽ-پرت APIs ۽ نالي جي ضابطن جو

· پردي جي گھڙي چالو ڪرڻ / غير فعال ڪرڻ جو انتظام: ھڪ پردي واري گھڙي کي فعال / غير فعال / ري سيٽ ڪريو

جدول 21. پردي جي گھڙي چالو ڪرڻ / غير فعال ٿيڻ جو انتظام

نالو LL_BUS_GRPx_ActionClock{Mode} ·
·

Examples
LL_AHB1_GRP1_EnableClock (LL_AHB1_GRP1_PERIPH_DMA1) LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_RTC)

'x' گروپ انڊيڪس سان ملندو آهي ۽ ڏنل بس تي تبديل ٿيل رجسٽر جي انڊيڪس ڏانهن اشارو ڪري ٿو. 'بس' بس جي نالي سان ملندو آهي.
· پردي جي چالو ڪرڻ/غير فعال ڪرڻ جو انتظام: هڪ پردي کي فعال/بند ڪرڻ يا مخصوص پردي جي خصوصيتن کي چالو/غير فعال ڪرڻ

جدول 22. پردي جي چالو ڪرڻ / غير فعال ٿيڻ جو انتظام

نالو
· LL_PPP{_CATEGORY__Action{Item} · LL_PPP{_CATEGORY__IsItemAction ·
!

Examples
LL_ADC_Enable () LL_ADC_StartCalibration(); LL_ADC_IsCalibrationOnGoing؛ LL_RCC_HSI_Enable () LL_RCC_HSI_IsReady()

· پردي جي ترتيب جو انتظام: هڪ پردي جي ترتيب واري سيٽنگون سيٽ ڪريو/حاصل ڪريو

جدول 23. پردي جي ترتيب جو انتظام

نالو LL_PPP{_CATEGORY__Set{ يا
حاصل ڪريو}ConfigItem

Examples LL_USART_SetBaudRate (USART2, Clock, LL_USART_BAUDRATE_9600)

· پردي جي رجسٽري جو انتظام: رجسٽر جو مواد لکو/پڙھو
جدول 24. پردي جي رجسٽري جو انتظام
نالو LL_PPP_WriteReg(__INSTANCE__, __REG__, __VALUE__)
LL_PPP_ReadReg(__INSTANCE__, __REG__) LL_PPP_DMA_GetRegAddr (PPP_TypeDef *PPPx،{Sub Instance if any ex: Channel} , {uint32_t Propriety})
Propriety ھڪڙو متغير آھي جيڪو DMA جي منتقلي جي ھدايت يا ڊيٽا رجسٽر جي قسم کي سڃاڻڻ لاءِ استعمال ڪيو ويندو آھي.

UM3029 - Rev 1

صفحو 39/1419

5
5.1
نوٽ:
5.2
نوٽ:

يو ايم 3029
HAL ۽ LL جي گڏ ٿيڻ
HAL ۽ LL جي گڏ ٿيڻ
گھٽ-آئر APIs ٺهيل آهن اسٽينڊل موڊ ۾ استعمال ڪرڻ يا HAL سان گڏ. اهي خودڪار طريقي سان استعمال نٿا ڪري سگھجن HAL سان ساڳي پردي واري مثال لاءِ. جيڪڏهن توهان ڪنهن خاص مثال لاءِ LL APIs استعمال ڪريو ٿا، توهان اڃا تائين ٻين مثالن لاءِ HAL APIs استعمال ڪري سگهو ٿا. محتاط رھو ته گھٽ-پرت APIs شايد ڪجھ رجسٽرن کي اوور رائٽ ڪري سگھن ٿا جيڪي مواد HAL ھينڊلز ۾ آئيني آھن.
اسٽينڊل موڊ ۾ استعمال ٿيل گھٽ-پرت ڊرائيور
گھٽ-پرت APIs استعمال ڪري سگھجن ٿيون بغير HAL ڊرائيور سروسز کي ڪال ڪرڻ جي. اهو صرف ايپليڪيشن ۾ stm32c0xx_ll_ppp.h شامل ڪندي ڪيو ويو آهي fileايس. ڏنل پردي لاءِ LL APIs کي سڏيو وڃي ٿو ساڳئي ترتيب تي عمل ڪندي، جيئن پروگرامنگ ماڊل پاران تجويز ڪيل پراڊڪٽ لائين ريفرنس مينوئل ۾. انهي حالت ۾ استعمال ٿيل پردي سان لاڳاپيل HAL ڊرائيور ڪم اسپيس مان هٽائي سگهجن ٿا. جڏهن ته STM32CubeC0 فريم ورڪ ساڳئي طريقي سان استعمال ڪيو وڃي جيئن HAL ڊرائيور جي صورت ۾ جنهن جو مطلب آهي سسٽم file، شروع ڪريو file ۽ CMSIS هميشه استعمال ڪيو وڃي. جڏهن BSP ڊرائيور شامل ڪيا ويا آهن، استعمال ٿيل HAL ڊرائيورن سان جڙيل آهن BSP فنڪشن ڊرائيورز کي ڪم اسپيس ۾ شامل ڪيو وڃي، جيتوڻيڪ اهي ايپليڪيشن پرت پاران استعمال نه ڪيا ويا آهن.
گھٽ-پرت APIs ۽ HAL ڊرائيورن جو مخلوط استعمال
ھن حالت ۾ گھٽ-پرت APIs استعمال ڪيا ويندا آھن HAL ڊرائيورن سان گڏ ھلائڻ لاءِ سڌو ۽ رجسٽر سطح جي بنياد تي عملن کي حاصل ڪرڻ لاءِ. مخلوط استعمال جي اجازت آهي، جڏهن ته ڪجهه غور ويچار ڪرڻ گهرجي: · اها سفارش ڪئي وئي آهي ته هڪ ئي وقت استعمال ڪرڻ کان پاسو ڪيو وڃي HAL APIs ۽ گهٽ-پرت APIs جو ميلاپ.
ڏنل پردي جو مثال. جيڪڏهن اهو معاملو آهي، ته HAL PPP هينڊل ڍانچي ۾ هڪ يا وڌيڪ خانگي شعبن مطابق اپڊيٽ ڪيو وڃي. · عملن ۽ عملن لاءِ جيڪي ھينڊل فيلڊز کي تبديل نه ڪندا آھن جن ۾ شروعاتي ڍانچي، HAL ڊرائيور APIs ۽ گھٽ-پرت خدمتون ساڳيا پردي مثال لاءِ گڏ ڪري سگھجن ٿيون. · گھٽ پرت وارا ڊرائيور استعمال ڪري سگھجن ٿا بغير ڪنهن پابندي جي سڀني HAL ڊرائيورن سان جيڪي هينڊل آبجڪس (RCC، عام HAL، Flash ۽ GPIO) تي ٻڌل نه آهن. ڪيترائي سابقamples ڏيکاريو ته HAL ۽ LL ڪيئن استعمال ڪجي ساڳي ايپليڪيشن ۾ stm32c0 فرم ويئر پيڪيج ۾ مهيا ڪيل آهن (اڳوڻي ڏانهن رجوع ڪريوamples_MIX پروجيڪٽ). 1. جڏهن HAL Init/DeInit APIs استعمال نه ڪيا وڃن ۽ انهن کي گھٽ-پرت ميڪرو سان تبديل ڪيو وڃي، InitMsp() افعال کي نه سڏيو ويندو آهي ۽ MSP جي شروعات صارف جي ايپليڪيشن ۾ ٿيڻ گهرجي. 2. جڏهن پروسيسنگ APIs استعمال نه ڪيا وڃن ۽ لاڳاپيل فنڪشن کي گهٽ-پرت APIs ذريعي انجام ڏنو وڃي، ڪال بڪ نه سڏيا ويندا آهن ۽ پوسٽ پروسيسنگ يا غلطي جو انتظام صارف ايپليڪيشن طرفان ڪيو وڃي. 3. جڏهن LL APIs کي عمل جي عملن لاءِ استعمال ڪيو ويندو آهي، IRQ هينڊلر HAL APIs کي سڏ نه ٿو ڪري سگھجي ۽ IRQ کي استعمال ڪندڙ ايپليڪيشن پاران لاڳو ڪيو وڃي. هر ايل ايل ڊرائيور لاڳاپيل مداخلت واري جھنڊن کي پڙهڻ ۽ صاف ڪرڻ لاءِ گهربل ميڪرو لاڳو ڪري ٿو.

UM3029 - Rev 1

صفحو 40/1419

6

HAL سسٽم ڊرائيور

يو ايم 3029
HAL سسٽم ڊرائيور

6.1
6.1.1 6.1.2
6.1.3

HAL Firmware ڊرائيور API وضاحت
هيٺيون سيڪشن HAL لائبريري جي مختلف ڪمن کي لسٽ ڪري ٿو.
هن ڊرائيور کي ڪيئن استعمال ڪجي
عام HAL ڊرائيور ۾ عام ۽ عام APIs جو هڪ سيٽ شامل آهي جيڪو استعمال ڪري سگهجي ٿو PPP پردي ڊرائيور ۽ صارف HAL ​​استعمال ڪرڻ شروع ڪرڻ لاءِ. HAL ۾ ٻه APIs جا ڀاڱا شامل آھن: · Common HAL APIs · Services HAL APIs
HAL شروعاتي ۽ ترتيب ڏيڻ جا ڪم
ھي سيڪشن ھيٺ ڏنل ڪم مهيا ڪري ٿو: · فليش انٽرفيس کي شروع ڪريو NVIC مختص ڪرڻ ۽ شروعاتي وقت جي بنيادي گھڙي جي ترتيب. · HAL جي عام حصي کي ختم ڪرڻ. · ٽائم بيس ماخذ کي ترتيب ڏيو 1ms ٽائم بيس سان وقفي وقفي واري ترجيح سان.
SysTick ٽائمر ڊفالٽ طور استعمال ڪيو ويندو آھي وقت جي بنياد جي ماخذ جي طور تي، پر صارف آخرڪار پنھنجي مناسب وقت جي بنيادي ماخذ کي لاڳو ڪري سگھي ٿو (اڳ لاءِ عام مقصد ٽائمرample يا ٻيو ٽائيم ماخذ)، ذهن ۾ رکڻ گهرجي ته وقت جي بنياد جو مدو 1ms رکيو وڃي ڇاڪاڻ ته PPP_TIMEOUT_VALUEs جي وضاحت ڪئي وئي آهي ۽ ملائي سيڪنڊن جي بنياد تي سنڀاليو وڃي ٿو.
ٽائم بيس ڪنفيگريشن فنڪشن (HAL_InitTick ()) پروگرام جي شروعات ۾ HAL_Init() جي ري سيٽ ٿيڻ کان پوءِ يا ڪنهن به وقت جڏهن گھڙي ترتيب ڏني ويندي آهي، HAL_RCC_ClockConfig().
وقت جي بنياد جو ماخذ باقاعده وقت جي وقفن تي مداخلت پيدا ڪرڻ لاء ترتيب ڏنل آهي. احتياط وٺڻ گهرجي جيڪڏهن HAL_Delay() کي پردي جي ISR عمل مان سڏيو وڃي ٿو، ٽڪ مداخلت واري لائن کي پردي جي مداخلت کان وڌيڪ ترجيح (عددي طور تي گهٽ) هجڻ گهرجي. ٻي صورت ۾ ڪالر ISR عمل کي بلاڪ ڪيو ويندو.
وقت جي بنيادي ترتيبن تي اثر انداز ٿيندڙ ڪمن کي __ ڪمزور قرار ڏنو ويو آهي ته جيئن صارف ۾ ٻين عملن جي صورت ۾ اوور رائڊ کي ممڪن بڻائي سگهجي file.
ھن حصي ۾ ھيٺيون APIs شامل آھن: · HAL_Init() · HAL_DeInit() · HAL_MspInit() · HAL_MspDeInit() · HAL_InitTick()
HAL ڪنٽرول افعال
ھي سيڪشن ھنن ڪمن جي اجازت ڏئي ٿو: · مليسيڪنڊ ۾ ٽِڪ ويليو مهيا ڪريو · مليسيڪنڊ ۾ بلاڪنگ دير فراهم ڪريو · ٽائم بيس سورس جي مداخلت کي معطل ڪريو · ٽائيم بيس سورس انٽرپٽ کي ٻيهر شروع ڪريو · HAL API ڊرائيور ورزن حاصل ڪريو · ڊوائيس سڃاڻپ ڪندڙ حاصل ڪريو · حاصل ڪريو ڊوائيس جي نظرثاني جي سڃاڻپ ڪندڙ هن حصي ۾ هيٺيان APIs شامل آهن: · HAL_IncTick() · HAL_GetTick() · HAL_GetTickPrio() · HAL_SetTickFreq()

UM3029 - Rev 1

صفحو 41/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

· HAL_GetTickFreq() · HAL_Delay() · HAL_SuspendTick() · HAL_ResumeTick() · HAL_GetHalVersion() · HAL_GetREVID() · HAL_GetDEVID() · HAL_GetUIDw0() · ID HAL_wGet

6.1.4

HAL ڊيبگ افعال
ھي سيڪشن ھيٺين ڪمن جي اجازت ڏئي ٿو: · اسٽاپ موڊ دوران ڊيبگ ماڊل کي فعال/بند ڪريو · اسٽينڊ بائي موڊ دوران ڊيبگ ماڊل کي فعال/بند ڪريو ھن حصي ۾ ھيٺيون APIs شامل آھن: · HAL_DBGMCU_EnableDBGStopMode() · HAL_DBGMCU_DisableDBGStopMode () · HAL_DBGMCU_DisableDBGStandbyMode()

6.1.5

HAL SYSCFG ٺاھ جوڙ جا ڪم
ھي سيڪشن ھيٺ ڏنل ڪمن کي مهيا ڪري ٿو: · پن ري ميپ کي فعال/بند ڪريو · I/O اينالاگ سوئچ والیم کي فعال/بند ڪريوtage booster ھن حصي ۾ ھيٺيون APIs شامل آھن: · HAL_SYSCFG_EnableIOAnalogSwitchBooster() · HAL_SYSCFG_DisableIOAnalogSwitchBooster() · HAL_SYSCFG_EnableRemap() · HAL_SYSCFG_EnableRemap() · HAL_SYSCFG_DisableRemap() · HAL_SYSCFG_DisableRem() SYSCFG_GetPinBinding()

6.1.6

افعال جي تفصيلي وضاحت

HAL_Init

فنڪشن جو نالو HAL_StatusTypeDef HAL_Init (void)

فنڪشن جي وضاحت
HAL_MspInit() ڪال بڪ فنڪشن کي ڪال ڪندي فليش پريفيچ ۽ انسٽرڪشن ڪيش، ٽائيم بيس سورس، NVIC ۽ ڪنهن به گهربل گلوبل لو ليول هارڊويئر کي ترتيب ڏيو ته جيئن صارف ۾ اختياري طور تي وضاحت ڪئي وڃي. file stm32c0xx_hal_msp.c.

واپسي جا قدر ·

HAL: حيثيت

UM3029 - Rev 1

صفحو 42/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

نوٽس

· HAL_Init() فنڪشن سڏيو ويندو آهي پروگرام جي شروعات ۾ ري سيٽ ڪرڻ کان پوءِ ۽ ڪلاڪ جي ترتيب کان اڳ.
· ڊفالٽ لاڳو ڪرڻ ۾ سسٽم ٽائمر (سسٽڪ) استعمال ڪيو ويندو آهي وقت جي بنياد جو ذريعو. Systick ترتيب HSI گھڙي تي ٻڌل آھي، جيئن HSI ھڪڙي گھڙي آھي جيڪو سسٽم ري سيٽ ڪرڻ کان پوء استعمال ڪيو ويندو آھي. هڪ دفعو مڪمل ٿيڻ بعد، ٽائم بيس ٽِڪ وڌڻ شروع ٿئي ٿو: ٽِڪ ويريئبل ڪائونٽر هر 1ms SysTick_Handler() interrupt handler ۾ وڌو ويندو آهي.

HAL_DeInit

فنڪشن جو نالو HAL_StatusTypeDef HAL_DeInit (void)

فنڪشن جي وضاحت هي فنڪشن HAL جي عام حصي کي شروع ڪري ٿو ۽ وقت جي بنياد جو ذريعو روڪي ٿو.

واپسي جا قدر ·

HAL: حيثيت

نوٽس

· هي فنڪشن اختياري آهي.

HAL_MspInit

فنڪشن جو نالو void HAL_MspInit (void)

فنڪشن جي وضاحت MSP کي شروع ڪريو.

واپسي جا قدر ·

ڪو به نه:

HAL_MspDeInit

فنڪشن جو نالو void HAL_MspDeInit (void)

فنڪشن جي وضاحت ايم ايس پي کي شروع ڪري ٿو.

واپسي جا قدر ·

ڪو به نه:

HAL_InitTick

فنڪشن جو نالو HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority)

فنڪشن جي وضاحت
هي فنڪشن ٽائيم بيس جي ماخذ کي ترتيب ڏئي ٿو: ٽائيم ماخذ کي ترتيب ڏنو ويو آهي 1ms ٽائم بيس هڪ وقف ٿيل ٽِڪ مداخلت جي ترجيح سان.

پيرا ميٽر ·

TickPriority: Tick interrupt priority.

واپسي جا قدر ·

HAL: حيثيت

UM3029 - Rev 1

صفحو 43/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

نوٽس

· هي فنڪشن خودڪار طريقي سان سڏيو ويندو آهي پروگرام جي شروعات ۾ HAL_Init() ذريعي ري سيٽ ڪرڻ کان پوءِ يا ڪنهن به وقت جڏهن ڪلاڪ کي HAL_RCC_ClockConfig().
· ڊفالٽ عمل ۾، SysTick ٽائمر وقت جي بنياد جو ذريعو آھي. اهو باقاعده وقت جي وقفن تي مداخلت پيدا ڪرڻ لاء استعمال ڪيو ويندو آهي. احتياط وٺڻ گهرجي جيڪڏهن HAL_Delay() کي پردي جي ISR عمل مان سڏيو وڃي ٿو، SysTick مداخلت کي پردي جي مداخلت کان وڌيڪ ترجيح (عددي طور تي گهٽ) هجڻ گهرجي. ٻي صورت ۾ ڪالر ISR عمل کي بلاڪ ڪيو ويندو. فنڪشن کي __ ڪمزور قرار ڏنو ويو آهي اوور رائٽ ٿيڻ جي صورت ۾ صارف ۾ ٻين عملن جي صورت ۾ file.

HAL_IncTick

فنڪشن جو نالو void HAL_IncTick (void)

فنڪشن جي وضاحت هن فنڪشن کي سڏيو ويندو آهي هڪ گلوبل متغير وڌائڻ لاء "uwTick" ايپليڪيشن ٽائيم بيس طور استعمال ڪيو ويو.

واپسي جا قدر ·

ڪو به نه:

نوٽس

· ڊفالٽ عمل ۾، هي متغير SysTick ISR ۾ هر 1ms وڌايو ويو آهي. · هن فنڪشن کي __ ڪمزور قرار ڏنو ويو آهي اوور رائٽ ٿيڻ جي صورت ۾ صارف ۾ ٻين لاڳو ٿيڻ جي صورت ۾ file.

HAL_Delay

فنڪشن جو نالو void HAL_Delay (uint32_t Delay)

فنڪشن جي وضاحت هي فنڪشن گهٽ ۾ گهٽ دير فراهم ڪري ٿو (ملي سيڪنڊن ۾) متغير وڌائڻ جي بنياد تي.

پيرا ميٽر ·

دير: مليس سيڪنڊن ۾ دير جي وقت جي ڊيگهه بيان ڪري ٿي.

واپسي جا قدر ·

ڪو به نه:

نوٽس

· ڊفالٽ عمل ۾، SysTick ٽائمر وقت جي بنياد جو ذريعو آھي. اهو باقاعده وقت جي وقفن تي مداخلت پيدا ڪرڻ لاء استعمال ڪيو ويندو آهي جتي uwTick وڌايو ويندو آهي.
· هن فنڪشن کي __ ڪمزور قرار ڏنو ويو آهي اوور رائٽ ٿيڻ جي صورت ۾ صارف ۾ ٻين لاڳو ٿيڻ جي صورت ۾ file.

HAL_GetTick

فنڪشن جو نالو uint32_t HAL_GetTick (void )

فنڪشن وضاحت مليس سيڪنڊن ۾ ٽِڪ ويليو مهيا ڪري ٿي.

واپسي جا قدر ·

نشان: قدر

نوٽس

· هن فنڪشن کي __ ڪمزور قرار ڏنو ويو آهي اوور رائٽ ٿيڻ جي صورت ۾ صارف ۾ ٻين لاڳو ٿيڻ جي صورت ۾ file.

UM3029 - Rev 1

صفحو 44/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

HAL_GetTickPrio

فنڪشن جو نالو uint32_t HAL_GetTickPrio (void)

فنڪشن جي وضاحت هي فنڪشن ٽڪ جي ترجيح ڏي ٿو.

واپسي جا قدر ·

ٽڪ: ترجيح

HAL_SetTickFreq

فنڪشن جو نالو HAL_StatusTypeDef HAL_SetTickFreq (uint32_t Freq)

فنڪشن جي وضاحت نئين ٽِڪ فريق سيٽ ڪريو.

واپسي جا قدر ·

حيثيت:

HAL_GetTickFreq

فنڪشن جو نالو uint32_t HAL_GetTickFreq (void)

فنڪشن وضاحت واپسي ٽڪ تعدد.

واپسي جا قدر ·

tick: مدت Hz ۾

HAL_SuspendTick

فنڪشن جو نالو void HAL_SuspendTick (void)

فنڪشن جي وضاحت ٽڪ جي واڌ کي معطل ڪريو.

واپسي جا قدر ·

ڪو به نه:

نوٽس

· ڊفالٽ عمل ۾، SysTick ٽائمر وقت جي بنياد جو ذريعو آھي. اهو باقاعده وقت جي وقفن تي مداخلت پيدا ڪرڻ لاء استعمال ڪيو ويندو آهي. هڪ دفعو HAL_SuspendTick() سڏيو ويندو آهي، SysTick مداخلت کي بند ڪيو ويندو ۽ پوءِ ٽِڪ جي واڌ کي معطل ڪيو ويندو.
· هن فنڪشن کي __ ڪمزور قرار ڏنو ويو آهي اوور رائٽ ٿيڻ جي صورت ۾ صارف ۾ ٻين لاڳو ٿيڻ جي صورت ۾ file.

HAL_ResumeTick فنڪشن جو نالو
void HAL_ResumeTick (void ) فنڪشن وضاحت
ٽڪ جي واڌ کي ٻيهر شروع ڪريو.

UM3029 - Rev 1

صفحو 45/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

واپسي جا قدر ·
نوٽس ·
·

ڪو به نه:
ڊفالٽ عمل ۾، SysTick ٽائمر وقت جي بنياد جو ذريعو آھي. اهو باقاعده وقت جي وقفن تي مداخلت پيدا ڪرڻ لاء استعمال ڪيو ويندو آهي. هڪ دفعو HAL_ResumeTick() سڏبو ته، SysTick interrupt کي فعال ڪيو ويندو ۽ پوءِ ٽِڪ جي واڌ کي ٻيهر شروع ڪيو ويندو. هن فنڪشن کي قرار ڏنو ويو آهي __ ڪمزور استعمال ڪندڙ ۾ ٻين عملن جي صورت ۾ اوور رائٽ ٿيڻ لاءِ file.

HAL_GetHalVersion

فنڪشن جو نالو uint32_t HAL_GetHalVersion (void )

فنڪشن وضاحت واپسي HAL نظرثاني.

واپسي جا قدر ·

نسخو: : 0xXYZR (هر ڊيسيمل لاءِ 8bits، R لاءِ RC)

HAL_GetREVID

فنڪشن جو نالو uint32_t HAL_GetREVID (void )

فنڪشن جي وضاحت ڊوائيس جي نظرثاني جي سڃاڻپ ڪندڙ کي واپس ڪري ٿو.

واپسي جا قدر ·

ڊوائيس: نظرثاني ڪندڙ سڃاڻپ ڪندڙ

HAL_GetDEVID

فنڪشن جو نالو uint32_t HAL_GetDEVID (void )

فنڪشن وضاحت واپسي ڊوائيس جي سڃاڻپ ڪندڙ.

واپسي جا قدر ·

ڊوائيس: سڃاڻپ ڪندڙ

HAL_GetUIDw0

فنڪشن جو نالو uint32_t HAL_GetUIDw0 (void)

فنڪشن جي وضاحت منفرد ڊيوائس جي سڃاڻپ ڪندڙ جو پهريون لفظ واپس ڪري ٿو (96 بٽس جي بنياد تي UID)

واپسي جا قدر ·

ڊوائيس: سڃاڻپ ڪندڙ

HAL_GetUIDw1 فنڪشن جو نالو
uint32_t HAL_GetUIDw1 (باطل)

UM3029 - Rev 1

صفحو 46/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

فنڪشن جي وضاحت منفرد ڊيوائس جي سڃاڻپ ڪندڙ جو ٻيو لفظ واپس ڪري ٿو (96 بٽس جي بنياد تي UID)

واپسي جا قدر ·

ڊوائيس: سڃاڻپ ڪندڙ

HAL_GetUIDw2

فنڪشن جو نالو uint32_t HAL_GetUIDw2 (void)

فنڪشن وضاحت منفرد ڊيوائس سڃاڻپ ڪندڙ جو ٽيون لفظ واپس ڪري ٿو (96 بٽس جي بنياد تي UID)

واپسي جا قدر ·

ڊوائيس: سڃاڻپ ڪندڙ

HAL_DBGMCU_EnableDBGStopMode

فنڪشن جو نالو void HAL_DBGMCU_EnableDBGStopMode (void)

فنڪشن جي وضاحت STOP موڊ دوران ڊيبگ ماڊل کي فعال ڪريو.

واپسي جا قدر ·

ڪو به نه:

HAL_DBGMCU_DisableDBGStopMode

فنڪشن جو نالو void HAL_DBGMCU_DisableDBGStopMode (void)

فنڪشن جي وضاحت اسٽاپ موڊ دوران ڊيبگ ماڊل کي غير فعال ڪريو.

واپسي جا قدر ·

ڪو به نه:

HAL_DBGMCU_EnableDBGStandbyMode

فنڪشن جو نالو void HAL_DBGMCU_EnableDBGStandbyMode (void)

فنڪشن جي وضاحت اسٽينڊ بائي موڊ دوران ڊيبگ ماڊل کي فعال ڪريو.

واپسي جا قدر ·

ڪو به نه:

HAL_DBGMCU_DisableDBGStandbyMode فنڪشن جو نالو
void HAL_DBGMCU_DisableDBGStandbyMode (void) فنڪشن وضاحت
اسٽينڊ بائي موڊ دوران ڊيبگ ماڊل کي غير فعال ڪريو.

UM3029 - Rev 1

صفحو 47/1419

يو ايم 3029
HAL Firmware ڊرائيور API وضاحت

واپسي جا قدر ·

ڪو به نه:

HAL_SYSCFG_EnableIOAnalogSwitchBooster

فنڪشن جو نالو void HAL_SYSCFG_EnableIOAnalogSwitchBooster (void)

فنڪشن وضاحت فعال ڪريو I/O اينالاگ سوئچ والیمtagاي بوسٹر.

واپسي جا قدر ·

ڪو به نه:

HAL_SYSCFG_DisableIOAnalogSwitchBooster

فنڪشن جو نالو void HAL_SYSCFG_DisableIOAnalogSwitchBooster (void)

فنڪشن جي وضاحت غير فعال ڪريو I/O اينالاگ سوئچ والیمtagاي بوسٹر.

واپسي جا قدر ·

ڪو به نه:

HAL_SYSCFG_EnableRemap

فنڪشن جو نالو void HAL_SYSCFG_EnableRemap (uint32_t PinRemap)

فنڪشن جي وضاحت PA11_PA12 تي ريميپ کي فعال ڪريو.

پيرا ميٽر ·

PinRemap: وضاحت ڪري ٿو ته ڪهڙن پنن کي ٻيهر ٺاهيو وڃي ٿو هي پيٽرولر هيٺين قدرن جو ڪو ميلاپ ٿي سگهي ٿو:
SYSCFG_REMAP_PA11
SYSCFG_REMAP_PA12

واپسي جا قدر ·

ڪو به نه:

HAL_SYSCFG_DisableRemap

فنڪشن جو نالو void HAL_SYSCFG_DisableRemap (uint32_t PinRemap)

فنڪشن جي وضاحت PA11_PA12 تي ري ميپ کي غير فعال ڪريو.

پيرا ميٽر ·

PinRemap: بيان ڪري ٿو ته ڪهڙا پن عام طور تي عمل ڪندا هي پيٽرولر هيٺين قدرن جو ڪو ميلاپ ٿي سگهي ٿو:
SYSCFG_REMAP_PA11
SYSCFG_REMAP_PA12

UM3029 - Rev 1

صفحو 48/1419

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو

واپسي جا قدر ·

ڪو به نه:

HAL_SYSCFG_SetPinBinding

فنڪشن جو نالو void HAL_SYSCFG_SetPinBinding (uint32_t pin_binding)

فنڪشن وضاحت سيٽ پن بائنڊنگ.

پيرا ميٽر ·

pin_binding: واضع ڪري ٿو ته ڪهڙو پن هڪ مخصوص GPIO کي پابند ڪندو هر مرڻ واري پيڪيج لاءِ هي پيرا ميٽر HAL_BIND_xx جي وضاحتن جو ڪو به ميلاپ ٿي سگهي ٿو

واپسي جا قدر ·

ڪو به نه:

HAL_SYSCFG_GetPinBinding

فنڪشن جو نالو uint32_t HAL_SYSCFG_GetPinBinding (void )

فنڪشن وضاحت واپسي پن بائنڊنگ ترتيب

واپسي جا قدر ·

PinMux: تشڪيل

6.2

HAL Firmware ڊرائيور بيان ڪري ٿو

ھيٺ ڏنل سيڪشن ماڊل جي مختلف وضاحتن ۽ ميڪروز کي لسٽ ڪري ٿو.

6.2.1

HAL HAL Bind پن ترتيب

HAL_BIND_WLCSP14_PINF2_PA1 STM32C031 WLCSP14 پيڪيج، PinF2 GPIO PA1 کي لڳايو ويو

HAL_BIND_WLCSP14_PINF2_PA2 STM32C031 WLCSP14 پيڪيج، PinF2 GPIO PA2 کي لڳايو ويو

HAL_BIND_WLCSP14_PING3_PF2 STM32C031 WLCSP14 پيڪيج، PinG3 GPIO PF2 کي لڳايو ويو

HAL_BIND_WLCSP14_PING3_PA0 STM32C031 WLCSP14 پيڪيج، PinG3 GPIO PA0 کي لڳايو ويو

HAL_BIND_WLCSP14_PINJ1_PA8 STM32C031 WLCSP14 پيڪيج، PinJ1 GPIO PA8 کي لڳايو ويو

HAL_BIND_WLCSP14_PINJ1_PA11 STM32C031 WLCSP14 پيڪيج، PinJ1 GPIO PA11 کي لڳايو ويو

HAL_BIND_WLCSP14_PINH2_PA5 STM32C031 WLCSP14 پيڪيج، PinH2 GPIO PA5 کي لڳايو ويو

UM3029 - Rev 1

صفحو 49/1419

HAL_BIND_WLCSP14_PINH2_PA6 STM32C031 WLCSP14 پيڪيج، PinH2 GPIO PA6 کي لڳايو ويو
HAL_BIND_WLCSP14_PING1_PA7 STM32C031 WLCSP14 پيڪيج، PinG1 GPIO PA7 کي لڳايو ويو
HAL_BIND_WLCSP14_PING1_PA12 STM32C031 WLCSP14 پيڪيج، PinG1 GPIO PA12 کي لڳايو ويو
HAL_BIND_WLCSP14_PINJ3_PA3 STM32C031 WLCSP14 پيڪيج، PinJ3 GPIO PA3 کي لڳايو ويو
HAL_BIND_WLCSP14_PINJ3_PA4 STM32C031 WLCSP14 پيڪيج، PinJ3 GPIO PA4 کي لڳايو ويو
IR ماڊل لفافي سگنل جي چونڊ HAL_SYSCFG_IRDA_ENV_SEL_TIM16
00: ٽائمر 16 چونڊيو ويو آهي IR ماڊل لفافي جو ذريعو HAL_SYSCFG_IRDA_ENV_SEL_USART1
01: USART1 کي چونڊيو ويو آھي IR ماڊلوليشن لفافو ماخذ HAL_SYSCFG_IRDA_ENV_SEL_USART2
10: USART2 چونڊيو ويو آهي IR ماڊليشن لفافي ذريعو
IR آئوٽ پولارٽي سلیکشن HAL_SYSCFG_IRDA_POLARITY_NOT_INVERTED
00: IR آئوٽ پُٽ پولارٽي نه اُلٽي HAL_SYSCFG_IRDA_POLARITY_INVERTED
01: IR آئوٽ پولارٽي انوٽ ٿيل
HAL ISR ريپر HAL_SYSCFG_ITLINE0
ميڪرو هينڊلنگ لاءِ اندروني وضاحت HAL_SYSCFG_ITLINE2
ميڪرو هينڊلنگ لاءِ اندروني وضاحت HAL_SYSCFG_ITLINE3
ميڪرو هينڊلنگ لاءِ اندروني وضاحت HAL_SYSCFG_ITLINE4
ميڪرو هينڊلنگ لاءِ اندروني وضاحت HAL_SYSCFG_ITLINE5
ميڪرو هينڊلنگ لاءِ اندروني وضاحت HAL_SYSCFG_ITLINE6
ميڪرو هينڊلنگ لاءِ اندروني وضاحت HAL_SYSCFG_ITLINE7
ميڪرو سنڀالڻ لاءِ اندروني وضاحت
UM3029 - Rev 1

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو
صفحو 50/1419

HAL_SYSCFG_ITLINE9 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE10 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE11 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE12 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE13 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE14 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE16 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE19 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE21 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE22 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE23 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE25 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE27 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_SYSCFG_ITLINE28 ميڪرو هينڊلنگ لاءِ اندروني وضاحت
HAL_ITLINE_WWDG WWDG مداخلت
HAL_ITLINE_RTC RTC مداخلت
HAL_ITLINE_FLASH_ITF فليش ITF مداخلت
HAL_ITLINE_CLK_CTRL CLK ڪنٽرول مداخلت
HAL_ITLINE_EXTI0 خارجي مداخلت 0
UM3029 - Rev 1

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو
صفحو 51/1419

HAL_ITLINE_EXTI1 خارجي مداخلت 1
HAL_ITLINE_EXTI2 خارجي مداخلت 2
HAL_ITLINE_EXTI3 خارجي مداخلت 3
HAL_ITLINE_EXTI4 EXTI4 مداخلت
HAL_ITLINE_EXTI5 EXTI5 مداخلت
HAL_ITLINE_EXTI6 EXTI6 مداخلت
HAL_ITLINE_EXTI7 EXTI7 مداخلت
HAL_ITLINE_EXTI8 EXTI8 مداخلت
HAL_ITLINE_EXTI9 EXTI9 مداخلت
HAL_ITLINE_EXTI10 EXTI10 مداخلت
HAL_ITLINE_EXTI11 EXTI11 مداخلت
HAL_ITLINE_EXTI12 EXTI12 مداخلت
HAL_ITLINE_EXTI13 EXTI13 مداخلت
HAL_ITLINE_EXTI14 EXTI14 مداخلت
HAL_ITLINE_EXTI15 EXTI15 مداخلت
HAL_ITLINE_DMA1_CH1 DMA1 چينل 1 مداخلت
HAL_ITLINE_DMA1_CH2 DMA1 چينل 2 مداخلت
HAL_ITLINE_DMA1_CH3 DMA1 چينل 3 مداخلت
HAL_ITLINE_DMAMUX DMAMUX مداخلت
UM3029 - Rev 1

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو
صفحو 52/1419

HAL_ITLINE_ADC ADC مداخلت
HAL_ITLINE_TIM1_BRK TIM1 BRK مداخلت
HAL_ITLINE_TIM1_UPD TIM1 UPD مداخلت
HAL_ITLINE_TIM1_TRG TIM1 TRG مداخلت
HAL_ITLINE_TIM1_CCU TIM1 CCU مداخلت
HAL_ITLINE_TIM3 TIM3 مداخلت
HAL_ITLINE_TIM14 TIM14 مداخلت
HAL_ITLINE_TIM16 TIM16 مداخلت
HAL_ITLINE_TIM17 TIM17 مداخلت
HAL_ITLINE_I2C1 I2C1 مداخلت
HAL_ITLINE_SPI1 SPI1 مداخلت
HAL_ITLINE_USART1 USART1 GLB مداخلت
HAL_ITLINE_USART2 USART2 GLB مداخلت
پن ريمپنگ SYSCFG_REMAP_PA11
PA11 پيڊ ڊجيٽل طور تي PA9 GPIO پن SYSCFG_REMAP_PA12 طور ڪم ڪري ٿو
PA12 پيڊ ڊجيٽل طور تي PA10 GPIO پن وانگر ڪم ڪندو آهي
HAL رياست جي تعريف HAL_SMBUS_STATE_RESET
SMBUS اڃا تائين شروع نه ڪيو ويو يا بند ٿيل HAL_SMBUS_STATE_READY
SMBUS شروع ڪيو ويو ۽ استعمال لاءِ تيار HAL_SMBUS_STATE_BUSY
SMBUS اندروني عمل جاري آهي
UM3029 - Rev 1

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو
صفحو 53/1419

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو
HAL_SMBUS_STATE_MASTER_BUSY_TX ماسٽر ڊيٽا ٽرانسميشن جو عمل جاري آهي
HAL_SMBUS_STATE_MASTER_BUSY_RX ماسٽر ڊيٽا وصول ڪرڻ وارو عمل جاري آهي
HAL_SMBUS_STATE_SLAVE_BUSY_TX غلام ڊيٽا ٽرانسميشن جو عمل جاري آهي
HAL_SMBUS_STATE_SLAVE_BUSY_RX غلام ڊيٽا وصولي جو عمل جاري آهي
HAL_SMBUS_STATE_TIMEOUT وقت ختم ٿيڻ واري حالت
HAL_SMBUS_STATE_ERROR استقبال جو عمل جاري آهي
HAL_SMBUS_STATE_LISTEN ايڊريس ٻڌڻ جو طريقو جاري آهي
ٽڪ فريڪوئنسي HAL_TICK_FREQ_10HZ
HAL_TICK_FREQ_100HZ
HAL_TICK_FREQ_1KHZ
HAL_TICK_FREQ_DEFAULT
بوٽ موڊ SYSCFG_BOOT_MAINFLASH
مکيه فليش ميموري نقشي تي 0x0000 0000 SYSCFG_BOOT_SYSTEMFLASH
سسٽم فليش ميموري نقشي تي 0x0000 0000 SYSCFG_BOOT_SRAM
ايمبيڊڊ ٿيل SRAM 0x0000 0000 تي نقش ٿيل
ٽوڙيو SYSCFG_BREAK_LOCKUP
TIM0/1/16 جي بريڪ انپٽ سان CortexM17+ جي LOCKUP آئوٽ کي فعال ۽ لاڪ ڪري ٿو
SYSCFG ايڪسپورٽ ٿيل ميڪروز __HAL_GET_PENDING_IT
نوٽس: · هر لڪير ۾ مداخلت جو ذريعو طئي ڪرڻ جي اجازت ڏيو.
__HAL_SYSCFG_REMAPMEMORY_FLASH
__HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH

UM3029 - Rev 1

صفحو 54/1419

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو
__HAL_SYSCFG_REMAPMEMORY_SRAM
__HAL_SYSCFG_GET_BOOT_MODE وضاحت: · بوٽ موڊ واپس ڪريو جيئن صارف پاران ترتيب ڏنل آھي. واپسي جي قيمت: · The: بوٽ موڊ جيئن صارف پاران ترتيب ڏنل. واپسي جي قيمت ھيٺين مان ھڪڙي ٿي سگھي ٿي
__HAL_SYSCFG_BREAK_LOCKUP_LOCK نوٽس: · منتخب ٿيل ٺاھ جوڙ بند ٿيل آھي ۽ صرف سسٽم ري سيٽ ذريعي ان لاڪ ڪري سگھجي ٿو. Cortex-M0+ LOCKUP (هارڊفالٽ) آئوٽ پٽ جي ڪنيڪشن کي TIM1/16/17 بريڪ ان پٽ کي فعال ۽ لاڪ ڪري ٿو
__HAL_SYSCFG_FASTMODEPLUS_ENABLE وضاحت: · فاسٽ موڊ پلس ڊرائيونگ جي صلاحيت ميڪروز کي فعال/بند ڪرڻ. پيرا ميٽرز: · __FASTMODEPLUS__: هي پيرا ميٽر جو قدر ٿي سگهي ٿو
__HAL_SYSCFG_FASTMODEPLUS_DISABLE
__HAL_SYSCFG_IRDA_ENV_SELECTION وضاحت: · ماڊل لفافي سگنل ميڪرو جو انتخاب، بٽس استعمال ڪندي [7:6] SYSCFG_CFGR1 رجسٽرڊ پيرا ميٽرز: · __SOURCE__: هي پيرا ميٽر ٿي سگهي ٿو
__HAL_SYSCFG_GET_IRDA_ENV_SELECTION
__HAL_SYSCFG_IRDA_OUT_POLARITY_SELECTION وضاحت: · IROout Polarity Selection، استعمال ڪندي bit[5] of SYSCFG_CFGR1 رجسٽر. پيرا ميٽرز: · __SEL__: ھي پيٽرول جو قدر ٿي سگھي ٿو
__HAL_SYSCFG_GET_POLARITY وضاحت: · IROut Polarity موڊ واپس ڪريو جيئن صارف پاران ترتيب ڏنل آھي. واپسي جي قيمت: · The: IROut polarity جيئن صارف پاران ترتيب ڏنل. موٽايل قدر مان ھڪڙو ٿي سگھي ٿو
__HAL_SYSCFG_BREAK_ENABLE تشريح: · ٽوڪ ان پٽ کي TIM1/16/17 جي صلاحيت کي فعال/بند ڪرڻ ميڪرو. پيرا ميٽرس: · __BREAK__: هي پيٽرولر جو قدر ٿي سگهي ٿو
__HAL_SYSCFG_BREAK_Disable
GPIO تي فاسٽ موڊ پلس
SYSCFG_FASTMODEPLUS_PB6 PB6 تي فاسٽ موڊ پلس کي فعال ڪريو

UM3029 - Rev 1

صفحو 55/1419

SYSCFG_FASTMODEPLUS_PB7 PB7 تي فاسٽ موڊ پلس کي فعال ڪريو
SYSCFG_FASTMODEPLUS_PB8 PB8 تي فاسٽ موڊ پلس کي فعال ڪريو
SYSCFG_FASTMODEPLUS_PB9 PB9 تي فاسٽ موڊ پلس کي فعال ڪريو
SYSCFG_FASTMODEPLUS_PA9 PA9 تي فاسٽ موڊ پلس کي فعال ڪريو
SYSCFG_FASTMODEPLUS_PA10 PA10 تي فاسٽ موڊ پلس کي فعال ڪريو
SYSCFG_FASTMODEPLUS_PC14 PC14 تي فاسٽ موڊ پلس کي فعال ڪريو
I2Cx SYSCFG_FASTMODEPLUS_I2C1 لاءِ فاسٽ موڊ پلس ڊرائيونگ جي صلاحيت چالو ڪرڻ
I2C1 تي فاسٽ موڊ پلس کي فعال ڪريو

يو ايم 3029
HAL Firmware ڊرائيور بيان ڪري ٿو

UM3029 - Rev 1

صفحو 56/1419

7

HAL ADC عام ڊرائيور

يو ايم 3029
HAL ADC عام ڊرائيور

7.1
7.1.1
7.1.2

ADC Firmware ڊرائيور رجسٽري جوڙجڪ
ADC_OversamplingTypeDef ADC_OversamplingTypeDef جي وضاحت ڪئي وئي آهي stm32c0xx_hal_adc.h ڊيٽا فيلڊز · uint32_t تناسب · uint32_t RightBitShift · uint32_t TriggeredMode فيلڊ دستاويزي · uint32_t ADC_OversamplingTypeDef::Ratio
اوور کي ترتيب ڏئي ٿوampلنگهه جو تناسب. هي پيٽرولر ADC_HAL_EC_OVS_RATIO · uint32_t ADC_Overs جو قدر ٿي سگھي ٿوamplingTypeDef::RightBitShift
اوور لاءِ ڊويزن جي کوٽائي کي ترتيب ڏئي ٿوampلير هي پيٽرولر ADC_HAL_EC_OVS_SHIFT · uint32_t ADC_Overs جو قدر ٿي سگھي ٿوamplingTypeDef::TriggeredMode باقاعده ٽرگر ٿيل اوور چونڊيندو آهيampلنگ موڊ. هي پيٽرولر ADC_HAL_EC_OVS_DISCONT_MODE جو قدر ٿي سگھي ٿو
ADC_InitTypeDef ADC_InitTypeDef stm32c0xx_hal_adc.h ڊيٽا فيلڊز ۾ وضاحت ڪئي وئي آهي · uint32_t ClockPrescaler · uint32_t ريزوليوشن · uint32_t DataAlign · uint32_t ScanConvMode · Uinttower Fun ctionalState LowPowerAutoPowerOff · FunctionalState ContinuousConvMode · uint32_t NbrOfConversion · FunctionalState DiscontinuousConvMode · uint32_t ExternalTrigConv · uint32_t ExternalTrigConvEdges · Request DM Function · uint32_t Overrun · uint32_t SamplingTimeCommon1 · uint32_t SamplingTimeCommon2 · فنڪشنل اسٽيٽ اوورamplingMode · ADC_OversamplingTypeDef Oversampling · uint32_t TriggerFrequencyMode Field Documentation

UM3029 - Rev 1

صفحو 57/1419

يو ايم 3029
ADC Firmware ڊرائيور رجسٽري جوڙجڪ
· uint32_t ADC_InitTypeDef ::ClockPrescaler
ADC گھڙي جو ماخذ چونڊيو (اي پي بي گھڙي مان نڪتل هم وقت ساز گھڙي يا سسٽم ڪلاڪ يا پي ايل ايل مان نڪتل غير مطابقت واري گھڙي (موجود گھڙين جي لسٽ لاءِ ريفرنس مينوئل ڏانھن رجوع ڪريو)) ۽ گھڙي پري اسڪيلر. ھي پيٽرول ADC_HAL_EC_COMMON_CLOCK_SOURCE جو قدر ٿي سگھي ٿو. نوٽ: ADC گھڙي جي جوڙجڪ سڀني ADC مثالن لاء عام آھي. نوٽ: HCLK/1 جي بنياد تي هم وقت ساز ڪلاڪ موڊ جي صورت ۾، ترتيب صرف ان صورت ۾ فعال ٿيڻ گهرجي جڏهن سسٽم جي گھڙي ۾ 50٪ ڊيوٽي ڪلوڪ سائيڪل هجي (آر سي سي جي اندر ترتيب ڏنل APB پريسڪلر کي نظرانداز ڪيو وڃي ۽ PCLK گھڙي کي لازمي طور تي 50٪ ڊيوٽي چڪر هجڻ گهرجي) . تفصيل لاءِ ريفرنس مينوئل ڏانهن رجوع ڪريو. نوٽ: غير مطابقت واري گھڙي جي استعمال جي صورت ۾، چونڊيل گھڙي کي لازمي طور تي RCC مٿين سطح تي فعال ڪيو وڃي. نوٽ: هي پيٽرول صرف ان صورت ۾ تبديل ٿي سگهي ٿو جڏهن سڀئي ADC مثالون بند ٿيل آهن.
· uint32_t ADC_InitTypeDef::Resolution
ADC قرارداد کي ترتيب ڏيو. هي پيٽرولر ADC_HAL_EC_RESOLUTION جو قدر ٿي سگھي ٿو
· uint32_t ADC_InitTypeDef::DataAlign
تبادلي جي ڊيٽا رجسٽر ۾ ADC ڊيٽا جي ترتيب جي وضاحت ڪريو (ساڄي يا کاٻي). ريفرنس مينوئل جي حوالي سان ترتيب ڏيڻ واري فارميٽس ۽ قراردادن لاءِ. هي پيٽرولر ADC_HAL_EC_DATA_ALIGN جو قدر ٿي سگهي ٿو
uint32_t ADC_InitTypeDef ::ScanConvMode
ADC گروپ باقاعده جي ترتيب کي ترتيب ڏيو. هن STM32 سيريز تي، ADC گروپ باقاعده sequencer ٻنهي طريقن "مڪمل طور تي ترتيب ڏيڻ" يا "مڪمل طور تي ترتيب نه ڏيڻ" موجود آهن:
sequencer مڪمل طور تي ترتيب ڏيڻ لاء ترتيب ڏنل: sequencer جي ڊيگهه ۽ هڪ چينل تي هر درجه بندي اثر ترتيب ڏيڻ جي قابل آهن.
تسلسل جي ڊيگهه: اسڪين جي ترتيب ۾ صفن جو تعداد مقرر ڪريو.
تسلسل جي هدايت: جيستائين بيان ڪيل پيرا ميٽرن ۾، سيڪوئنسر اسڪين جي هدايت اڳتي آهي (درجه بندي 1 کان درجه بندي n تائين).
sequencer مڪمل طور تي ترتيب نه ڏيڻ لاء ترتيب ڏنل: ترتيب جي ڊيگهه ۽ هڪ چينل تي هر درجه بندي جو اثر چينل HW نمبر طرفان مقرر ڪيو ويو آهي.
تسلسل جي ڊيگهه: اسڪين جي ترتيب ۾ صفن جو تعداد ترتيب ۾ سيٽ ڪيل چينلن جي تعداد سان بيان ڪيو ويو آهي، هر چينل جي درجه بندي چينل HW نمبر طرفان مقرر ڪئي وئي آهي. (چينل 0 مقرر ٿيل درجه بندي 0 تي، چينل 1 مقرر ڪيل درجه بندي 1 تي، ...).
تسلسل جي هدايت: جيستائين پيٽرولر ۾ بيان نه ڪيو وڃي، سيڪوئنسر اسڪين جي هدايت اڳتي آهي (سڀ کان گھٽ چينل نمبر کان اعلي چينل نمبر تائين). هي پيرا ميٽر 'DiscontinuousConvMode' سان لاڳاپيل ڪري سگھجي ٿو بنيادي تسلسل کي لڳاتار حصن ۾ ورهايو وڃي. Sequencer خود بخود فعال ٿي ويندو آهي جيڪڏهن ڪيترائي چينل سيٽ ڪيا ويا آهن (Sequencer کي غير فعال نه ٿو ڪري سگهجي، جيئن ته اهو ٿي سگهي ٿو ٻين STM32 ڊوائيسز تي): جيڪڏهن صرف 1 چينل سيٽ ڪيو ويو آهي: تبديلي هڪ واحد موڊ ۾ ڪئي وئي آهي. جيڪڏهن ڪيترائي چينل مقرر ڪيا ويا آهن: تبديليون ترتيب واري موڊ ۾ ڪيون وينديون آهن. هي پيٽرولر ADC_Scan_mode جو قدر ٿي سگھي ٿو
· uint32_t ADC_InitTypeDef::EOCSelection
وضاحت ڪريو ته ڪھڙو EOC (End Of Conversion) جھنڊو پولنگ ۽ مداخلت ذريعي تبديليءَ لاءِ استعمال ڪيو ويندو آھي: ون يونٽي تبديليءَ جي پڇاڙي يا تسلسل جي تبديليءَ جي پڄاڻي. هي پيٽرولر ADC_EOCSelection جو قدر ٿي سگهي ٿو.
· فنڪشنل اسٽيٽ ADC_InitTypeDef::LowPowerAutoWait
منتخب ڪريو متحرڪ گھٽ پاور آٽو ڊيلي: نئين تبديلي صرف تڏهن شروع ٿيندي جڏهن اڳوڻو تبادلو (ADC گروپ ريگيولر لاءِ) استعمال ڪندڙ سافٽ ويئر طرفان حاصل ڪيو ويو آهي، فنڪشن HAL_ADC_GetValue(). هي خصوصيت خودڪار طريقي سان ADC تبديلين جي تعدد کي ترتيب ڏئي ٿي سسٽم جي رفتار کي ٽريڪ ڪري ٿو جيڪو ڊيٽا کي پڙهي ٿو. ان کان علاوه، هي گهٽ فریکوئنسي ايپليڪيشنن لاء اووررن جي خطري کان بچي ٿو. ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي. نوٽ: ان کي مداخلت يا DMA (HAL_ADC_Start_IT(), HAL_ADC_Start_DMA()) سان استعمال ڪرڻ جي سفارش نه ڪئي وئي آهي ڇو ته انهن طريقن کي فوري طور تي EOC پرچم کي صاف ڪرڻو پوندو آهي (سي پي يو طرفان IRQ التوا واري واقعي کي آزاد ڪرڻ لاء يا DMA ذريعي). آٽو انتظار ڪم ڪندو پر تمام مختصر وقت لاءِ، ان جي مقصدي فائدي کي رد ڪندي (سواءِ مخصوص صورت ۾ سي پي يو يا ڊي ايم اي ٽرانسفر جي وڏي لوڊ جيڪا آٽو انتظار جي استعمال کي جواز بڻائي سگھي ٿي). پولنگ سان استعمال ڪريو: 1. HAL_ADC_Start() سان تبديلي شروع ڪريو، 2. بعد ۾، جڏھن ADC تبادلي جي ڊيٽا جي ضرورت آھي: استعمال ڪريو HAL_ADC_PollForConversion() انهي کي يقيني بڻائڻ لاءِ ته تبديلي مڪمل ٿي وئي آھي ۽ HAL_ADC_GetValue() تبادلي جي نتيجن کي حاصل ڪرڻ لاءِ ۽ ٻي تبديلي کي شروع ڪريو.
· فنڪشنل اسٽيٽ ADC_InitTypeDef::LowPowerAutoPowerOff
پاڻمرادو آف موڊ چونڊيو: ADC تبديليءَ کان پوءِ خود بخود پاور آف ٿي ويندو آهي ۽ خودڪار طور تي جاڳندو آهي جڏهن هڪ نئون تبادلو شروع ڪيو ويندو آهي (شروعاتي وقت سان ٽرگر ۽ شروع ٿيڻ جي وچ ۾.ampلنگ). ھن خصوصيت کي پاڻمرادو انتظار جي موڊ سان گڏ ڪري سگھجي ٿو (پيراميٽر 'LowPowerAutoWait'). ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي. نوٽ: جيڪڏهن فعال آهي، هي خصوصيت پڻ بند ڪري ٿي ADC وقف ٿيل 14 MHz RC آسيليٽر (HSI14)

UM3029 - Rev 1

صفحو 58/1419

يو ايم 3029
ADC Firmware ڊرائيور رجسٽري جوڙجڪ
· فنڪشنل اسٽيٽ ADC_InitTypeDef::ContinuousConvMode
وضاحت ڪريو ته ڇا تبديلي سنگل موڊ ۾ ڪئي وئي آهي (هڪ تبادلي) يا ADC گروپ باقاعده لاءِ لڳاتار موڊ، پهرين ADC تبادلي جي شروعات ٿيڻ کان پوءِ (سافٽ ويئر شروع يا خارجي ٽرگر). ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي.
· uint32_t ADC_InitTypeDef::NbrOfConversion
صفن جو تعداد بيان ڪريو جيڪي باقاعده گروپ جي ترتيب ۾ تبديل ڪيا ويندا. هي پيٽرولر ScanConvMode تي منحصر آهي:
sequencer مڪمل طور تي ترتيب ڏيڻ لاء ترتيب ڏنل: اسڪين جي ترتيب ۾ صفن جو تعداد ھن پيٽرولر کي استعمال ڪندي ترتيب ڏئي سگھجي ٿو. نوٽ: 'HAL_ADC_Init()' جي پهرئين ڪال کان پوءِ، هر درجه بندي کي پيرا ميٽر سان ملندڙ جلندڙ "NbrOfConversion" کي 'HAL_ADC_ConfigChannel()' استعمال ڪندي مقرر ڪيو وڃي. ان کان پوءِ، جڏهن سڀ گهربل sequencer رينڪ مقرر ڪيا وڃن، پيراميٽر 'NbrOfConversion' کي اپ ڊيٽ ڪري سگھجي ٿو بغير ترتيب ڏيڻ واري ترتيب جي ترتيب ڏيڻ جي (Sequencer ranks مٿي 'NbrOfConversion' کي رد ڪيو ويو آهي).
sequencer مڪمل طور تي ترتيب نه ڏيڻ لاء ترتيب ڏنل آهي: اسڪين جي ترتيب ۾ صفن جو تعداد ترتيب ۾ سيٽ ڪيل چينلن جي تعداد سان بيان ڪيو ويو آهي. هي پيٽرول رد ڪيو ويو آهي. هي پيراميٽر لازمي آهي ته هڪ انگ Min_Data = 1 ۽ Max_Data = 8 جي وچ ۾ هجي. نوٽ: هي پيرا ميٽر تبديل ٿيڻ گهرجي جڏهن ڪا به تبديلي باقاعده گروپ تي نه ٿي رهي آهي (ADC غير فعال، يا ADC مسلسل موڊ يا خارجي ٽرگر کان سواء فعال آهي جيڪو تبديلي شروع ڪري سگهي ٿو) .
· فنڪشنل اسٽيٽ ADC_InitTypeDef::DiscontinuousConvMode
وضاحت ڪريو ته ڇا ADC گروپ جي تبديلين جو سلسلو باقاعده مڪمل-ترتيب/ منقطع-تسلسل ۾ ڪيو ويندو آهي (مکيه تسلسل لڳاتار حصن ۾ ورهايل). بي ترتيب موڊ صرف استعمال ڪيو ويندو آهي جڏهن sequencer فعال آهي (پيراميٽر 'ScanConvMode'). جيڪڏهن sequencer بند ٿيل آهي، اهو پيٽرولر رد ڪيو ويندو. مسلسل موڊ کي فعال ڪري سگهجي ٿو صرف ان صورت ۾ جڏهن مسلسل موڊ غير فعال آهي. جيڪڏهن مسلسل موڊ فعال آهي، هي پيٽرولر سيٽنگ رد ڪئي وئي آهي. ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي. نوٽ: هن STM32 سيريز تي، ADC گروپ باقاعده تعداد ۾ وقفي رينڪ جي واڌ کي مقرر ڪيو ويو آهي هڪ طرف.
· uint32_t ADC_InitTypeDef ::ExternalTrigConv
منتخب ڪريو خارجي واقعي جو ذريعو ADC گروپ کي ٽرگر ڪرڻ لاءِ استعمال ڪيو باقاعده تبديلي جي شروعات. جيڪڏهن سيٽ ڪيو وڃي ADC_SOFTWARE_START تي، خارجي محرڪ بند ڪيا ويندا آهن ۽ سافٽ ويئر ٽرگر ان جي بدران استعمال ڪيو ويندو آهي. هي پيٽرولر ADC_regular_external_trigger_source جو قدر ٿي سگھي ٿو. احتياط: خارجي محرڪ ذريعو سڀني ADC مثالن لاء عام آهي.
· uint32_t ADC_InitTypeDef ::ExternalTrigConvEdge
ADC گروپ جي باقاعده تبديلي جي شروعات کي ٽريڪ ڪرڻ لاءِ استعمال ٿيل خارجي واقعي واري ڪنڊ کي چونڊيو. جيڪڏهن ٽرگر جو ماخذ ADC_SOFTWARE_START تي مقرر ڪيو ويو آهي، اهو پيٽرولر رد ڪيو ويندو. هي پيٽرولر ADC_regular_external_trigger_edge جو قدر ٿي سگھي ٿو
· فنڪشنل اسٽيٽ ADC_InitTypeDef::DMAContinuousRequests
وضاحت ڪريو ته ڇا DMA درخواستون هڪ شاٽ موڊ ۾ ڪيون وينديون آهن (DMA منتقلي بند ٿي ويندي آهي جڏهن تبادلن جو تعداد پهچي ويندو آهي) يا مسلسل موڊ ۾ (DMA منتقلي لامحدود، ڪنهن به قسم جي تبديلين جو تعداد). ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي. نوٽ: لڳاتار موڊ ۾، ڊي ايم اي کي سرڪلر موڊ ۾ ترتيب ڏنو وڃي. ٻي صورت ۾ هڪ اوور رن شروع ڪيو ويندو جڏهن DMA بفر وڌ ۾ وڌ پوائنٽر پهچي ويندو.
· uint32_t ADC_InitTypeDef :: Overrun
اووررن جي صورت ۾ رويي کي چونڊيو: ڊيٽا اوور رائٽ يا محفوظ ٿيل (ڊفالٽ). هي پيٽرولر ADC_HAL_EC_REG_OVR_DATA_BEHAVIOR جو قدر ٿي سگھي ٿو. نوٽ: اووررن سيٽ جي صورت ۾ ڊيٽا کي محفوظ ڪيو ويو آهي ۽ پروگرامنگ ماڊل سان مداخلت سان استعمال ڪيو ويندو آهي (HAL_Start_IT()): ADC IRQ هينڊلر کي تبادلي جي جھنڊن جي آخر کي صاف ڪرڻو پوندو، اهو محفوظ ٿيل ڊيٽا کي جاري ڪري ٿو. جيڪڏهن ضرورت هجي ته، هن ڊيٽا کي HAL_ADC_ConvCpltCallback() فنڪشن ۾ محفوظ ڪري سگهجي ٿو، جيڪو صارف پروگرام ڪوڊ ۾ رکيل آهي (جنهن کي تبادلي جي پرچم جي ختم ٿيڻ کان اڳ سڏيو ويندو آهي). نوٽ: تبادلي جي موڊ جي حوالي سان رپورٽنگ ۾ غلطي:
ايونٽ يا مداخلت لاءِ پولنگ ذريعي ADC تبادلي سان استعمال: غلطي صرف ان صورت ۾ رپورٽ ڪئي وئي آهي جڏهن اووررن کي ڊيٽا محفوظ ڪيو ويو آهي. جيڪڏهن اووررن ڊيٽا کي اوور رائٽ تي سيٽ ڪيو ويو آهي، صارف رضامندي سان سڀني تبديل ٿيل ڊيٽا کي نه پڙهي سگهي ٿو، اهو هڪ غلط ڪيس نه سمجهيو ويندو آهي.
DMA پاران ADC تبادلي سان استعمال: غلطي ٻڌايو ويو آهي جيڪو به اووررن سيٽنگ (DMA ڊيٽا رجسٽر کان سڀني ڊيٽا کي پروسيس ڪرڻ جي اميد رکي ٿو).

UM3029 - Rev 1

صفحو 59/1419

7.1.3

يو ايم 3029
ADC Firmware ڊرائيور رجسٽري جوڙجڪ
· uint32_t ADC_InitTypeDef ::SamplingTimeCommon1 سيٽ sampling time عام چينلن جي هڪ گروپ لاء. يونٽ: ADC گھڙي سائيڪلن جي بدلي جو وقت s جو اضافو آھيampلنگ ٽائيم ۽ پروسيسنگ ٽائيم (ADC ريزوليوشن 12.5 بِٽ تي 12 ADC ڪلاڪ، 10.5 بِٽ تي 10 چڪر، 8.5 بِٽ تي 8 چڪر، 6.5 بِٽ تي 6 سائيڪلون). نوٽ: هن STM32 خاندان تي، ٻه مختلف ايسampling وقت سيٽنگون موجود آهن، هر چينل انهن ٻن سيٽنگن مان هڪ استعمال ڪري سگهي ٿو. ڪجهه ٻين STM32 ڊوائيسز تي، هي پيٽرولر چينل وار ۾ ۽ ADC چينل شروعاتي جوڙجڪ ۾ واقع آهي. هي پيٽرولر ADC_HAL_EC_CHANNEL_S جو قدر ٿي سگهي ٿوAMPLINGTIME نوٽ: اندروني ماپ چينلز جي استعمال جي صورت ۾ (VrefInt/Vbat/TempSensor)،ampوقت جي پابندين جو احترام ڪيو وڃي (sampling وقت ADC گھڙي جي تعدد ۽ s جي فنڪشن ۾ ترتيب ڏئي سگهجي ٿوampling time setting) ٽائمنگ ويلز لاءِ ڊيوائس ڊيٽا شيٽ جو حوالو ڏيو، پيرا ميٽرز TS_vrefint، TS_vbat، TS_temp (قرضن جي ترتيب: ڪجھ ٽينس مائڪرو سيڪنڊ).
· uint32_t ADC_InitTypeDef ::SamplingTimeCommon2 سيٽ sampچينلن جي هڪ گروپ لاءِ لنگ جو وقت، ٻيو عام سيٽنگ ممڪن آهي. يونٽ: ADC گھڙي سائيڪلن جي بدلي جو وقت s جو اضافو آھيampلنگ ٽائيم ۽ پروسيسنگ ٽائيم (ADC ريزوليوشن 12.5 بِٽ تي 12 ADC ڪلاڪ، 10.5 بِٽ تي 10 چڪر، 8.5 بِٽ تي 8 چڪر، 6.5 بِٽ تي 6 سائيڪلون). نوٽ: هن STM32 خاندان تي، ٻه مختلف ايسampling وقت سيٽنگون موجود آهن، هر چينل انهن ٻن سيٽنگن مان هڪ استعمال ڪري سگهي ٿو. ڪجهه ٻين STM32 ڊوائيسز تي، هي پيٽرولر چينل وار ۾ ۽ ADC چينل شروعاتي جوڙجڪ ۾ واقع آهي. هي پيٽرولر ADC_HAL_EC_CHANNEL_S جو قدر ٿي سگهي ٿوAMPLINGTIME نوٽ: اندروني ماپ چينلز جي استعمال جي صورت ۾ (VrefInt/Vbat/TempSensor)،ampوقت جي پابندين جو احترام ڪيو وڃي (sampling وقت ADC گھڙي جي تعدد ۽ s جي فنڪشن ۾ ترتيب ڏئي سگهجي ٿوampling time setting) ٽائمنگ ويلز لاءِ ڊيوائس ڊيٽا شيٽ جو حوالو ڏيو، پيرا ميٽرز TS_vrefint، TS_vbat، TS_temp (قرضن جي ترتيب: ڪجھ ٽينس مائڪرو سيڪنڊ).
· فنڪشنل اسٽيٽ ADC_InitTypeDef::OversamplingMode وضاحت ڪريو ته ڇا اوورampling خصوصيت فعال يا بند ٿيل آهي. ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي. نوٽ: هي پيٽرول صرف ان صورت ۾ تبديل ٿي سگهي ٿو جڏهن ADC گروپ تي ڪا به تبديلي جاري ناهي.
· ADC_OversamplingTypeDef ADC_InitTypeDef ::Oversampling اوور جي وضاحت ڪريوampling parameters. احتياط: هي سيٽنگ پوئين اوور کي ختم ڪري ٿيampling جي ٺاھ جوڙ جيڪڏھن oversampling اڳ ۾ ئي فعال آهي.
· uint32_t ADC_InitTypeDef::TriggerFrequencyMode ADC ٽرگر فريڪوئنسي موڊ سيٽ ڪريو. هي پيٽرولر ADC_HAL_EC_REG_TRIGGER_FREQ جو قدر ٿي سگھي ٿو. نوٽ: ADC ٽريگر فريڪوئنسي موڊ کي گھٽ تعدد تي مقرر ڪيو وڃي ٿو جڏھن مدت کان اڳ وڌي وڃي ٿي ADC تبادلي جي شروعات ٽرگر واقعي جي وچ ۾ (ADC فعال ۽ ADC تبادلي جي شروعات ٽرگر واقعي جي وچ ۾ يا ٻن ADC تبادلي جي شروعات ٽرگر واقعي جي وچ ۾). مدت جي قيمت: ڊوائيس جي ڊيٽا شيٽ ڏانهن رجوع ڪريو، پيٽرولر "tIdle". نوٽ: جڏهن ADC ٽرگر فريڪوئنسي موڊ کي گهٽ فريڪوئنسي تي سيٽ ڪيو ويندو آهي، ته ADC تبادلي جي شروعات ڪرڻ کان پهريان ڪجهه ري آرم سائيڪلون داخل ڪيون وينديون آهن، 2 ADC ڪلاڪ سائيڪلن جي دير کي وڌائڻ.
ADC_ChannelConfTypeDef ADC_ChannelConfTypeDef جي وضاحت ڪئي وئي آهي stm32c0xx_hal_adc.h ڊيٽا فيلڊز ۾
· uint32_t چينل · uint32_t درجو · uint32_t Sampوقت
فيلڊ دستاويزن
· uint32_t ADC_ChannelConfTypeDef::Channel ADC باقاعده گروپ ۾ ترتيب ڏيڻ لاءِ چينل جي وضاحت ڪريو. هي پيٽرولر ADC_HAL_EC_CHANNEL جو قدر ٿي سگهي ٿو نوٽ: ڊوائيسز ۽ ADC مثالن تي منحصر ڪري، ڪجهه چينل ڊوائيس پيڪيج پنن تي دستياب نه هوندا. چينلن جي دستيابي لاءِ ڊيوائس ڊيٽا شيٽ جو حوالو ڏيو.
· uint32_t ADC_ChannelConfTypeDef::Rank ADC ريگولر گروپ سيڪوئنسر مان چينل شامل ڪريو يا ختم ڪريو ۽ ان جي تبادلي جي درجه بندي جي وضاحت ڪريو. هي پيٽرولر ScanConvMode تي منحصر آهي:
sequencer مڪمل طور تي ترتيب ڏيڻ لاء ترتيب ڏنل: چينل ترتيب ڏيڻ واري اسڪين جي ترتيب جي هر درجي ۾: جيڪو به چينل رکيل هجي ڪنهن به درجي ۾.
sequencer مڪمل طور تي ترتيب نه ڏيڻ لاء ترتيب ڏنل: هر چينل جي درجه بندي چينل HW نمبر طرفان مقرر ڪئي وئي آهي. (چينل 0 مقرر ٿيل درجه بندي 0 تي، چينل 1 مقرر ڪيل درجه بندي 1 تي، ...). جيتوڻيڪ چينل جي درجه بندي مقرر ڪئي وئي آهي، هي پيٽرولر هڪ اضافي امڪان جي اجازت ڏئي ٿو: چونڊيل درجه بندي (چونڊيل چينل) کي ترتيب ڏيڻ کان هٽائڻ لاء. هي پيٽرولر ADC_HAL_EC_REG_SEQ_RANKS جو قدر ٿي سگھي ٿو

UM3029 - Rev 1

صفحو 60/1419

7.1.4

يو ايم 3029
ADC Firmware ڊرائيور رجسٽري جوڙجڪ
· uint32_t ADC_ChannelConfTypeDef ::Sampوقت
Sampمنتخب ٿيل چينل لاءِ ling وقت جو قدر مقرر ڪيو وڃي. يونٽ: ADC گھڙي سائيڪلن جي بدلي جو وقت s جو اضافو آھيampلنگ ٽائيم ۽ پروسيسنگ ٽائيم (ADC ريزوليوشن 12.5 بِٽ تي 12 ADC ڪلاڪ، 10.5 بِٽ تي 10 چڪر، 8.5 بِٽ تي 8 چڪر، 6.5 بِٽ تي 6 سائيڪلون). هي پيٽرولر ADC_HAL_EC_S جو قدر ٿي سگهي ٿوAMPLINGTIME_COMMON نوٽ: هن STM32 خاندان تي، ٻه مختلف ايسampling وقت سيٽنگون موجود آهن (پيراميٽر جو حوالو ڏيو "SamplingTimeCommon1" ۽ "SamplingTimeCommon2”)، هر چينل انهن ٻن سيٽنگن مان هڪ کي استعمال ڪري سگهي ٿو. نوٽ: اندروني ماپ چينلز جي استعمال جي صورت ۾ (VrefInt/Vbat/TempSensor)، sampوقت جي پابندين جو احترام ڪيو وڃي (sampling وقت ADC گھڙي جي تعدد ۽ s جي فنڪشن ۾ ترتيب ڏئي سگهجي ٿوampling time setting) ٽائمنگ ويلز لاءِ ڊيوائس ڊيٽا شيٽ جو حوالو ڏيو.
ADC_AnalogWDGConfTypeDef ADC_AnalogWDGConfTypeDef stm32c0xx_hal_adc.h ۾ وضاحت ڪئي وئي آهي
ڊيٽا جا ميدان
· uint32_t واچ ڊاگ نمبر
· uint32_t WatchdogMode
· uint32_t چينل
· فنڪشنل اسٽيٽ آئي ٽي موڊ
· uint32_t HighThreshold
· uint32_t LowThreshold
فيلڊ دستاويزن
· uint32_t ADC_AnalogWDGConfTypeDef::WatchdogNumber
چونڊيو جيڪو ADC اينالاگ واچ ڊاگ چونڊيل چينل جي نگراني ڪري رهيو آهي. اينالاگ واچ ڊاگ 1 لاءِ: صرف 1 چينل مانيٽر ڪري سگھجي ٿو (يا چينلن جو مجموعي گروپ پيراميٽر مقرر ڪندي 'WatchdogMode') اينالاگ واچ ڊاگ 2 ۽ 3 لاءِ: ڪيترائي چينل مانيٽر ڪري سگھجن ٿا (هر چينل لاءِ 'HAL_ADC_AnalogWDGConfig()' جي لڳاتار ڪالن ذريعي) هي پيٽرولر ADC_HAL_EC_AWD_NUMBER جو قدر ٿي سگهي ٿو.
· uint32_t ADC_AnalogWDGConfTypeDef::WatchdogMode
ADC اينالاگ واچ ڊاگ موڊ کي ترتيب ڏيو: اڪيلو / سڀ / ڪو به چينل. اينالاگ واچ ڊاگ 1 لاءِ: ADC اينالاگ واچ ڊاگ موڊ کي ترتيب ڏيو: واحد چينل يا سڀ چينل، ADC گروپ باقاعده. اينالاگ واچ ڊاگ 2 ۽ 3 لاءِ: AWD init ڍانچي کي لڳاتار لاڳو ڪرڻ سان ڪيترائي چينل مانيٽر ڪري سگھجن ٿا. هي پيٽرولر ADC_analog_watchdog_mode جو قدر ٿي سگھي ٿو.
· uint32_t ADC_AnalogWDGConfTypeDef :: چينل
اينالاگ واچ ڊاگ ذريعي مانيٽر ڪرڻ لاءِ ADC چينل چونڊيو. اينالاگ واچ ڊاگ 1 لاءِ: هي پيٽرول صرف ان صورت ۾ اثر رکي ٿو جڏهن پيراميٽر 'WatchdogMode' سنگل چينل تي ترتيب ڏنل آهي (صرف 1 چينل مانيٽر ڪري سگهجي ٿو). اينالاگ واچ ڊاگ 2 ۽ 3 لاءِ: ڪيترائي چينل مانيٽر ڪري سگھجن ٿا. هن خصوصيت کي استعمال ڪرڻ لاءِ، هر چينل کي شامل ڪرڻ لاءِ (يا قدر 'ADC_ANALOGWATCHDOG_NONE' سان هٽايو ويو) لاءِ لڳاتار فنڪشن HAL_ADC_AnalogWDGConfig() کي ڪال ڪريو. هي پيٽرولر ADC_HAL_EC_CHANNEL جو قدر ٿي سگهي ٿو.
· فنڪشنل اسٽيٽ ADC_AnalogWDGConfTypeDef::ITMode
وضاحت ڪريو ته ڇا اينالاگ واچ ڊاگ مداخلت يا پولنگ موڊ ۾ ترتيب ڏنل آهي. ھي پيٽرول سيٽ ڪري سگھجي ٿو ENABLE يا DISABLE تي
· uint32_t ADC_AnalogWDGConfTypeDef::HighThreshold
ADC اينالاگ واچ ڊاگ کي ترتيب ڏيو هاءِ حد جي قيمت. منتخب ٿيل ADC ريزوليوشن جي بنياد تي (12، 10، 8 يا 6 بِٽ)، هي پيٽرول لازمي طور تي Min_Data = 0x000 ۽ Max_Data = 0xFFF، 0x3FF، 0xFF يا 0x3F جي وچ ۾ هجڻ گهرجي. نوٽ: اينالاگ واچ ڊاگ 2 ۽ 3 8 بِٽ جي ريزوليوشن تائين محدود آھن: جيڪڏھن ADC ريزوليوشن 12 بِٽ آھي ته 4 LSB کي نظرانداز ڪيو ويندو، جيڪڏھن ADC ريزوليوشن 10 بِٽ آھي ته 2 LSB کي نظرانداز ڪيو ويندو. نوٽ: جيڪڏهن ADC اوورampling فعال آهي، ADC اينالاگ واچ ڊاگ جي حد متاثر ٿيل آهي: اينالاگ واچ ڊاگ جي حدن جو مقابلو اوور تي ڪيو ويندو آهيampling فائنل ڪمپيوٽيشن (تناسب ۽ شفٽ ايپليڪيشن کان پوء): ADC ڊيٽا رجسٽر بٽ فيلڊ [15:4] (12 سڀ کان اهم بٽ).
· uint32_t ADC_AnalogWDGConfTypeDef::LowThreshold
ADC اينالاگ واچ ڊاگ کي ترتيب ڏئي ٿو گھٽ حد جي قيمت. منتخب ٿيل ADC ريزوليوشن جي بنياد تي (12، 10، 8 يا 6 بِٽ)، هي پيٽرول لازمي طور تي Min_Data = 0x000 ۽ Max_Data = 0xFFF، 0x3FF، 0xFF يا 0x3F جي وچ ۾ هجڻ گهرجي. نوٽ: اينالاگ واچ ڊاگ 2 ۽ 3 8 بٽس جي ريزوليوشن تائين محدود آھن: جيڪڏھن ADC ريزوليوشن 12 بِٽ آھي ته 4 LSB کي نظرانداز ڪيو ويندو، جيڪڏھن ADC ريزوليوشن 10 بِٽ آھي ته 2 LSB کي نظرانداز ڪيو ويندو. نوٽ: جيڪڏهن ADC اوورampling فعال آهي، ADC اينالاگ واچ ڊاگ جي حد متاثر ٿيل آهي: اينالاگ واچ ڊاگ جي حدن جو مقابلو اوور تي ڪيو ويندو آهيampling فائنل ڪمپيوٽيشن (تناسب ۽ شفٽ ايپليڪيشن کان پوء): ADC ڊيٽا رجسٽر بٽ فيلڊ [15:4] (12 سڀ کان اهم بٽ).

UM3029 - Rev 1

صفحو 61/1419

7.1.5

يو ايم 3029
ADC Firmware ڊرائيور رجسٽري جوڙجڪ
__ADC_HandleTypeDef __ADC_HandleTypeDef stm32c0xx_hal_adc.h ڊيٽا فيلڊز ۾ بيان ڪيو ويو آهي · ADC_TypeDef * مثال · ADC_InitTypeDef Init · DMA_HandleTypeDef * DMA_HandleTypeDef * DMA_Handle 32 Lock IO uint32_t Error Code · uint32_t ADCGroupRegularSequencerRanks · void(* ConvCpltCallback · void(* ConvHalfCpltCallback · void(* LevelOutOfWindowCallback · void(* ErrorCallback · void(* LevelOutOfWindow2Callback · void(* LevelOutOfWindow3Callback · void(* EndOfSamplingCallback · void(* MspInitCallback · void(* MspDeInitCallback فيلڊ دستاويزي · ADC_TypeDef* __ADC_HandleTypeDef::Instance
رجسٽر جو بنيادي پتو · ADC_InitTypeDef __ADC_HandleTypeDef ::Init
ADC شروعاتي پيٽرولر ۽ باقاعده تبديلين جي جوڙجڪ · DMA_HandleTypeDef* __ADC_HandleTypeDef::DMA_Handle
پوائنٽر ڊي ايم اي هينڊلر · HAL_LockTypeDef __ADC_HandleTypeDef::Lock
ADC لاڪنگ اعتراض · __IO uint32_t __ADC_HandleTypeDef::State
ADC ڪميونيڪيشن اسٽيٽ (ADC رياستن جو بٽ نقشو) · __IO uint32_t __ADC_HandleTypeDef::ErrorCode
ADC غلطي ڪوڊ · uint32_t __ADC_HandleTypeDef::ADCGroupRegularSequencerRanks
ADC گروپ ريڪن سيٽنگ جي باقاعده ترتيب واري يادگيري، موڊ ۾ استعمال ڪيو ويو "مڪمل طور تي ترتيب ڏيڻ" (پيراميٽر 'ScanConvMode' ڏانهن رجوع ڪريو) · void(* __ADC_HandleTypeDef::ConvCpltCallback) (struct __ADC_HandleTypeDef *hadc) ڪالون __ADC_HandleTypeDef *hadc: ADC_Complement ConvHalfCpltCallback)(struct __ADC_HandleTypeDef *hadc) ADC ڪنورشن DMA اڌ-منتقلي ڪالبڪ · void(* __ADC_HandleTypeDef::LevelOutOfWindowCallback)(struct __ADC_HandleTypeDef *ADC_HandleTypeDef *ADC_Back peDef::ErrorCallback)(structure __ADC_HandleTypeDef *hadc) ADC error callback · void(* __ADC_HandleTypeDef::LevelOutOfWindow1Callback)(struct __ADC_HandleTypeDef *hadc) ADC اينالاگ واچ ڊاگ 2 ڪال بڪ · void(* __ADC_HandleTypeDef::Clevel_TypeDef::Clevel_TypeDef*and hadc) ADC اينالاگ واچ ڊاگ 2 ڪال بڪ · void(* __ADC_HandleTypeDef:: EndOfSamplingCallback)(struct __ADC_HandleTypeDef *hadc) ADC جو آخرampling callback

UM3029 - Rev 1

صفحو 62/1419

7.2
7.2.1
7.2.2

يو ايم 3029
ADC Firmware ڊرائيور API وضاحت
· void(* __ADC_HandleTypeDef::MspInitCallback)(struct __ADC_HandleTypeDef *hadc) ADC Msp Init ڪال بيڪ
· void(* __ADC_HandleTypeDef::MspDeInitCallback)(struct __ADC_HandleTypeDef *hadc) ADC Msp DeInit ڪال بيڪ
ADC Firmware ڊرائيور API وضاحت
هيٺيون سيڪشن ADC لائبريري جي مختلف ڪمن کي لسٽ ڪري ٿو.
ADC پردي خاصيتون
· 12-bit، 10-bit، 8-bit يا 6-bit ترتيب ڏيڻ واري ريزوليوشن. · باقاعده تبديلي جي آخر ۾ ۽ اينالاگ واچ ڊاگ يا اووررن واقعن جي صورت ۾ نسل ۾ مداخلت. · سنگل ۽ مسلسل تبادلي جا طريقا. · اسڪين موڊ ڪيترن ئي چينلن کي ترتيب سان تبديل ڪرڻ لاء. · ڊيٽا جي ترتيب ۾ ٺهيل ڊيٽا جي مطابقت سان. · پروگرام لائق ايسampling time (چينل جي گروپ لاءِ عام) · خارجي محرڪ (ٽائمر يا EXTI) ترتيب ڏيڻ جي قابل قطبيت سان · ڊي ايم اي درخواست تيار ڪرڻ لاءِ باقاعده گروپ جي ڪنورشن ڊيٽا جي منتقلي لاءِ. · ADC calibration · ADC تبديلي باقاعده گروپ جي. · ADC سپلائي گهرجون: 1.62 V کان 3.6 V. · ADC ان پٽ رينج: Vref- (Vssa سان ڳنڍيل) Vref+ (Vdda سان ڳنڍيل يا هڪ خارجي حجم سانtage
حوالو).
هن ڊرائيور کي ڪيئن استعمال ڪجي
ADC سان لاڳاپيل مٿين سطح جي پيٽرولن جي ترتيب
1. ADC انٽرفيس کي فعال ڪريو شرط جي طور تي، ADC گھڙي کي RCC مٿين سطح تي ترتيب ڏيڻ لازمي آھي. احتياط: STM32C0 تي، ADC گھڙي فریکوئنسي وڌ ۾ وڌ 35MHz آهي (ڊيوائس ڊيٽا شيٽ ڏانهن رجوع ڪريو). تنهن ڪري، آر سي سي کان ADC ڪلاڪ جو ذريعو ۽ ADC گھڙي پري اسڪيلر کي ترتيب ڏنو وڃي ته جيئن هن وڌ ۾ وڌ تعدد کان هيٺ رهي. ٻه ڪلاڪ سيٽنگون لازمي آھن: ADC گھڙي (بنيادي گھڙي، پڻ ممڪن طور تي تبديل ٿيندڙ گھڙي). ADC گھڙي (تبادلي جي گھڙي). چار ممڪن گھڙي جا ذريعا: APB گھڙي مان هم وقت ساز گھڙي (ساڳي ADC ڪور گھڙي وانگر) يا آر سي سي سطح کان غير مطابقت واري گھڙي: SYSCLK، HSI48. مثالample: HAL_ADC_MspInit () ۾ (سفارش ڪيل ڪوڊ جڳھ) يا ٻئي ڊوائيس گھڙي جي پيٽرولن جي ترتيب سان: __HAL_RCC_ADC_CLK_ENABLE(); (لازمي: بنيادي گھڙي) ADC گھڙي جو ماخذ ۽ گھڙي prescaler ADC سطح تي ترتيب ڏنل آھن پيراميٽر سان "ClockPrescaler" فنڪشن HAL_ADC_Init().
2. ADC پنن جي جوڙجڪ ميڪرو __HAL_RCC_GPIOx_CLK_ENABLE() استعمال ڪندي ADC GPIOs لاءِ گھڙي کي فعال ڪريو فنڪشن HAL_GPIO_Init() استعمال ڪندي اينالاگ موڊ ۾ ھنن ADC پنن کي ترتيب ڏيو
3. اختياري طور، مداخلت سان ADC جي استعمال جي صورت ۾: NVIC کي ADC لاءِ فنڪشن استعمال ڪندي ترتيب ڏيو HAL_NVIC_EnableIRQ(ADCx_IRQn) ADC interruption handler function HAL_ADC_IRQHandler() کي لاڳاپيل ADC interruption vector ADC ۽ HDCxler() جي فنڪشن ۾ داخل ڪريو.
4. اختياري طور تي، DMA جي استعمال جي صورت ۾: HAL_DMA_Init() فنڪشن استعمال ڪندي DMA (DMA چينل، موڊ نارمل يا سرڪيولر، …) ترتيب ڏيو. HAL_NVIC_EnableIRQ(DMAx_Channelx_IRQn) فنڪشن استعمال ڪندي DMA لاءِ NVIC ترتيب ڏيو ADC مداخلت هينڊلر فنڪشن HAL_ADC_IRQHandler() کي لاڳاپيل DMA مداخلت ویکٹر جي فنڪشن ۾ داخل ڪريو DMAx_Channelx_IRQHandler().

UM3029 - Rev 1

صفحو 63/1419

يو ايم 3029
ADC Firmware ڊرائيور API وضاحت

نوٽ:

ADC جي ٺاھ جوڙ، گروپ باقاعده، چينل پيٽرولر
1. فنڪشن HAL_ADC_Init() استعمال ڪندي ADC پيرا ميٽرز (ريزوليوشن، ڊيٽا الائنمينٽ، …) ۽ باقاعده گروپ پيرا ميٽرز (ڪنورشن ٽرگر، sequencer، …) ترتيب ڏيو.
2. فنڪشن HAL_ADC_ConfigChannel().
3. اختياري طور تي، HAL_ADC_AnalogWDGConfig().
ADC تبديلين جي عملدرآمد
1. اختياري طور تي، HAL_ADCEx_Calibration_Start() فنڪشن استعمال ڪندي تبادلي جي درستگي کي بهتر ڪرڻ لاءِ هڪ خودڪار ADC حساب ڪتاب انجام ڏيو.
2. ADC ڊرائيور ٽن طريقن ۾ استعمال ڪري سگھجي ٿو: پولنگ، مداخلت، ڊي ايم اي پاران منتقلي. پولنگ ذريعي ADC ڪنورشن: ADC پردي کي چالو ڪريو ۽ فنڪشن استعمال ڪندي تبديلي شروع ڪريو HAL_ADC_Start() HAL_ADC_PollForConversion() فنڪشن استعمال ڪندي ADC جي تبادلي جي مڪمل ٿيڻ جو انتظار ڪريو HAL_ADC_GetValue() فنڪشن استعمال ڪندي تبادلي جا نتيجا واپس وٺو مداخلت: ADC پردي کي چالو ڪريو ۽ فنڪشن استعمال ڪندي تبديلين کي شروع ڪريو HAL_ADC_Start_IT() ڪال آف فنڪشن HAL_ADC_ConvCpltCallback() ذريعي ADC تبادلي جي مڪمل ٿيڻ جو انتظار ڪريو (هن فنڪشن کي استعمال ڪندڙ پروگرام ۾ لاڳو ٿيڻ گهرجي) فنڪشن استعمال ڪندي تبادلي جا نتيجا حاصل ڪريو HAL_ADC_GetValue ۽ ADC کي ڊسڪيويو پرديري هال_اڊڪ_ اسٽاپ_ سيٽ () ڊي ايم ايم پاران منتقلي سان ايڊوڪ ايڊوڪ سيڪٽر () يا هال_اڊڪٿلڪ بليڪ بیکلٽ () اي ڊي سي پرديفلٽ ) تبادلي جا نتيجا خودڪار طور تي DMA طرفان منزل جي متغير پتي ۾ منتقل ڪيا ويا آهن. تبديلي کي روڪيو ۽ فعل کي استعمال ڪندي ADC پردي کي غير فعال ڪريو HAL_ADC_Stop_DMA()
ڪال بڪ افعال لازمي طور تي يوزر پروگرام ۾ لاڳو ٿيڻ گهرجن: · HAL_ADC_ErrorCallback() · HAL_ADC_LevelOutOfWindowCallback() (اينالاگ واچ ڊاگ جو ڪال بيڪ) · HAL_ADC_ConvCpltCallback() · HAL_ADC_ConvHalfCpltCallback
ADC جي شروعات
1. ADC انٽرفيس کي غير فعال ڪريو ADC گھڙي سخت ري سيٽ ٿي سگھي ٿو ۽ RCC مٿين سطح تي معذور ٿي سگھي ٿو. ميڪرو __ADCx_FORCE_RESET()، __ADCx_RELEASE_RESET(). ADC گھڙي کي غير فعال ڪيو برابر ميڪرو / ڪمن کي استعمال ڪندي ترتيب جي قدم جي طور تي. مثالample: HAL_ADC_MspDeInit() ۾ (سفارش ڪيل ڪوڊ جي جڳھ) يا ٻئي ڊوائيس گھڙي جي پيٽرولر جي ترتيب سان: RCC_OscInitStructure.OscillatorType = RCC_OSCILLATORTYPE_HSI14؛ RCC_OscInitStructure.HSI14State = RCC_HSI14_OFF; (جيڪڏهن سسٽم ڪلاڪ لاءِ استعمال نه ڪيو وڃي) HAL_RCC_OscConfig(&RCC_OscInitStructure)؛
2. ADC پنن جي جوڙجڪ ميڪرو __HAL_RCC_GPIOx_CLK_DISABLE() استعمال ڪندي ADC GPIOs لاءِ ڪلاڪ کي غير فعال ڪريو
3. اختياري طور تي، رڪاوٽن سان ADC جي استعمال جي صورت ۾: NVIC کي غير فعال ڪريو ADC لاءِ فنڪشن استعمال ڪندي HAL_NVIC_EnableIRQ(ADCx_IRQn)

UM3029 - Rev 1

صفحو 64/1419

7.2.3

يو ايم 3029
ADC Firmware ڊرائيور API وضاحت
4. اختياري طور تي، DMA جي استعمال جي صورت ۾: HAL_DMA_Init() فنڪشن استعمال ڪندي ڊي ايم اي کي ختم ڪريو. HAL_NVIC_EnableIRQ(DMAx_Channelx_IRQn) فنڪشن استعمال ڪندي DMA لاءِ NVIC کي بند ڪريو
ڪال بيڪ رجسٽريشن
تاليف جو پرچم USE_HAL_ADC_REGISTER_CALLBACKS، جڏهن 1 تي سيٽ ڪيو ويو آهي، صارف کي متحرڪ طور تي ڊرائيور ڪال بڪ کي ترتيب ڏيڻ جي اجازت ڏئي ٿو. استعمال ڪريو افعال @ref HAL_ADC_RegisterCallback() هڪ مداخلت واري ڪال بڪ کي رجسٽر ڪرڻ لاءِ. فنڪشن @ ريف ايڇ

دستاويز / وسيلا

ST UM3029 گھٽ پرت ڊرائيور [pdf] استعمال ڪندڙ دستياب
UM3029 گھٽ پرت ڊرائيور، UM3029، گھٽ پرت ڊرائيور، پرت ڊرائيور

حوالو

تبصرو ڇڏي ڏيو

توهان جو اي ميل پتو شايع نه ڪيو ويندو. گهربل فيلڊ نشان لڳل آهن *