历史上的今天

今天是:2024年08月31日(星期六)

2018年08月31日 | 基于stm32的简单多任务切换设计

发布者:自由探索 来源: eefocus关键字:stm32  多任务切换 手机看文章 扫描二维码
随时随地手机看文章

系统数据:

1)当前的PID

2)所有的进程总数PAMOUNT

 

//多任务系统的初始化

1.  设置MSP值

2.  设置临时的PSP值(因为这段实际上只在启动定时器之前有效)

3.  设置CONTROL[1]=1(设置双堆栈),马上会自动切换到PSP上

4.  设置PID=0,设置PAMOUNT=0

5.  设置为进程信息表起始地址到PLIST(注意进程信息表是向上生长的)

6.  设置为进程堆栈分配的起始地址到PSTACK(堆栈是向下生长的)

//调用AddTask添加任务

1.      写入配置信息到任务表中(任务起始地址,堆栈地址(首次进行分配)xPSR等等)

a)        至于输入参数,就存放在任务的堆栈中

//启动任务切换

1.  设置SysTick定时器的详细配置(定时间,开中断)

2.  启动定时器

//进程的切换过程

1.      当中断触发时,硬件会按照下表自动进行寄存器的入栈(如果当响应异常时,当前的代码正在使用PSP,则压入PSP,即使用线程堆栈;否则压入MSP,使用主堆栈。一旦进入了服务例程,就将一直使用主堆栈),通常Systick中断都是在PSP的情况下发生的,所以数据压入PSP中。



2.      入栈完毕,将堆栈切换到MSP,开始执行SysTick服务程序:

a)        将当前的堆栈切换为MSP

b)        取得进程堆栈指针,将堆栈指针备份到PID备份区域

c)        将R4到R11存储到PID对应的程序堆栈区域

d)        开始执行程序计算下一个PID=PID+1>PAMOUNT?1: PID+1;

e)        读取下一个PID进程堆栈指针,并将堆栈中的备份恢复到到R4到R11寄存器中

f)         将下一个进程PID的堆栈地址(弹出r4-r11后的地址)写到psp中

g)        进行中断返回,同时这样会触发中断返回的硬件过程,硬件会将堆栈切换为PSP并将PSP的内容恢复到相应寄存器中

3.      出栈完毕,硬件自动清除NVIC寄存器

4.      现场恢复完毕,继续执行任务

 

//任务的退出

1.      在写入进程信息的时候,已经把lr寄存器的值设置成为了ExitTask函数的地址,所以,当函数退出之后,会自动执行收尾。

 

 

 

补充资料:

1.      关于堆栈

a)        堆栈是向下生长的

b)        堆栈指针总是指向最后被压入堆栈的数据

c)        只有在CONTROL[1]=1时,才会使用双堆栈

d)        因为 C M 3 使用的是向下生长的满栈,所以 MSP 的初始值必须是堆栈内存的末地址加1 。
举例来说,如果你的堆栈区域在 0x20007C00 ‐ 0x20007FFF 之间,那么 MSP 的初始值就必须是0 x 20008000。

e)        在handler模式下CONTROL[1]不可以写入1,但是可以读取PSP的值

f)         堆栈的地址指针会和4对齐,例如:向sp写入0x20006001或者0x20006002或者0x20006003时,会自动变成0x20006000,而写入0x20006004就是直接写入0x20006004

g)        堆栈总是指向最后一个元素的,当写入四个字节的字时,会先指针减去4,再进行入栈。当堆栈指针为sp=0x20006004时,写入一个字  0x12345678时,会在0x20006000字节、0x20006001字节、0x20006002字节、0x20006003字节分别写入0x78、0x56、0x34、0x12。要想执行类似的操作可以使用存储指令(例如str)将数据存到0x20006000单元,会达到相同的效果


关键字:stm32  多任务切换 引用地址:基于stm32的简单多任务切换设计

上一篇:STM32学习之:定时器 软件计时
下一篇:STM32实验1:定时器中断同时产生两路不同频率的信号

推荐阅读

Charlie Miller是黑客界的一名传奇。出现在他介绍页面中的,是一连串的黑客大奖。让Charlie Miller真正名声大噪的是他对汽车系统的攻破。2015年,Charlie Miller和搭档Chris Valasek还在LOActive和Twitter就职,黑客工作只是他们兴趣爱好。就在当年的黑客大会DEFCON上,两人合作成功入侵JEEP操作系统,实现了通过网络远距离攻击和控制汽车。这一举动直...
2019年8月18日,《中共中央国务院关于支持深圳建设中国特色社会主义先行示范区的意见》(以下简称《意见》)正式发布。《意见》指出,支持深圳建设5G、人工智能、生命信息与生物医药实验室等重大创新载体,探索建设国际科技信息中心和全新机制的医学科学院。此外,还将加快构建现代产业体系。未来几年将是中国智慧医疗建设飞速发展的时期,在新医改方案的...
外媒 91mobiles 从爆料人 Ishan Agarwal 处获悉,小米将很快在国内推出小米电视音箱家庭影院版。除此之外,小米还将很快在中国推出 Redmi 9A 的新内存和存储版本。  Agarwal 表示,小米电视音箱家庭影院版是一款全新的产品,将在中国首次亮相,除此之外目前关于该音箱的消息还不是很多。  至于 Redmi 9A,小米计划在中国推出 4GB...
  耐压测试仪又叫电气绝缘强度试验仪或叫介质强度测试仪。将一规定交流或直流高压施加在电器带电部分和非带电部分(一般为外壳)之间以检查电器的绝缘材料所能承受耐压能力的试验。  电气设备在长期工作中,不仅要承受规定的工作电压的作用,还要承受操作过程中引起短时间的高于额定工作电压的过电压作用(过电压值可能会高于额定工作电压值的好几倍)...

史海拾趣

问答坊 | AI 解惑

干扰I2C总线的几种情况

新型彩电很多机型已经采用IIC总线控制方式。IC总线受干扰,就会产生许多无法用常规分析硬件损坏的故障解释。所以,如遇到综合性的故障问题,或无法理解的问题,可试着用IC总线受干扰的方式来进行分析。 1. 电源输出的直流电压滤波不良,散射的 ...…

查看全部问答∨

投票啦!模拟电路DIY

为了促进大家对模拟电路的学习和提升,模拟板块准备开始一系列的DIY活动,以上的的5个题目供大家来选择,可以选择多个,也可以选择一个,根据大家的投票会决定先开始某一个的DIY,当然如果大家觉得有必要,我们也可以一个一个得来DIY。大家还有什么 ...…

查看全部问答∨

亚马逊统计显示:电子书销售达纸质书1.8倍

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 据外电报道,美国亚马逊公司近日宣布,该公司6月适用于电子书阅读器KINDLE的电子书销量达到了纸质图书的1.8倍。 亚马逊没有透露具体销量。4~6月的电子图书销量为纸质图书的1.4倍。今年上半年 ...…

查看全部问答∨

vmware上运行vxworks,按网上说的做,>make CPU="PENTIUM" tool="gnu" ln97xe 提示make 不是内部或外部命令

而在path里,已经添加了make的位置了啊:\\Tornado\\target\\config\\82559? 把makefile ln97xEnd.c拷贝到\\Tornado\\target\\config\\82559文件夹下,make,又提示vxrm不是。。。…

查看全部问答∨

如何添加自己的网卡驱动 ?

WINCE4.2没有自带我的目标板子上的网卡驱动,如果我具备这个网卡的驱动C源代码,那么我如何把这个驱动加载到WINCE PB中去? 谢谢…

查看全部问答∨

AT指令是基于什么开发出来的

就是我想通过3G的网络发送自己的控制命令,但貌似AT指令不能满足,哪位高手解答一下啊!…

查看全部问答∨

microchip提供的ZIGBEE2006协议不完全,大家不要上当!

microchip提供的ZIGBEE2006协议不完全,大家不要上当!我现在好麻烦啊,不行只能该用TI的了。当时因为他们提供源码,没想到后面的麻烦不小。…

查看全部问答∨

请教2407中的乘法问题!急。谢谢!

向老师请教: 在2407中实现卷积的计算,用到了乘法器,指令是MAC。 其中相乘的两个数据一个是小数0.4830,一个是整数34 在汇编语言编写时,我将小数写成Q8格式:4830*256/10000;整数写成0022h。不理解的是,两个数是怎么相乘的?是不是DSP会将0 ...…

查看全部问答∨

MSP430学习计划

我是理工科大三学习生,对手持仪器方面比较感兴趣,故借贵论坛申请一块板子、、、…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved