خانه / میکروکنترلرها / میکروکنترلر های ARM / مطالب آموزشی میکروکنترلرهای ARM / آموزش میکروکنترلرهای LPC1768 جلسه پنجم: پورت های ورودی و خروجی lpc17xx_gpio

آموزش میکروکنترلرهای LPC1768 جلسه پنجم: پورت های ورودی و خروجی lpc17xx_gpio

اگر جلسات قبلی آموزش میکروکنترلرهای LPC1768 را در سایت میکرو دیزاینر الکترونیک دنبال کرده باشید میدانید که در جلسه قبلی  توابع CMSIS را برسی کردیم و گفتیم که میخواهیم برنامه ها را بر اساس این توابع بنویسیم. در این جلسه میخواهیم پورت های ورودی و خروجی lpc17xx_gpio  میکروکنترلر LPC1768 را برسی کنیم البته برای سری های مختلف فرقی ندارند و بطور کلی LPC17XX مینامیم.

آموزش میکروکنترلرهای LPC1768 جلسه پنجم: پورت های ورودی و خروجی lpc17xx_gpio

میکروکنترلر LPC1768 حداکثر دارای پنج پورت و این پنج پورت سرجمع دارای هفتاد پین ورودی و خروجی میباشند.نام گذاری پورت ها بصورت P0,P1,P2,P3,P4 میباشند.

بعضی پورت ها دارای ۳۲ پایه و بعضی دیگر کمترند و در داخل بعضی پورت ها بعضی پین ها قابل استفاده نیستن !!مثلا پین های P0[12,13,14],P1[2,3,5,6,7,11,12,13] قابل استفاده نیستن.بقیه پین ها بصورت زیر هستن:

P[30:0]

P1[31:0]

P2[13:0]

P3[26:25]

P4[29:28]

فایل PDF زیر نقشه پایه های میکروکنترلر LPC1768 میباشد.فایل زیر را دانلود کنید در ادامه آموزش ها هم لاز میشه.

دانلود

برای اطلاعات دقیق تر در مورد پین های ورودی و خروجی به قست pin configuration مراجعه کنید.

خب اول کاری گفتم نمیخوام با رجیستر های میکروکنترلر LPC1768 کار کنیم و سعی میکنیم همه برنامه ها و آموزش ها بر اساس توابع CMSIS باشند در این قسمت فقط نگاهی گذرا به رجیستر ها می اندازیم و میریم سر توابع lpc17xx_gpio.h که خیلی راحتر یاد بگیریم.

حتما در ادامه این مطلب را هم بخوانید:  آموزش ARM LPC1768 (قسمت دوم ، تایمرها)

رجیستر های GPIO میروکنترلر LPC1768

رجیستر FIOxDIR

این رجیستر برای تعیین جهت پورت ها (ورودی یا خروجی ) مورد استفاده می شود.

رجیستر FIOxSET

این رجیستر جهت ۱ کردن پین هایی که بصورت خروجی تعریف شدن.

رجیستر FIOxCLR

این رجیستر جهت ۰ کردن پین هایی که بصورت خروجی تعیین شدن.

رجیستر FIOxPIN

این رجیستر دسترسی مستقیم به پورت های ورودی و خروجی را فراهم میکند. بطور مستقیم میتوانیم روی پین بنویسید و بخوانیم.

رجیستر FIOxMASK

برای اینکه در پورت بعضی بیت ها را از عملیات نوشتن/خواندن یا تغییر حالت ورودی/ خروجی  محافظت کنیم از این رجیستر استفاده میکنیم.

رجیسترهای PINSEL 0-10

جهت اننتخاب نحوه عملکرد پین ها مورد استفاده قرار میگیرد بعضی پین ها عملکرد های مختلفی مانند GPIO,UART,SPI,… دارن

رجیسترهای PINMODE 0-9

جهت تنظیم مقاومت های PULL-UP و PULL-DOWN داخلی پورت ها

اگر در مورد مقاومت های بالاکش و پایین کش اطلاعاتی ندارید اینجا مطالعه کنید.

رجیتسر های PINMODE_OP 0-4

برای انتخاب حالت  Open Drain یا درین باز پین ها مورد استفاده قرار میگرن.

خب تا اینجا مروری کردیم بر رجیستر های GPIO میکروکنترلر LPC1768 ، بریم سراغ توابع CMSIS برای کار با ورودی و خروجی ها.

برسی توابع کار با GPIO کتابخانه lpc17xx_gpio.h

دقت داشته باشید همه توابعی که در زیر برسی میکنیم در هدر فایل lpc17xx_gpio.h موجود میباشند و از اینجا دانلود کنید.

حتما در ادامه این مطلب را هم بخوانید:  آموزش میکروکنترلرهای LPC1768 جلسه دهم: UART
تابع GPIO_ReadValue

Uint32_t  GPIO_ReadValue(uint8_t portNum);

برای خوندن مقدار یک پورت استفاده می شود.

ورودی تابع port_Num شماره پورتی که میخواهید بخوانید.

خروجی تابع uint32_t وضعیت پورت

تابع GPIO_SetDir

void GPIO_SetDir(uint8_t portNum, uint32_t bitValue, uint8_t dir);

برای تعیین ورودی/خروجی پین های پورت مورد استفاده قرار میگرد.

ورودی portNum : شماره پورت مورد نظر

ورودی bitValue: شماره پین های مورد نظر

ورودی dir : اگر ۰  باشد ورودی و اگر ۱ باشد خروجی

تابع GPIO_SetValue

void GPIO_SetValue(uint8_t portNum, uint32_t bitValue);

برای یک کردن پین هایی که خروجی تعیین شدن.

ورودی portNum : شماره پورت مورد نظر

ورودی bitValue : شماره پین های مورد نظر

تابع GPIO_ClearValue

void GPIO_ClearValue(uint8_t portNum, uint32_t bitValue);

برای صفر نمودن پین های یک پورت استفاده میشه.

ورودی portNum: شماره پورت مورد نظر

ورودی bitValue: شماره پین های مورد نظر

نکته مهم : این هدر فایل دارای توابع بیشتری میباشد مثلا FIO_HalfWordSetDir که بصورت ۱۶ بیتی میتونیم وضعیت ورودی و خروجی ها را تعیین کنیم. که در این مرحله از یادگیری به این توابع نیاز نداریم و اگر نیاز داشتیم میریم سراغشون.

مثال : پین های ۲۱ و ۲۲ از پورت ۰ را خروجی تعیین و پین ۲۱ را ۱ و پین ۲۲ را ۰ کنید.

#include “lpc17xx.h”

#include “lpc17xx_gpio.c”

int main(void){

GPIO_SetDir(0, (1<<21)|(1<<22), 1);

حتما در ادامه این مطلب را هم بخوانید:  پردازنده های ARM

GPIO_SetValue(0, (1<<21));

GPIO_ClearValue(0, (1<<22));

}

خروجی مثال : پورت های ورودی و خروجی lpc17xx_gpio

مثال دوم : مقدار پورت ۰ را خوانده و در متغییر A ذخیره کنید.

#include “lpc17xx.h”

#include “lpc17xx_gpio.c”

int main(void){

uint32_t A;

A=GPIO_ReadValue(0);

}

خب فک کنم یاد گرفتین چطوری در میکروکنترلر LPC1768 پایه ها را ورودی/خروجی تعیین کنید و مقدار آن را صفر/یک کنید ویا بخوانید.

تمامی جلسات این آموزش را اینجا دنبال کنید.

سوالی داشتین در قسمت نظرات و یا اینجا بپرسید.

هزینه این آموزش معرفی وبسایت Melec.ir به دوستانتان میباشد 🙂

این نوشته را با دوستانتان در تلگرام به اشتراک بگذارید :

درباره ی جهاندیده

با سلام درود به شما که مطالب سایت خودتان را مطالعه می کنید امیدوارم مطالب سایت برایتان مفید باشد و باعث پیشرفت روز افزون شما شود. دوران راهنمایی در کار منتاژ کیت های الکترونیکی بودم تا رفتم هنرستان ^_^ دو سال هنرستان الکترونیک خیلی چیزها یاد گرفتم ! دو سال کاردانی الکترونیک و کارشناسی ICT گرایش بهره برداری از سیستم های مخابراتی پر از تجربه بود و مدتی است در الکترونیک دنیای مشغولم . الکترونیک - تکنولوژی - ICT ، برنامه نویسی ...

پاسخ دهید

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

یک × یک =