ch
Feedback
C 4 any Time

C 4 any Time

前往频道在 Telegram

آموزش زبان سی و نکات کلیدی آن @C_4_any_Time ادمین: @Alma_Electronic آموزشها به ترتیب اراعه شده لذا بهتره از ابتدای کانال مطالعه بشه ❗️انتشار اطلاعات فقط با ذکر منبع مجاز است !!!

显示更多
1 614
订阅者
无数据24 小时
无数据7
无数据30

数据加载中...

相似频道
无数据
有任何问题?请刷新页面或联系我们的客服
标签云
无数据
有任何问题?请刷新页面或联系我们的客服
进出提及
---
---
---
---
---
---
吸引订阅者
十一月 '23
十一月 '230
在0个频道中
十月 '23
+5
在0个频道中
Get PRO
九月 '23
+9
在0个频道中
Get PRO
八月 '23
+12
在0个频道中
Get PRO
七月 '23
+13
在0个频道中
Get PRO
六月 '23
+18
在0个频道中
Get PRO
五月 '23
+16
在0个频道中
Get PRO
四月 '23
+29
在0个频道中
Get PRO
三月 '23
+29
在0个频道中
Get PRO
二月 '23
+27
在0个频道中
Get PRO
一月 '23
+88
在0个频道中
Get PRO
十二月 '22
+629
在0个频道中
Get PRO
十一月 '220
在0个频道中
Get PRO
十月 '220
在0个频道中
Get PRO
九月 '220
在0个频道中
Get PRO
八月 '220
在0个频道中
Get PRO
七月 '220
在0个频道中
Get PRO
六月 '22
+1
在0个频道中
Get PRO
五月 '220
在0个频道中
Get PRO
四月 '22
+152
在0个频道中
Get PRO
三月 '220
在0个频道中
Get PRO
二月 '220
在0个频道中
Get PRO
一月 '22
+2
在0个频道中
Get PRO
十二月 '21
+1
在0个频道中
Get PRO
十一月 '210
在0个频道中
Get PRO
十月 '21
+4
在0个频道中
Get PRO
九月 '210
在0个频道中
Get PRO
八月 '21
+1
在0个频道中
Get PRO
七月 '21
+1
在0个频道中
Get PRO
六月 '21
+1
在0个频道中
Get PRO
五月 '210
在0个频道中
Get PRO
四月 '21
+4
在0个频道中
Get PRO
三月 '21
+1
在0个频道中
Get PRO
二月 '21
+2
在0个频道中
Get PRO
一月 '21
+3
在0个频道中
Get PRO
十二月 '20
+876
在0个频道中
日期
订阅者增长
提及
频道
07 十一月0
06 十一月0
05 十一月0
04 十一月0
03 十一月0
02 十一月0
01 十一月0
频道帖子
تابعی ساده و بسیار بهینه برای محاسبه رادیکال uint16_t sqrt32(uint32_t a) { uint32_t rem = 0, root = 0; for (int i = 32 / 2; i > 0; i--) { root <<= 1; rem = (rem << 2) | (a >> (32 - 2)); a <<= 2; if (root < rem) { rem -= root | 1; root += 2; } } return root >> 1; }

2
نمونه مثال و خروجی xprintf("%d", 1234); /* "1234" */ xprintf("%6d,%3d%%", -200, 5); /* " -200, 5%" */ xprintf("%-6u", 100); /* "100 " */ xprintf("%ld", 12345678); /* "12345678" */ xprintf("%llu", 0x100000000); /* "4294967296" <XF_USE_LLI> */ xprintf("%lld", -1LL); /* "-1" <XF_USE_LLI> */ xprintf("%04x", 0xA3); /* "00a3" */ xprintf("%08lX", 0x123ABC); /* "00123ABC" */ xprintf("%016b", 0x550F); /* "0101010100001111" */ xprintf("%*d", 6, 100); /* " 100" */ xprintf("%s", "abcdefg"); /* "abcdefg" */ xprintf("%5s", "abc"); /* " abc" */ xprintf("%-5s", "abc"); /* "abc " */ xprintf("%.5s", "abcdefg"); /* "abcde" */ xprintf("%-5.2s", "abcdefg"); /* "ab " */ xprintf("%c", 'a'); /* "a" */ xprintf("%12f", 10.0); /* " 10.000000" <XF_USE_FP> */ xprintf("%.4E", 123.45678); /* "1.2346E+02" <XF_USE_FP> */
597
3
معرفی توابع xprintf که یک کتابخانه ورودی/خروجی رشته ای فشرده است. این کتابخانه نوشته اقای چان بوده و برای میکروکنترلرهای کوچکی که حافظه برنامه کافی برای عملکرد printf معمولی ندارند ایده آل است. همچنین توابع xprintf را می توان با گزینه های پیکربندی برای کاهش اندازه ماژول پیکربندی کرد. حجم فلش مورد نیاز برای این کتابخانه در کرتکس M0 و در ساده ترین حالت 789 بایت و در صورت استفاده از متغیر های long long به حافظه 880 بایت و هم چینین در صورت استفاده از سویچ float حدود 1816 بایت خواهد بود یعنی به کمتر از 2 کیلو بایت فلش نیاز دارد. منبع
512
4
Fix for add AVR & ARM Toolchain v2.0.exe
550
5
EmBitz_1.11.exe
553
6
معرفی ورژن جدید ادیتور EmBitz v2.6 پشتیبانی از نسخه های مختلف ارم های شرکت های Atmel Infineon NXP PIC18 PIC32 dsPIC Nordic ST Texas ,
599
7
با توجه به اینکه ترکیب بیتی فرمت متغیر های فلوت به صورت باینری نیست لذا به راحتی نمیشه از این متغیر ها برای ارسال یا دریافت توسط یوارت یا واحد های ارتباطی متداول بایتی استفاده کرد برای این کار یکی از راحت ترین روش ها تفکیک متغیر به 4 بایت هست برای این منظور استفاده از اشاره گر ها میتواند بسیار مفید باشد این صورت که ادرس متغیر فلوت رو بعد از تبدیل به اشاره گر از نوع 8 بیت برابر متغیر 8 بیت کنیم به کد زیر توجه کنید TX_Buffer[0] = *((uint8_t *)&float_val ); TX_Buffer[1] = *((uint8_t *)&float_val + 1); TX_Buffer[2] = *((uint8_t *)&float_val + 2); TX_Buffer[3] = *((uint8_t *)&float_val + 3);
790
8
Turn Any Question to {Code}. https://www.useblackbox.io/search
724
9
یکی از قابلیت های جالب بسیار و کار بردی اما متاسفانه ناشناخته در زبان سی اشاره گر از نوع تابع هست به کد زیر توجه کنید void add(int a, int b) {     printf("Addition is %d\n", a+b); } void subtract(int a, int b) {     printf("Subtraction is %d\n", a-b); } void multiply(int a, int b) {     printf("Multiplication is %d\n", a*b); } int main() {     void (*fun_ptr_arr[])(int, int) = {add, subtract, multiply};     unsigned int ch=2, a = 15, b = 10;     (*fun_ptr_arr[ch])(a, b);     return 0; }
981
10
没有文字...
809
11
گاهی اوقات نیازه که یه اشاره گر به اشاره گر داشته باشیم برای مثال int main() {     int a = 5;     int* ptr = &a;     int** d_ptr = &ptr;     printf("Value of var = %d\n", var);     printf("Value of var using single pointer = %d\n", *ptr2);     printf("Value of var using double pointer = %d\n", **ptr1);        return 0; } خروجی تابع فوق میشه Value of var = 5 Value of var using single pointer = 5 Value of var using double pointer = 5
794
12
با توجه به اینکه تلگرام کانال هایی را که برای مدت مشخصی غیر فعال بوده اند را private کرده ادرس لینک کانال حذف شده و برای استف
با توجه به اینکه تلگرام کانال هایی را که برای مدت مشخصی غیر فعال بوده اند را private کرده ادرس لینک کانال حذف شده و برای استفاده مجدد ازش نیازمند پرداخت 320 دلار بود لذا با استفاده از پیشنهاد خوب اقای کینژاد تغییری جزیی در اسم و ادرس کانال مجددا لینک ها ویرایش شد و در اختیار شما عزیزان قرار گرفت لطفا با ارایه سوالات و پیشنهادات خود در تکمیل شدن اطلاعات کانال همراه ما باشید
1 427
13
فهرست اموزش های مخصوص ARM معرفی کامپیالر gcc معرفی ادیتور ساده و سبک embitz شروع کار با ارم و ایجاد پروژه مرتب کردن فایل ها و پوشه ها ایجاد یک فایل h یا هدر در پروژه روش دیفاین پینهای IO معرفی رجیستر های پین های IO دیتاشیت کلی میکرو کنترلر های سری stm32f103 اخرین ورژن درایور SPL یعنی STM32F10x_StdPeriph_Lib_V3.5.0 توضیحاتی در خصوص درایور SPL نوشتن تابعی برای انیشیال GPIO فعال کردن اتصال بخش های مختلف به منبع کلاک نوشتن تابع delay معرفی توابعی برای نوشتن GPIO نوشتن تابعی برای تغییر وضعیت یا Toggle پین معرفی تایمر ها نوشتن تابعی برای تنظیم کلاک میکرو شروع کار با بخش تایمر و نوشتن تابعی برای اینیشیال تایمر شروع کار با یوزارت یا ارتباط سریال بلوک دیاگرام واحد یوزارت رجیستر های یوزارت یوزر منوال مخصوص یوزارت نوشتن تابعی برای انیشیال یوزارت نوشتن تابع وقفه یوزارت
1 489
14
فهرست اموزش های مخصوص AVR معرفی کامپیالر gcc معرفی ادیتور ساده و سبک embitz اموزش نصب ادیتور embitz و تنظیمات لازم اموزش تنظیمات مخصوص تنظیمات کامپیالر gcc در ادیتور شروع کار با ادیتور embitz و کامپایلر gcc ایجاد پروژه AVR اموزش کامپایل کردن پرژه روش ایجاد فایل h یا هدر و اضافه کردن به پروژه اموزش اصول نوشتن یک فایل h یا هدر اموزش دیفاین پینها و بخش های مختلف سخت افزار شروع نوشتن یک کد ساده در فایل main اضافه کردن کتابخونه delay در پروژه های AVR کار با تایمر ها رجیستر های تایمر بلوک دیاگرام تایمر های 16 بیتی وقفه سراسری در AVR ها و اظافه کردن ماکرو های وقفه به کد نوشتن تابع وقفه تایمر
1 428
15
فهرست اموزش های مخصوص زبان C ۵ مورد از دلایل اهمیت یادگیری برنامه نویسی نکته هایی که میتونم برای بالابردن تخصص در برنامه نویسی اشاره کنم پیشینه برنامه نویسی و زبان سی برنامه نویسی ساختار یافته دستورات پیش پردازنده کلاس حافظه متغیر ها تعریف و مقدار دهی چنتا نکته در مورد سی اصل نام گذاری متغیر ها در سی عملگرها و انواع آن تبدیل متغیر ها ساختار تصميم if ساختار تصميم switch حلقه while حلقه do...while حلقه for عملگر علامت سوال ؟ تعریف متغیر ها تعریف و مقدار دهی رشته ها دستور goto دستور break دستور continue ثابت های Escape Sequences توابع استاندارد سی رشته ها در زبان سی رشته_ های چند بعدی در زبان سی تعریف و نوشتن توابع دستور Return رشته ها در ورودی توابع تابع بازگشتی یا recursion دامنه و طول عمر متغیرها مثال برای درک بشتر نوشتن توابع اشاره گرها اشاره گرها در ورودی توابع حافظه پویا در سی چند مثال در خصوص حافظه های پویا و رشته ها رشته های کاراکتری دستکاری رشته در زبان C با استفاده از توابع کتابخانه نمونه مثال های عملی در خصوص رشته های کاراکتری استراکچر یا ساختار استراکچر در استراکچر انتقال ساختار به یک تابع یونیونها دسترسی به اعضا در یونیونها فرق یونیونها و ساختارها ارسال union به یک تابع پیش پردازنده ها و ماکرو ها در سی پیش پردازنده های Conditional Compilation ماکرو های Predefined Macros ماکرو هایی برای تغییر بیتی در پورت یا متغیر ها توضیحاتی در خصوص کتابخانه اقای چان و نکات آموزشی آن نکته های اموزشی در فایل integer.h کتابخانه فت اقای چان کتابخانه xprintf اقای چان تمرین برنامه نویسی c و نمونه سوال دستور پیش پردازنده #pragma once روش نصب کامپایلر GCC و ادیتور کدبلاک نمونه سوال و تمرین برنامه نویسی چند مثال برای ایجاد هرم و الگو با اعداد و کارکتر ها تکنیک برنامه نویسی اشاره گر به تابع معرفی کامپایلر GCC به صورت انلاین استیت ماشین توضیح و نمونه کد نمونه کد های مختلفی بر مبنای اموزش های قبلی انسی سی و روند کامپایل در زبان سی ادامه نمونه کد ها معرفی لینک کامپایلر انلاین gcc فایل maikfile و کاربرد ان سوالی برای درک بیشتر اسراکچر ها و چیدمان اعضا سوالی برای اموزش دستور شرط
1 723
16
آغاز C از مبتدی تا حرفه ای نوشته ایور هورتون
1 377
17
تابع فوق برای فیلتر کردن مقدار adc یا موارد مشابه مناسب هست این فیلتر به نام MA یا Moving Average Filter شناخته میشود با این تابع به راحتی میتونید چند کانال مختلف رو فیلتر کنید ورودی تابع newValue مقدار خونده شده جدید و channel شماره کانال خروجی تابع مقدار فیلتر شده در این تابع مقدار خروجی با یه شیب بالا یا پایین میره و با هر ورودی که بهش بدید یه مقدار میتونید ازش داشته باشید نیازی به تعداد زیادی از نمونه های اندازه گرفته شده یا بافر نداره و حافظه رم کمتری اشغال میکنه توجه داشته باشید برای استفاده از این فیلتر بهتره ازش در بازه های زمانی ثابت استفاده بشه برای مثال هر 1 میلی ثانیه یک بار
821
18
uint16_t calc_filter (uint16_t newValue, uint8_t channel){ #define FILTER_LENGTH 32 #define MAX_CHANNEL 3 #define HYSTERSIS 0 static uint32_t Sum[MAX_CHANNEL]; static uint16_t Array[MAX_CHANNEL][FILTER_LENGTH]; static uint8_t Index[MAX_CHANNEL]; static uint16_t oldValue[MAX_CHANNEL]; Sum[channel] -= Array[channel][Index[channel]]; Array[channel][Index[channel]] = newValue; Sum[channel] += newValue; Index[channel]++; if (Index[channel] >= FILTER_LENGTH)Index[channel] = 0; newValue = Sum[channel] / FILTER_LENGTH; if ((newValue > (oldValue[channel] + HYSTERSIS)) || (oldValue[channel] > (newValue + HYSTERSIS))) { oldValue[channel] = newValue; } return(oldValue[channel]); }
748
19
没有文字...
923
20
کدی ساده برای تبدیل اعداد فلوت به رشته void reverse(char* str, int len){ int i = 0, j = len - 1, temp; while (i < j) { temp = str[i]; str[i] = str[j]; str[j] = temp; i++; j--; } } int itoa(int x, char str[], int d){ int i = 0; while (x) { str[i++] = (x % 10) + '0'; x = x / 10; } while (i < d) str[i++] = '0'; reverse(str, i); str[i] = '\0'; return i; } void ftoa(float n, char* res, int afterpoint){ int ipart = (int)n; float fpart = n - (float)ipart; int i = itoa(ipart, res, 1); if (afterpoint != 0) { res[i] = '.'; fpart = fpart * pow(10, afterpoint); itoa((int)fpart, res + i + 1, afterpoint); } }
1 127