TGViewer
KnowledgePlus.ir KnowledgePlus.ir @knowledgeplus · 5.52K subscribers
Post #753 6.09K
نمونه ای از کدنویسی عجیب در cmsis:

در تابع زیر که به عنوان نمونه از کتابخانه lpc177x_8x_gpio.c نوشته شده، در صورت ارسال یک عدد ناصحیح در ورودی تابع به عنوان شماره پورت، بجای استفاده از روش هایی مانند تعریف ورودی تابع از نوع enum که تنها مقادیر خاصی را بتواند بپذیرد و یا برگشت یک مقدار بازگشتی به عنوان وضعیت خطا در صورت وارد کردن آرگومان غلط، اجرای برنامه در یک حلقه بی نهایت while قرار می گیرد و هیچ گاه از آن خارج نمی شود. حاصل این می شود که اگر برنامه نویس عددی اشتباه به غیر از 0 یا 2 را موقع نوشتن برنامه به عنوان شماره پورت قرار دهد، این اشتباه بدون ایجاد خطا در کامپایل باعث معطل شدن در حلقه while و هنگ کردن عملکرد برنامه می شود. شبیه همین نوع کدنویسی در بسیاری از توابع دیگر cmsis هم قابل مشاهده است.

void GPIO_ClearInt(uint8_t portNum, uint32_t bitValue)
{
if(portNum == 0)
LPC_GPIOINT->IO0IntClr = bitValue;
else if (portNum == 2)
LPC_GPIOINT->IO2IntClr = bitValue;
else
//Invalid portNum
while(1);
}

@KnowledgePlus
More from @knowledgeplus
  1. Oct 16, 2026هزینه فرصت (Opportunity cost) @KnowledgePlus
  2. Oct 15, 2026درباره بازار کار بِکر مرتبط با رفع نیازهای مدارات سوئیچینگ @KnowledgePlus
  3. Aug 19, 2026در بخش پایانی فیلم Amadeus ساختهٔ سال ۱۹۸۴ برای نمایش نبوغ موتزارت، سکانسی دربارهٔ ساخت بخ…
  4. Jul 17, 2026چکیده ای از گفتگوی انجام شده در تاریخ ۱۴۰۵/۴/۲۵ با موضوعات: ۱- بیان مشکلات فعلی ۲- اهمیت ح…
  5. Feb 11, 2026با توجه به گران شدن بیش از حد قلع و سیم لحیم، به این نکته توجه کنید که وزن قرقره ها در نمو…
  6. Dec 12, 2025بعضی از پر بازدیدترین پست های کانال از ۱۰ سال پیش تاکنون: زرنگی در دو نسخه شباهت عملکرد مغ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →