|
本帖最后由 eagle_avr 于 2019-5-24 14:09 编辑
在看正点原子的《STM32F407 FreeRTOS开发手册_V1.1》的任务通知部分时,用任务通知模拟计数型信号量,代码中一个任务扫描按键,发送任务通知;另一个任务获取该通知。
作者说在获取通知的任务里,获取到的任务通知值要减一才是当前任务的任务通知值。为何?以下是代码
- //释放计数型信号量任务函数
- void SemapGive_task(void *pvParameters)
- {
- u8 key,i=0;
- while(1)
- {
- key=KEY_Scan(0); //扫描按键
- if(SemapTakeTask_Handler!=NULL)
- {
- switch(key)
- {
- case WKUP_PRES:
- xTaskNotifyGive(SemapTakeTask_Handler);//发送任务通知 (1)
- break;
- }
- }
- i++;
- if(i==50)
- {
- i=0;
- LED0=!LED0;
- }
- vTaskDelay(10); //延时 10ms,也就是 10 个时钟节拍
- }
- }
- //获取计数型信号量任务函数
- void SemapTake_task(void *pvParameters)
- {
- u8 num;
- uint32_t NotifyValue;
- while(1)
- {
- NotifyValue=ulTaskNotifyTake(pdFALSE,portMAX_DELAY);//获取任务通知 (2)
- num++;
- LCD_ShowxNum(166,111,NotifyValue-1,3,16,0); //显示当前任务通知值 (3)
- LCD_Fill(6,131,233,313,lcd_discolor[num%14]); //刷屏
- LED1=!LED1;
- vTaskDelay(1000); //延时 1s,也就是 1000 个时钟节拍
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|