金牌会员
- 积分
- 1027
- 金钱
- 1027
- 注册时间
- 2021-2-4
- 在线时间
- 146 小时
|
10金钱
在学习RTOS的信号量 写了个信号量的小实验 但是如果两个任务优先级相同的话就不会执行信号量获取任务,将获取的任务优先级提高一级就好了
按照我的理解 释放任务中 按键按下 释放成功后 执行到 osDelay(20)
当前任务进入了等待后就应该可以执行信号量获取任务了
- void Start_Receive_Task(void *argument)
- {
- osStatus_t Temp = osOK;
- for (;;)
- {
- Temp = osSemaphoreAcquire(Binary_Sem01Handle, osWaitForever); // 获取二值信号量 一直等待
- if (Temp == osOK)
- {
- printf("Binary_Sem01Handle二值信号量获取成功\r\n");
- }
- }
- }
- void Start_Transmit_Task(void *argument)
- {
- osStatus_t Temp = osOK;
- Temp = Temp;
- for (;;)
- {
- if (BSP_KEY_Scan(KEY0) == SET)
- {
- Temp = osSemaphoreRelease(Binary_Sem01Handle); // 给出二值信号量
- if (Temp == osOK)
- {
- printf("Binary_Sem01Handle二值信号量释放成功\r\n");
- }
- else
- {
- printf("Binary_Sem01Handle二值信号量释放失败\r\n");
- }
- }
- osDelay(20);
- }
- }
复制代码
|
|