»
(008)CubeIDE实现USB外设*
(018)C99 的指针*
(019)C99 只有值赋值,没有move*
(022)POSIX线程库pthread的同步锁*
(023)POSIX线程库pthread的多线程*
(027)C99标准库中的计时与等待 *
(028)C语言中的高精度计算库GMP *
(029)C语言中的Web服务*
(030)C语言中的字符转码ICU*
(031)从几个方面显然C语言比C++效率高*
🕹️(024)FreeRTOS信号量
FreeRTOS中的信号量:Semaphore
定义信号量:SemaphoreHandle_t sem;
创建二值信号量:sem = xSemaphoreCreateBinary();
创建计数信号量:sem = xSemaphoreCreateCounting(10, 0);//最大10,初始0
信号量加一:xSemaphoreGive(sem);
信号量减一:xSemaphoreTake(sem, portMAX_DELAY);//一直等待信号量
从ChatGPT得到的等待信号量失败的例子:
if (xSemaphoreTake(xSemaphore, pdMS_TO_TICKS(1000)) == pdFAIL) {
// 超过1秒没有获取到信号量
}
切记:别用mutex