پاسخ : lpc1768
بچه ها من اومدم خطوط رو برا خودم معنی کنم
اصن یه وضی شد
#define ها رو که نمیشناسم ولی اینا تعابیر منه:
#define LED_NUM 8
اینجا میخواد اعلام کنه اقا ما میخوایم 8 تا ال ای دی روشن کنیم نه؟
خط بعدش میگه که کدوم پین ها رو میخواد روشن کنه،البته تو یک ارایه ریخته که بعدا با تغییر اندیس هر پینی که میخوادو روشن کنه
1UL رو چطوری این دستور معنی میده برام خیلی سواله! :cry:
volatile unsigned long SysTickCnt;این شمارنده تعداد خاموش روشن شدناس؟
void SysTick_Handler (void از این شمارنده بالایی برای دونه دونه زیاد شدنش تو تابع استفاده کرده که با تابع زیادش کنه که کارش تمیز دربیاد
من خیلی تو تعریف تابع delay حیرت زده ام اخه یه جورایی نمیدونم چرا باید کار کنه
این 2 خطو ببینید:
systickcnt = SysTickCnt;
while ((SysTickCnt - systickcnt) < tick);
خب وقتی این 2تا پشت سر هم اجرا میشن SysTickCnt - systickcnt تفاضلشون همیشه صفره!و این یک while همیشه برقرار میشه!
SysTick_Config(SystemCoreClock/1000 - 1);اینو از همون دیفاین ها یا هدر فایلا اورده دیگه نه؟تو کامنت جلوشم که کاراش معلومه
GPIO_SetDir(2, 0x0000007C, 1); اینم شکل دیگه ای از در حالت output قرار دادن یک پورته که بخوایم بنویسیم به ابن شکل هم میشه نوشت:
LPC_GPIO2->FIODIR = 0x0000007c;
جالبه که برای یک کار 2تا دستور گذاشتن،کلا ادما به فکری بودنا
GPIO_ClearValueاین تابع هم برای خاموش کردنه نه؟جالبه اینم یه دستور معادل داره ها :smile:
GPIO_SetValueاینم برا روشن کردن ال ای دیه دیگه
for (;
هم همون کار while(1) رو میکنه
حال میکنم اینهمه دستورات یکسان یافتم :biggrin:
num += dir;
if (num == LED_NUM) { dir = -1; num = LED_NUM-1; }
else if (num < 0) { dir = 1; num = 0; }
اینم دونه دونه ال ای دی ها رو سرشماری میکنه؟ :eek:که چی بشه؟ :eek:
LED_NUMچطوری کار میکنه؟طریقه کار کردنش تو هدرفایلاس؟
if (num < 3)اینم که خیلی شیکو مجلسی میخواد بگه 3تا اندیس اول مال پورت 1 و بقیه مال پورت 2 هستن
#ifdef DEBUG
void check_failed(uint8_t *file, uint32_t line)
{
while(1);
}
#endif
این بودو نبودش به چه درد میخوره؟فکر کنم چون تعریفش نکرده پس تو همون هدرفایلاس که وقتی برنامه اشتباه نوشته شده باشه بهمون میگه
define ها رو لطفا توضیح بدید و همچنین هدرفایلایی که گرفته مخصوص چه کارایین؟ :sad:
بچه ها من اومدم خطوط رو برا خودم معنی کنم
اصن یه وضی شد
#define ها رو که نمیشناسم ولی اینا تعابیر منه:
#define LED_NUM 8
اینجا میخواد اعلام کنه اقا ما میخوایم 8 تا ال ای دی روشن کنیم نه؟
خط بعدش میگه که کدوم پین ها رو میخواد روشن کنه،البته تو یک ارایه ریخته که بعدا با تغییر اندیس هر پینی که میخوادو روشن کنه
1UL رو چطوری این دستور معنی میده برام خیلی سواله! :cry:
volatile unsigned long SysTickCnt;این شمارنده تعداد خاموش روشن شدناس؟
void SysTick_Handler (void از این شمارنده بالایی برای دونه دونه زیاد شدنش تو تابع استفاده کرده که با تابع زیادش کنه که کارش تمیز دربیاد
من خیلی تو تعریف تابع delay حیرت زده ام اخه یه جورایی نمیدونم چرا باید کار کنه
این 2 خطو ببینید:
systickcnt = SysTickCnt;
while ((SysTickCnt - systickcnt) < tick);
خب وقتی این 2تا پشت سر هم اجرا میشن SysTickCnt - systickcnt تفاضلشون همیشه صفره!و این یک while همیشه برقرار میشه!

SysTick_Config(SystemCoreClock/1000 - 1);اینو از همون دیفاین ها یا هدر فایلا اورده دیگه نه؟تو کامنت جلوشم که کاراش معلومه
GPIO_SetDir(2, 0x0000007C, 1); اینم شکل دیگه ای از در حالت output قرار دادن یک پورته که بخوایم بنویسیم به ابن شکل هم میشه نوشت:
LPC_GPIO2->FIODIR = 0x0000007c;
جالبه که برای یک کار 2تا دستور گذاشتن،کلا ادما به فکری بودنا

GPIO_ClearValueاین تابع هم برای خاموش کردنه نه؟جالبه اینم یه دستور معادل داره ها :smile:
GPIO_SetValueاینم برا روشن کردن ال ای دیه دیگه
for (;

حال میکنم اینهمه دستورات یکسان یافتم :biggrin:
num += dir;
if (num == LED_NUM) { dir = -1; num = LED_NUM-1; }
else if (num < 0) { dir = 1; num = 0; }
اینم دونه دونه ال ای دی ها رو سرشماری میکنه؟ :eek:که چی بشه؟ :eek:
LED_NUMچطوری کار میکنه؟طریقه کار کردنش تو هدرفایلاس؟
if (num < 3)اینم که خیلی شیکو مجلسی میخواد بگه 3تا اندیس اول مال پورت 1 و بقیه مال پورت 2 هستن
#ifdef DEBUG
void check_failed(uint8_t *file, uint32_t line)
{
while(1);
}
#endif
این بودو نبودش به چه درد میخوره؟فکر کنم چون تعریفش نکرده پس تو همون هدرفایلاس که وقتی برنامه اشتباه نوشته شده باشه بهمون میگه
define ها رو لطفا توضیح بدید و همچنین هدرفایلایی که گرفته مخصوص چه کارایین؟ :sad:
دیدگاه