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

宁波网络建站公司有哪些廊坊网站推广

宁波网络建站公司有哪些,廊坊网站推广,怎么做企业网站原型,四川建设网官网证书查询入口前言:本文参考,韦东山老师开发文档,连接放在最后。 为什么需要中断管理函数? 在FreeRtos操作系统中,需要实时响应性,也就是随时随地必须保证正常多任务的运行,如果有中断发生,因为中…

        前言:本文参考,韦东山老师开发文档,连接放在最后。

为什么需要中断管理函数?

        在FreeRtos操作系统中,需要实时响应性,也就是随时随地必须保证正常多任务的运行,如果有中断发生,因为中断的优先级是最高的,这就导致了,中断中不能有大量执行的任务函数,或者在中断中不能有大量的任务进行切换调用,保证中断的执行是一瞬间,保证RTOS的,实时响应性。否则多任务就不能并发运行

       这就导致了,在中断里面调用函数是不能有延迟等待的,和不能有更高优先级的任务进行切换的,如果有切换因为,中断函数的优先级始终是最高的,被切换的普通函数始终是执行不了的。

        同时因为中断内不能有延时函数,所以就常用函数都有中断版本,专门用在中断函数内执行的函数,这些函数没有阻塞延时时间,有参数会记录是否有更高优先级的任务发生,如果有在中断结束后,进行任务切换执行,实际执行是在中断结束之后由任务调度器完成。

        到这里,我们知道了,函数有中断版本,是为了保证中断中没有延时,同时在函数内没有函数调用,以及中断版本多出来的参数就是为了,记录是否有更高优先级的任务被调用,如果有在中断执行结束后,由任务调度器调用任务。

函数比较

        FreeRtos操作系统的 队列 信号量 事件组 软件定时器 任务通知 都有两套版本的函数,一套用来调用在普通任务上下文,一套被用在中断任务上下文,具体表格如下。

类型普通任务上下文中断任务上下文
队列(queue)xQueueSendToBackxQueueSendToBackFromISR
队列(queue)xQueueSendToFrontxQueueSendToFrontFromISR
队列(queue)xQueueReceivexQueueReceiveFromISR
队列(queue)xQueueOverwritexQueueOverwriteFromISR
队列(queue)xQueuePeekxQueuePeekFromISR
信号量(semaphore)xSemaphoreGivexSemaphoreGiveFromISR
信号量(semaphore)xSemaphoreTakexSemaphoreTakeFromISR
事件组(event group)xEventGroupSetBitsxEventGroupSetBitsFromISR
事件组(event group)xEventGroupGetBitsxEventGroupGetBitsFromISR
任务通知(task notificationxTaskNotifyGivevTaskNotifyGiveFromISR
任务通知(task notificationxTaskNotifyxTaskNotifyFromISR
软件定时器(software timer)xTimerStartxTimerStartFromISR
软件定时器(software timer)xTimerStopxTimerStopFromISR
软件定时器(software timer)xTimerResetxTimerResetFromISR
软件定时器(software timer)xTimerChangePeriodxTimerChangePeriodFromISR

        这两套函数参数区别只有,最后以为,在普通任务版本中的,最后一位参数是,如有阻塞愿意等待的时间,中断版本参数是,是否记录有更高优先级的任务发生,并在中断函数结束后是否调用

BaseType_t xQueueOverwrite(QueueHandle_t xQueue,const void * pvItemToQueue);
BaseType_t xQueueOverwriteFromISR(QueueHandle_t xQueue,const void * pvItemToQueue,BaseType_t *pxHigherPriorityTaskWoken);

xHigherPriorityTaskWoken参数

        中断函数里面,这个是最后的参数,作用是记录是否在中断的过程,中是否有更高优先级的任务被唤醒了 ,这里需要弄清楚的一点是,在中断函数执行过程中被唤醒的函数的比较对象不是中断函数,而是在中断函数之前被中断函数打断执行的普通任务函数,这两个任务相互比较优先级的大小。    

       xHigherPriorityTaskWoken这个参数最重要的是,这个参数首先有用户调用时传递给程序,但是它的具体值(pdTRUE或pdFALSE)在函数运行过程中可以由程序去修改。 

BaseType_t xHigherPriorityTaskWoken = pdFALSE;
xQueueSendFromISR(myQueue, &data, &xHigherPriorityTaskWoken);

        在上面事例程序里面,FreeRtos会检查在中断运行的过程中,是否有比中断发生前执行函数的优先级更高优先级的任务被唤醒,如有 xHigherPriorityTaskWoken 这个参数将被程序设置改变pdTRUE。

        所以当我们在ISR里面调用这些中断函数的时候只需要将 xHigherPriorityTaskWoken 这个参数设置为 pdFALSE,剩下的FreeRtos在运行的时候会自己设置,如果最后为pdTRUE就代表在中断结束后需要切换任务运行,如有依然是pdFALSE,就继续执行被中断打断的任务。

        到这里,我们知道了, xHigherPriorityTaskWoken的值虽然是通过参数手动传递的,但是在FreeRtos运行的过程中,会根据任务唤醒情况去设置 xHigherPriorityTaskWoken的值。当值被设定之后,通过调用 portYIELD_FROM_ISR() 在中断响应函数最后,来完成任务的切换。

中断的延迟处理定义

        如果在ISR中,中断函数的响应本身就是耗时的,可以使用 中断的延时处理(Deferring interrupt processing) 

·ISR :中清除中断标志位,清理,记录工作。

·任务:将更加复杂的事情放在任务重处理。

                                        欢迎指正,希望对你,有所帮助!!!

[10-1]_事件组的本质_哔哩哔哩_bilibili

http://www.yayakq.cn/news/376846/

相关文章:

  • 建筑外观设计网站站长工具 网站改版
  • ps做图 游戏下载网站有哪些东莞寮步汽车城
  • 摄影网站定位网站建设中网站需求分析的理解
  • 长春网站开发培训想学互联网运营从哪里入手
  • linux 什么做网站好深圳2024新冠最新情况
  • 网站建设公司怎么找客户怎么用壳域名做网站
  • 便利的响应式网站建设泉州网站建设轩奇网讯
  • 建材类网站建设需要的资料网页版网游
  • 惠州网站制作星锐网站建设
  • 域名备案网站建设书模板高水平的网站建设
  • 天动力网站开发南京旭光建设监理网站首页
  • 模板建站有什么优势androidstudio
  • 没有网站怎么做百度推广国家企业信用信息系统(河南)
  • 用笔记本做网站wordpress配置支付宝
  • 国外的一些网站wordpress仿百度文件
  • php网站模版互联网行业特点
  • 友情链接适用网站郑州做音响网站的公司
  • 国外服务器做网站不能访问wordpress中国可以用吗
  • jsp做网站还徐州做网站的公司哪些好
  • 做塑料哪个网站好电子商务网页制作试题及答案
  • 在微信怎样搞做微视频网站免费下载微信
  • wordpress申请滁州seo网站推广方案
  • wordpress网站类型中山响应式网站
  • 免费网站优缺点编程scratch
  • 庄河网站怎么举报做棺材佛山北京网站建设公司哪家好
  • 淮安市建设厅网站优化服务平台
  • 苏州企业名录黄页中山seo建站
  • 专业模板网站制作价格快速提升网站排名
  • 网站流量分析报告哪个购物软件最便宜
  • 河南建设人才招聘专业网站wordpress 连接信息