آموزش رجیستری STM32 : پریفرال EXTI و اینتراپت خارجی در STM32F103C8

در این مقاله پریفرال EXTI میکروکنترلر STM32F103C8 و رجیستر هاش رو بررسی میکنیم و اینکه برای تنظیم یک پین در حالت اینتراپت خارجی چه کدی باید بنویسیم و کدوم بیت ها رو در کدوم رجیسترهای پریفرال EXTI باید تغییر بدیم.

فهرست

– اینتراپت خارجی با رجیسترها در میکروکنترلر STM32F103C8

– پریفرال AFIO در میکروکنترلر STM32 و اینتراپت خارجی

– عملکرد و رجیسترهای پریفرال EXTI در میکروکنترلر STM32

اینتراپت خارجی با رجیستر ها در میکروکنترلر STM32F103

برنامه تنظیم پین PA0 در حالت اینتراپت خارجی در میکروکنترلر STM32F103 :

پین PA0 در حالت اینتراپت خارجی با تغییر رجیستر ها در میکروکنترلر STM32F103C8

در این مقاله مرحله ی 3 و 4 و نقش پریفرال های AFIO و EXTI در تنظیمات اینتراپت خارجی در میکروکنترلر STM32 بررسی میشه.

پریفرال AFIO در میکروکنترلر STM32 و اینتراپت های خارجی

 

در پریفرال EXTI میکروکنترلر STM32F1 تا 20 خط اینتراپت میتونه وجود داشته باشه که خط های 0 تا 15 به پین های میکروکنترلر متصل شدن (بقیه به منابع داخلی وصل شدن). از بین تمام پین های صفر یعنی PA0 ، PB0 , PC0 … فقط یکی از اونها میتونه به خط صفر اینتراپت متصل بشه. همینطور از بین تمام پین های یک فقط یکی از اون ها میتونه به اینتراپت خط یک وصل بشه. 

اتصال پین های میکروکنترلرر به خط های اینتراپت پریفرال EXTI در رجیستر های EXTICR در پریفرال AFIO در میکروکنترلر STM32F103C8

 

در رجیستر های EXTICR پریفرال AFIO برای برای هر خط اینتراپت چهار بیت وجود داره.  مثلا برای وصل کردن پین PA0 که پین 0 پورت A هست به خط صفر اینتراپت خارجی باید در بیت های EXTI0 در رجیستر EXTICR1 صفر نوشت (خط 21 در برنامه ).

 

اتصال پین PA0 به خط صفر اینتراپت پریفرال EXTI در بیت های EXTI0 در رجیستر EXTICR1 پریفرال AFIO در میکروکنترلر STM32F103

رجیسترهای پریفرال EXTI در میکروکنترلر STM32F103C8

در هر کدوم از 6 تا رجیستر پریفرال EXTI در میکروکنترلر STM32، تعداد 20  بیت وجود داره برای 20 تا خط اینتراپت ، برای هر خط اینتراپت یک بیت داریم در هر رجیستر.

 

رجیستر های پریفرال EXTI در میکروکنترلر STM32F103C8

 

تصویر بلوک دیاگرام پریفرال EXTI در میکروکنترلر STM32. در ادامه وظیفه ی هر رجیستر بررسی میشه .

 

بلوک دیاگرام پریفرال EXTI در میکروکنترلر STM32F103C8

 

1 – رجیستر EXTI_FTSR در میکروکنترلر STM32F1

اگر بیت مربوط به هر خط اینتراپت رو در این رجیستر یک کنیم در لبه ی پایین رونده ی پین مربوط به اون خط ، اینتراپت خواهیم داشت ( اگر اینتراپت رو فعال کنیم ) . اگر بیت مربوطه رو صفر کنیم ، در لبه ی پایین رونده اینتراپت نداریم.

برای فعال کردن اینتراپت در لبه ی پایین رونده پین PA0، بیت TR0 یک میشود.

 

فعالسازی اینتراپت در لبه ی پایین رونده پین ورودی در رجیستر EXTI_FTSR در میکروکنترلر STM32F103C8

 

 

2 – رجیستر EXTI_RTSR در میکروکنترلر STM32F1

اگر بیت مربوط به یک خط اینتراپت رو در این رجیستر یک کنیم ، در لبه ی بالارونده پین متصل شده به اون خط ، اینتراپت خواهیم داشت. اگر بیت مربوطه رو صفر کنیم در لبه ی بالارونده اینتراپت نداریم.

برای غیر فعال کردن اینتراپت در لبه بالارونده پین PA0، بیت TR0 در رجیستر RTSR صفر میشود.

 

فعال کردن اینتراپت در لبه ی بالارونده در رجیستر EXTI_RTSR در میکروکنترلر STM32F103C8

 

3 – رجیستر EXTI_SWIER در میکروکنترلر STM32F1

اگر وقتی وضعیت بیت صفر هست اون رو یک کنیم. میتونیم به صورت نرم افزاری کاری کنیم که بدون اینکه لبه ی بالارونده یا پایین رونده روی پین داشته باشیم اینتراپت اتفاق بیافته . 

 

4 – رجیستر EXTI_IMR در میکروکنترلر STM32F1

هر خط اینتراپت یک بیت در این رجیستر داره، اگر بیت مربوط به یک خط اینتراپت رو یک کنیم ، درخواست اینتراپت اون خط فعال میشه. اگر بیت مربوط به یک خط اینتراپت رو صفر کنیم ، درخواست اینتراپت مربوط به اون خط غیر فعال میشه.

فعال کردن درخواست اینتراپت خط صفر در پریفرال EXTI با یک کردن بیت MR0 در رجیستر EXTI_IMR در میکروکنترلر STM32 .

 

بیت های فعالسازی اینتراپت های پریفرال EXTI در رجیستر EXTI_IMR در میکروکنترلر STM32F103C8

 

5 – رجیستر EXTI_PR در میکروکنترلر STM32F1

در این رجیستر برای هر خط اینتراپت یک بیت داریم ، که بیت فلگ اینتراپت هست، وقتی درخواست اینتراپت برای یک خط به پریفرال NVIC ارسال بشه، بیت فلگ اینتراپت در این رجیستر توسط سخت افزار یک میشه. ما فقط میتونیم بیت های این رجیستر رو صفر کنیم. وقتی در بیت های این رجیستر یک بنویسیم مقدارش صفر میشه و وقتی صفر بنویسیم تاثیری نداره.

 

قبل از فعال کردن اینتراپت خط صفر در پریفرال NVIC باید فلگ اینتراپت رو صفر کنیم. فلگ اینتراپت برای خط صفر در بیت PR0 هست و برای صفر کردن این بیت باید در اون عدد یک رو بنویسیم. 

 

فلگ های انتراپت پریفرال EXTI در رجیستر EXTI_PR در میکروکنترلر STM32F103C8

 

 

6 – رجیستر EXTI_EMR در میکروکنترلر STM32F1

 

هر خط اینتراپت یک بیت در این رجیستر داره، اگر بیت مربوط به یک خط اینتراپت رو یک کنیم ، ایونت اون خط فعال میشه. اگر بیت مربوط به یک خط اینتراپت رو صفر کنیم ، ایونت مربوط به اون خط غیر فعال میشه.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا