خوب در یک پرشی که برای توضیح در مورد ساختمان ها داشتیم من این نوشته را باز کردم تا در درک ادامه مطلب کتابخانه CMSIS مشکلی نداشته باشید
ساختمان چیست؟
اگر آشنایی با زبان برنامه نویسی C داشته باشید حتما در مورد آرایه ها می دانید
تفاوت آرایه با ساختمان در این است که آرایه فقط می تواند یک نوع داده را به تعداد مورد نیاز در خود ذخیره کند ولی ساختمان می تواند انواع داده را در خود ذخیره کند
به مثال زیر که در بخش سوم مبحث کتابخانه CMSIS نیز به آن اشاره کردیم دقت کنید
در این مثال داده ها که همان رجیستر ها هستند با نوع داده unit32_t و به صورت __IO تعریف شده اند
unit32_t همان int است و ۳۲ بیت اشغال می کند و __IO معنی خواندنی و نوشتنی می دهد . استثناً در این مثال همه داده ها از نوع unit32_t هستند ولی ممکن است متفاوت باشد و از آرایه و حتی از خود ساختمان در ساختمان دیگر نیز استفاده شود.
نکته قابل به ذکر قرار گیری ساختمان ها به ترتیب پشت سر هم است . یعنی داده اول اگر با توجه به مثال از 0x00 شروع شود با توجه به اینکه ۳۲ بیتی (۴ بایت) است داده بعدی در آدرس 0x04 قرار می گیرد
نحوه تعریف ساختمان
روش اول
}<ساختمان>struct
عناصر ساختمان
;{
روش دوم
در این روش متغیر های ساختمان در انتهای تعریف ساختمان مشخص می شود
}struct
عناصر ساختمان
;اسامی متغیر های ساختمان{
روش سوم
در این روش می توان از اسم جدید برای تعریف متغیر های دیگر استفاده کرد
}typedef struct
عناصر ساختمان
;اسم جدید{
ساختمان به ; ختم می شود
تعریف متغیر از نوع ساختمان
در
روش اول
;<اسامی متغیر های از نوع ساختمان><ساختمان>struct
در
روش سوم
;<اسامی متغیر><اسم جدید>
نحوه دسترسی به عناصر ساختمان
<عنصر><اسم متغیر از نوع ساختمان>
خوب برگردیم سر بحث کتابخانه CMSIS
مطالب آموزشی مرتبط:
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.