FreeRTOS 任务通知模拟消息邮箱
2024-09-17 18:42:23
举例
void task1_task(void *pvParameters)
{
u8 key;
BaseType_t err;
while(1)
{
key=KEY_Scan(0); //扫描按键
if(key)
{
err=xTaskNotify((TaskHandle_t )Keyprocess_Handler, //接收任务通知的任务句柄
(uint32_t )key, //任务通知值
(eNotifyAction )eSetValueWithOverwrite); //覆写的方式发送任务通知
if(err==pdFAIL)
{
printf("任务通知发送失败\r\n");
}
}
vTaskDelay(10); //延时10ms,也就是10个时钟节拍
}
}
void Keyprocess_task(void *pvParameters)
{
uint32_t NotifyValue;
BaseType_t err;
while(1)
{
err=xTaskNotifyWait((uint32_t )0x00, //进入函数的时候不清除任务bit
(uint32_t )ULONG_MAX, //退出函数的时候清除所有的bit
(uint32_t* )&NotifyValue, //保存任务通知值
(TickType_t )portMAX_DELAY); //阻塞时间
if(err==pdTRUE) //获取任务通知成功
{
switch((u8)NotifyValue)
{
case WKUP_PRES:
printf("WKUP_PRES here\r\n");
break;
case KEY2_PRES:
printf("KEY2_PRES here\r\n");
break;
case KEY0_PRES:
printf("KEY0_PRES here\r\n");
break;
}
}
}
}
实验现象
最新文章
- Nim编码风格
- block(闭包)
- 各种python环境的问题
- anti-pattern - Hard coding
- js 数组 var arr=[] 的用法总结
- Nginx的Upload上传模块
- JVM GC知识回顾
- 用Python浅析股票数据
- Java后缀数组-求sa数组
- IT轮子系列(三)——如何给返回类型添加注释——Swagger的使用(二)
- MyBatis缓存策略
- ORA-12557协议适配器不可加载
- Centos7.4安装配置haproxy和Keepalived补充内容
- fang99-三号线与四号线新盘
- docker 常用操作
- Linux 下上手 STC89C52RC
- IIS6 301重定向和IIS7 301重定向
- web前端面试小结(1)
- k最邻近算法——使用kNN进行手写识别
- hdu 3599(最短路+最大流)