کاربردهای اشاره گر در زبان C میکروکنترلرها شامل موارد مختلفی است که مهمترین آنها «ارسال اشاره گر به تابع» و «اشاره گر به تابع» است. در این نوشته ابتدا آنها را به اختصار شرح داده سپس در مورد اهمیت کاربرد اشاره گر در میکروکنترلر توضیح می دهیم.
ویدئوی 1 – اشاره گر در زبان C میکروکنترلرها – مهمترین کاربردها
ارسال اشاره گر به تابع در زبان C
یکی از کاربردهای اشاره گر در C، «ارسال اشاره گر به تابع» یا ورودی تابع به صورت اشاره گر است به این معنی که اشاره گر به عنوان پارامتر تابع برای نگهداری آدرس آرگومان های ارسال شده در طول فراخوانی تابع استفاده می شود. در این کاربرد اشاره گر در برنامه نویسی C، وقتی به جای متغیر، یک اشاره گر را به عنوان آرگومان ارسال می کنیم، به جای مقدار، آدرس متغیر ارسال می شود. در ارسال اشاره گر به تابع، با استفاده از دسترسی به محتوای اشاره گر از طریق آدرس آن، می توان مقدار آن را خواند یا تغییر داد.
HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);
HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart);
HAL_StatusTypeDef HAL_LIN_Init(HUART_HandleTypeDef *huart, unit32_t BreakDetectLength);
HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, unit8_t Address, unit32_t WakeUpMethod);
HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart);
void HAL_UART_MspInit(UART_HandleTypeDef *huart);
Void HAL_UART_MspDeInit(UART_HandleTypeDef *huart);
اشاره گر به تابع در زبان C
یکی دیگر از کاربردهای اشاره گر در زبان C، «اشاره گر به تابع» است. اشاره گر به تابع اشاره گری ست که به یک تابع اشاره می کند. بر خلاف اشاره به یک داده که توسط اشاره گر انجام می شود، اشاره گر به تابع، به یک کد قابل اجرا که در حافظه وجود دارد، اشاره می کند. با اشاره گر به تابع می توان تابعی که به آن اشاره شده است را فراخوانی کرد و آرگومان هایی را مانند فراخوانی یک تابع معمولی ارسال کرد. چنین فراخوانی همچنین به عنوان فراخوانی غیر مستقیم شناخته می شود، چرا که تابع به طور غیرمستقیم از طریق یک متغیر فراخوانی می شود به جای اینکه به طور مستقیم از طریق یک شناسه یا آدرس ثابت، فراخوانی شود.
void (* TxHalfCpltCallback)(struct__UART_HandleTypeDef *huart);
void (* TxCpltCallback)(Struct__UART_HandleTypeDef *huart);
void (* RxHalfCpltCallback)(struct__UART_HandleTypeDef *huart);
void (* RxCpltCallback)(struct__UART_HandleTypeDef *huart);
void (*ErrorCallback)(struct__UART_HandleTypeDef *huart);
void (*AbortCpltCallback)(struct__UART_HandleTypeDef *huart);
void (*AbortTransmitCpltCallback)(struct__UART_HandleTypeDef *huart);
void (*AbortRecieveCpltCallback)(struct__UART_HandleTypeDef *huart);
void (*WakeupCallback)(struct__UART_HandleTypeDef *huart);
void (*RxEventCallback)(struct__UART_HandleTypeDef *huart, unit16_t Pos);
void (*MspInitCallback)(struct__UART_HandleTypeDef *huart);
void (*MspDeInitCallback)(struct__UART_HandleTypeDef *huart);
کاربردهای اشاره گر در زبان C میکروکنترلرها
دو کاربرد اشاره گر در زبان C که در بالا توضیح داده شدند، یعنی «ارسال اشاره گر به تابع» و «اشاره گر به تابع»، مهمترین کاربردهای اشاره گر در برنامه نویسی میکروکنترلرها هستند. این دو مورد در پلتفرم های مختلفی مثل پلتفرم HAL و پلتفرم یوبرد بسیار مورد استفاده قرار می گیرند. با ارسال اشاره گر به تابع می توان آرایه ها، رشته ها و استراکچرها را به صورت اشاره گر به توابع ارسال کرد و در متن توابع از آنها استفاده کرد. با کاربرد اشاره گر به تابع نیز می توان آدرس توابع مختلف را در اشاره گرها قرار داد و با استفاده از آدرس، آنها را فراخوانی کرد. کاربردهای مذکور، مهمترین کاربردهای اشاره گر در دنیای میکروکنترلرها هستند که در این نوشته آنها را معرفی کردیم و هرکدام را به اختصار شرح دادیم.
0 دیدگاه