به نام خدای شفبع و صبور  خداوند دانش خداوند نور

سلام دوستان عزیز و هم میهنان عزیز!

امروز تصمیم گرفتم که یه مطلب جالب و مفید براتون بزارم! با ما همراه باشید تا این مبحث هم به خوبی فرا بگیرید! cry

 

شما اگه به دیتاشیت میکروکنترلر ها نگاهی بینادازید میبینید که یه نقشه حافظه دارند!

نمونه زیر نقشه حافظه ی میکروکنترلر lpc 1768 هست! اگه دقت کنید gpio در آدرس 0x2009 C000 در حافظه هست!

یعنی تنظیمات GPIO توی این قسمت از حافظه هست! بنابراین شما با در اختیار داشتن این آدرس ها میتوانید خودتون مقدار GPIO رو تغییر بدید!

 

 

حالا سوال اینجاست که چطوری میتونیم توی اون قسمت از حافظه بنویسیم!

جواب اینه که با اشاره گر! و با استفاده از DEFINE میتونیم اینکار رو بکنیم!

مثلا تکه کد زیر همان کار LPC_GPIO2->FIOPIN=0XAA رو انجام میده

#define ioset *((volatile unsigned long*)((0x2009C000UL + 0x00040) | 0x2009C014))
ioset = 0xAA;


آدرس 0x2009C000UL همون آدرس شروع GPIO در حافظه هست

اون 0X40 هم در واقع فاصله ی GPIO2 از نقطه ی اول حافظه ی GPIO هست که با اون آدرس بالایی جمع میشه تا آدرس GPIO2 بدست بیاد

آدرس 0x2009C014 هم همون مکان FIOPIN هست که با آدرس GPIO2 یا (OR) میشه!

 

کد زیر هم همون کار کد بالا رو انجام میده فقط کارهای ریاضی روش انجام شده!

#define ioset *((volatile unsigned long*)(0x2009C054UL))

اگه سوالی داشتید بپرسید در خدمتتونم!

فعلا  یا علی مدد...!