freertos STM32 添加互斥锁
·

打开freertos.c 70行
可以看到定义的互斥锁
使用:
extern osMutexId myMutexSDHandle; //先声明
/* USER CODE END Header_StartTask07 */
void StartTask07(void const * argument)
{
/* USER CODE BEGIN StartTask07 */
/* Infinite loop */
osStatus ret; // 用于检查获取互斥量的状态
for(;;)
{
// osWaitForever 表示一直等待直到获取到锁
ret = osMutexWait(myMutexSDHandle, osWaitForever);
if (ret == osOK)
{
HAL_UART_Transmit(&huart1, (uint8_t*)"okkk", 4, 1000);
osMutexRelease(myMutexSDHandle);
}
else
{
// 如果获取失败(理论上 osWaitForever 不会失败,除非系统错误)
// 可以在这里添加错误处理
}
osDelay(20);
}
/* USER CODE END StartTask07 */
}
在执行阻塞式HAL_UART_Transmit就不会被抢占了
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)