当前位置: 首页 > news >正文

建设部网站规范查询营销云产品

建设部网站规范查询,营销云产品,浏览器老是出现站长工具,wordpress文章置顶2篇一、分类 FreeRTOS的线程间通信分为这几大类 由于我还在学习中#xff0c;目前显从信号开始记录学习 二、逐块讲解 1、信号#xff08;osSignalWait osSignalSet#xff09; FreeRTOS从V8.2.0版本开始提供任务通知这个功能#xff0c;每个任务多有一个32位的通知值目前显从信号开始记录学习 二、逐块讲解 1、信号osSignalWait  osSignalSet FreeRTOS从V8.2.0版本开始提供任务通知这个功能每个任务多有一个32位的通知值任务通知比二进制信号量方式解除阻塞任务速率提升45%并且无需创建队列更加省内存。 osSignalSet和osSignalWait是CMSIS中的任务通知在文档cmsis_os.c中定义 这两个函数接口为我们正常使用中用到的 int32_t osSignalSet (osThreadId thread_id, int32_t signal)这个就是发送信号函数原型 thread_id是任务句柄任务通知的目的地任务 signal任务通知值一个事件用一个的值表示过查看源码可知0~0x80000000不包括0x80000000之间的数都可以用来当作信号0x80000000之所以不能作为信号是因为 0x80000000 被用来代表信号错误 返回值成功就返回上一次发送的信号失败就返回 0x80000000 osEvent osSignalWait (int32_t signals, uint32_t millisec)这个就是接收信号函数原型 signals就是发送函数装在的信号值 millisec超时设置 0: 不管有没有成功收到信号都立即返回osWaitForever没有收到信号就一直休眠阻塞着直到收到信号为止不会往下执行。 其它值比如 100如果没有收到信号时休眠阻塞 100ms然后计时到100ms后就执行判断有无接到通知有则执行无则返回超时返回以此类推在睡眠100ms在判断......... 返回值返回类型为 osEvent 这个结构体类型 上面的API函数接口我们讲解完了下面我们进行实际应用举例 eg: void query_task(void const * argument) {     static u8 t 0;     while(1)     {      if(t250)         osSignalSet (dgthy_tasktTaskHandle, 0x01);  //发送通知      } } void dgthy_taskt(void const * argument) {     static u8 t 0;     osEvent ret; //创建信号        while(1)     {          ret osSignalWait(0x01, 1000);         if(ret.status osEventSignal)//如果接收到通知         {                    if(ret.value.signals 0x01)//接收的通知是否为0x01             {                 printf(这里可以放上你想执行的函数\n);             }         }         else         {             printf(超时\n);         }         osDelay(100);//这个睡眠时间看你自己任务需求     } } 以上就是实际应用的举例 当然如果你有多个信号并发但是等待接收函数只有一个 osSignalSet (query_tasktTaskHandle, F_SentScrin); osSignalSet (query_tasktTaskHandle, UART1_RX_EVENT); osSignalSet (query_tasktTaskHandle, UART2_RX_EVENT); .............................. ret osSignalWait(F_SentScrin|UART1_RX_EVENT|UART2_RX_EVENT|f_Rest|flag_FONT|flag_whilet|wgFlag|in1_Flag, 1000);         if(ret.status osEventSignal)//如果接收到通知         {                    if(ret.value.signals F_SentScrin)//接收的通知为F_SentScrin             {                 //处理显示接收数据             }             if(ret.value.signals flag_FONT)//接收的通知为flag_FONT             {                //擦除外部flash             }              ................         }    发送可以多个信号接收你就可以向上面距离装载异或上多个值最终在函数执行判断就可以。 任务通知的使用限制条件 1.只能有一个任务接收通知事件。 2.接收通知的任务可以因为等待通知而进入阻塞状态但是发送通知的任务即便不能立即完成通知发送也不能进入阻塞状态。 通知的发送可以从多个任务或者多个中断中发出但是等待任务通知函数只能有一个。这个地方可能有的人会理解错误以为只能有一个等待任务通知其实这里说的是一个任务中只能有一个等待任务通知函数其他任务中还可以有等待任务通知函数 到这里信号功能作用就到此。 详细可参考这两篇大佬文章 CMSIS中的FreeRTOS第一篇——任务通知osSignalSet和osSignalWait_Amos_Lee1987的博客-CSDN博客【FreeRTOS】FreeRTOS学习笔记12— FreeRTOS的线程间通信(CMSIS_API)_51CTO博客_freertos进程间通信
http://www.hkea.cn/news/14555567/

相关文章:

  • 合肥高新区建设发展局网站通河县机场建设网站
  • 淘宝客代理网站怎么做wordpress分享后查看
  • wordpress商城插件收费采集站seo赚钱辅导班
  • 烟台小学网站建设徐州商城网站建设
  • 顺义网站制作安徽安庆
  • 网站建设合同付款方式济南做网站公司
  • 上海企业网站建设价格电子购物网站
  • 网站建设方案书简单常用的平面设计软件有哪些
  • 网站制作的前期主要是做好什么工作优化大师的三大功能
  • 网站开发面试问题营销网站四大要素
  • wordpress子目录 多站点淘宝客怎么自己做网站
  • 广告网站做动图怎么做河南省建设厅电话号码是多少
  • 1免费建站网站做网站在什么地方发帖子呢
  • 免费网站建设模版云盘网页编辑表格
  • 企业网站建设哪家便宜请seo的人帮做网站排名
  • 关键词查询网站济宁网站建设制作设计
  • 河北廊坊seo网站建设网站优化wordpress改端口
  • 辽宁建设局网站首页网站建设技术分析
  • 一般网站自己可以做播放器吗wordpress主题放在哪个文件夹
  • 创建网站得花多少钱电子商务网站建设原则
  • golang建设网站东莞网站优化软件
  • 深圳网站建设公司服务商网站的管理与维护
  • 杭州优化网站广州移动网站开发
  • dw外部网站链接怎么做net做网站
  • 电子商务网站开发要学什么哪里有服务好的网站建设
  • 许昌住房和城乡建设局网站中卫网站推广软件
  • 建设基金会网站百度查找相似图片
  • 怎样查网站和增加网站为什么自己做的网站别人打不开
  • 厦门旅游攻略湖南sem优化
  • 网站开发高级证深圳品牌网站制作多少钱