نوشته اصلی توسط
mzarkoob
سلام
آن قسمت از کد که ایراد دارید قرار دهید تا دوستانی در صورتی که مواجه شده اند بتوانند پاسخ دهند.
void Main_Function(void const * argument)
{
/* USER CODE BEGIN Main_Function */
/* Infinite loop */
for(;;)
{
Modify();
}
/* USER CODE END Main_Function */
}
bool Modify(void)
{
for(;;)
{
if(HAL_GPIO_ReadPin(DSW_Display_GPIO_Port,DSW_Disp lay_Pin)==GPIO_PIN_RESET)return 0;
else return 1;
}
}
دوست عزیز مشکل رو تا حدودی فهمیدم ولی راه حل رو نمیدونم برنامه بالا همون قسمتی هست که قفل میشه
زمانی که در یک task از یک function که خودش دارای حلقه بی نهایت هست قصد خروجی گرفتن دارم(به دلایلی ناچارم از حلقه infinite استفاده کنم) برنامه وارد HardFault_Handler میشه که داخل این handler هم یه حلقه بینهایت هست که برنامه قفل میشه وزمانی که قصد گرفتن خروجی ندارم یا برنامه رو بدون rtos به کار میبرم برنامه کارش رو انجام میده.با حذف حلقه بینهایت داخل function هم مشکل گرفتن خروجی حل میشه ولی همون طور که گفتم ناچارم از حلقه بینهایت استفاده کنم