FreeRTOS使用注意
注意指针赋值
uint8_t A;
uint8_t B;
uint8_t C;
uint8_t D;
if ( xTaskNotifyWait((uint32_t)0x00,(uint32_t)0xFFFFFFFF,(uint32_t *)&A,(TickType_t)portMAX_DELAY) == pdTRUE )
{ //等待 按键
// Menu_Main_Refresh(); //进入菜单程序
}
在这段程序中个,A本来是uint8_t变量,由于(uint32_t *)&A,这个操作,是将指针告诉了xTaskNotifyWait函数,并且重新转换为32位变量,
xTaskNotifyWait的第二个参数=0xFFFFFFFF,代表该函数执行完后,会将(uint32_t *)&A 指向的32位的数据全部复位为0,导致变量,A/B/C/D全部变为0.