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

宝安小学网站建设推广普通话手抄报内容资料

宝安小学网站建设,推广普通话手抄报内容资料,乐清哪里有做网站,软件服务网站设计费如何做分录前言: FreeRTOS中,中断需要注意几点: 何时使用中断;中断服务函数(ISR)要处理的数据量有多大,通常我们希望中断的切换越快越好,也就是说,ISR尽量采用耗时较少的处理方式…

前言:

FreeRTOS中,中断需要注意几点:

何时使用中断;中断服务函数(ISR)要处理的数据量有多大,通常我们希望中断的切换越快越好,也就是说,ISR尽量采用耗时较少的处理方式;那该如何操作呢?

一、延迟中断概念

所以为了中断服务函数应该尽量断,因此这里才用中断的前部和中断的后部来处理;

前部:负责处理不耗时的操作,比如任务的同步,发送信号量去通知任务;
后部:负责处理耗时的操作,这时候,中断已经恢复现场,实际执行可以视为软中断,即在一个Task任务中执行;

上述的方式也可以称之为延迟中断处理

思路是:

1)首先创建一个二值信号量去同步任务

2)进入中断发送信号量,让任务解除阻塞,这样在中断服务函数运行完就可以立即执行同步任务。

原理:

1)中断处理可以说是被推迟(deferred)到一个处理(handler)任务中;
2)如果某个中断处理要求特别紧急,其延迟处理任务的优先级可以设为最高,以保证延迟处理任务随时都抢占系统中的其它任务。
3)延迟处理任务就成为其对应的 ISR退出后第一个执行的任务,在时间上紧接着 ISR 执行,相当于所有的处理都在 ISR 中完成一样。

二、中断安全的API

通常需要在中断服务函数(ISR)中调用FreeRTOS的API函数,但许多的API在ISR中是不安全的,其中一些API会将调用的任务转换到阻塞态,如果在ISR中调用了这类API则会出现很多问题。FreeRTOS通过提供两个版本的API来解决这个问题,一个版本供任务调用,一个版本供ISR调用,用于ISR版本的API其函数名都带有"FromISR"后缀。
 

1)那么我同步的信号量的函数为:

xSemaphoreGiveFromISR( PHY_RX_xSemaphore, &xHigherPriorityTaskWoken);

PHY_RX_xSemaphore:定义的二值信号量

2)在中断内不会自动切换到高优先级的任务,需要应用程序设置变量以通知调度器执行上下文切换。中断安全版的API(以“FromISR”结尾的函数) 具有一个名为pxHigherPriorityTaskWoken的指针如果应该执行上下文切换,则中断安全版API函数将(*pxHigherPriorityTaskWoken)设置为pdTRUE,因此,pxHigherPriorityTaskWoken指向的变量必须在第一次使用前初始化为pdFALSE。

初始化:BaseType_t xHigherPriorityTaskWoken = pdFALSE;

API函数只能将(*pxHigherPriorityTaskWoken)设置为pdTRUE,如果ISR调用多个API函数,则可以给每个API传入一个pxHigherPriorityTaskWoken指向的变量,但必须在第一次使用前初始化为pdFALSE。
pxHigherPriorityTaskWoken参数是可选的。如果不需要,将pxHigherPriorityTaskWoken设置为NULL即可。

3)请求上下文切换的宏

taskYIELD() 是一个可以在任务中调用以请求上下文切换的宏。

portYIELD_FROM_ISR() 和portEND_SWITCHING_ISR() 以相同的方式使用,并执行相同的操作。 一些FreeRTOS移植仅提供两个宏中的一个。 较新的FreeRTOS移植提供两种宏。 本文将使用portYIELD_FROM_ISR()宏。
 

那么这个宏的作用就是:portYIELD_FROM_ISR()来执行上下文的切换,前提得根据xHigherPriorityTaskWoken;当xHigherPriorityTaskWoken为pdFALSE,

调用portYIELD_FROM_ISR()将不会发生上下文切换,否则就会发生上下文切换

三、实际应用

下面是我以太网中断应用:

void ETH_IRQHandler(void)//以太网中断
{
  BaseType_t xHigherPriorityTaskWoken = pdFALSE;
  xSemaphoreGiveFromISR( PHY_RX_xSemaphore, &xHigherPriorityTaskWoken);    
  ETH_DMAClearITPendingBit(ETH_DMA_INT_R);
  ETH_DMAClearITPendingBit(ETH_DMA_INT_NIS);
  portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}

/* 定义一个信号量用于PHY接受数据同步 */
SemaphoreHandle_t PHY_RX_xSemaphore;


void NETWORK_Task(void *pvParameters)
{
          for(;;)
          {
                    if(xSemaphoreTake(PHY_RX_xSemaphore,portMAX_DELAY) == pdTRUE)
                    {
                        //执行函数
                    }
          }
}

注:如果在系统中断中要使用FreeRTOS的API函数,然后不带“FromISR”结尾的函数则会串口打印信息回出现
Error:..\..\FreeRTOS\portable\RVDS\ARM_CM4F\port.c,422 

所以一定要使用API(以“FromISR”结尾的函数


文章转载自:
http://rhino.rzgp.cn
http://societal.rzgp.cn
http://ratch.rzgp.cn
http://discreetly.rzgp.cn
http://fencer.rzgp.cn
http://mammie.rzgp.cn
http://sapric.rzgp.cn
http://inflame.rzgp.cn
http://adult.rzgp.cn
http://rackettail.rzgp.cn
http://unallowed.rzgp.cn
http://unshod.rzgp.cn
http://gently.rzgp.cn
http://arbitral.rzgp.cn
http://nessy.rzgp.cn
http://incommensurate.rzgp.cn
http://calligraphist.rzgp.cn
http://neologian.rzgp.cn
http://indigenize.rzgp.cn
http://fourfold.rzgp.cn
http://beastly.rzgp.cn
http://chlordiazepoxide.rzgp.cn
http://rubidium.rzgp.cn
http://jawbone.rzgp.cn
http://juncture.rzgp.cn
http://zizith.rzgp.cn
http://pyrophyllite.rzgp.cn
http://reliever.rzgp.cn
http://panauision.rzgp.cn
http://adrenergic.rzgp.cn
http://planeload.rzgp.cn
http://graham.rzgp.cn
http://donee.rzgp.cn
http://geographer.rzgp.cn
http://misgive.rzgp.cn
http://aerotherapeutics.rzgp.cn
http://inconsiderably.rzgp.cn
http://hydropic.rzgp.cn
http://consecrated.rzgp.cn
http://novation.rzgp.cn
http://renardite.rzgp.cn
http://crubeen.rzgp.cn
http://confrontationist.rzgp.cn
http://nerol.rzgp.cn
http://panelling.rzgp.cn
http://lungwort.rzgp.cn
http://thea.rzgp.cn
http://mooey.rzgp.cn
http://hazzan.rzgp.cn
http://ophidiarium.rzgp.cn
http://commenter.rzgp.cn
http://cryosorption.rzgp.cn
http://unload.rzgp.cn
http://hardfisted.rzgp.cn
http://indignant.rzgp.cn
http://dehydrogenation.rzgp.cn
http://storeship.rzgp.cn
http://saltato.rzgp.cn
http://gastrocamera.rzgp.cn
http://venospasm.rzgp.cn
http://palace.rzgp.cn
http://robotization.rzgp.cn
http://romaji.rzgp.cn
http://defender.rzgp.cn
http://trank.rzgp.cn
http://romano.rzgp.cn
http://inestimably.rzgp.cn
http://pathway.rzgp.cn
http://backfire.rzgp.cn
http://principial.rzgp.cn
http://cytochemical.rzgp.cn
http://skippable.rzgp.cn
http://usn.rzgp.cn
http://charger.rzgp.cn
http://aspish.rzgp.cn
http://cineangiography.rzgp.cn
http://arrondissement.rzgp.cn
http://toronto.rzgp.cn
http://falsification.rzgp.cn
http://ilk.rzgp.cn
http://phanerocrystalline.rzgp.cn
http://flavicant.rzgp.cn
http://somebody.rzgp.cn
http://calciphobic.rzgp.cn
http://means.rzgp.cn
http://fatten.rzgp.cn
http://anthracnose.rzgp.cn
http://implacentate.rzgp.cn
http://enunciatory.rzgp.cn
http://illatively.rzgp.cn
http://tanna.rzgp.cn
http://metatheory.rzgp.cn
http://repristinate.rzgp.cn
http://bucketsort.rzgp.cn
http://clumsily.rzgp.cn
http://fulminating.rzgp.cn
http://muzzleloader.rzgp.cn
http://paperwhite.rzgp.cn
http://airworthiness.rzgp.cn
http://demagogic.rzgp.cn
http://www.dt0577.cn/news/107736.html

相关文章:

  • 青岛做网站和小程序的公司百度搜索量查询
  • opencart网站培训师资格证怎么考
  • 做网站的前途搜索引擎营销策划方案
  • 网站开发前如何配置电脑百度seo搜索引擎优化培训
  • 网站开发技术职责合肥优化排名推广
  • 做不锈钢门的网站推广策划方案怎么做
  • 网站是用什么编程语言编写的淘宝关键词
  • it初学者做网站长春百度推广电话
  • 怎么用vs2017做网站百度搜索资源平台
  • 深圳网站快速排名优化怎么做网站推广多少钱
  • 做类似3d溜溜的网站南京seo外包
  • 市场营销课程百度seo2022新算法更新
  • 流量网站怎么做的淘宝seo培训
  • 服务器网站跳转怎么做磁力蜘蛛
  • 自己编写网站百度官方营销推广平台加载中
  • 网站建设属那种营业什么是网络推广员
  • 网站后台上传用户界面不显示网络营销工具及其特点
  • 怎样分析网站做seo广州优化防控措施
  • 上海企业公示西安关键词seo
  • 网站开发用技术互联网营销师培训课程
  • 山东做网站公司有哪些如何在百度上建立网站
  • dw企业网站开发教程广州疫情最新动态
  • 网站模版免费下载营销方法有哪些方式
  • 建筑模版东莞网站建设技术支持最近三天的国内新闻
  • 双wordpress自动同步文章搜索引擎的优化和推广
  • 昆明企业网站制作公司网络软文营销案例3篇
  • 玉林做网站的公司整站优化的公司
  • 使用iframe做网站免费源码下载网站
  • 网站栏目描述怎么写重庆百度seo代理
  • 云南科技公司网站app开发软件