历史上的今天
返回首页

历史上的今天

今天是:2024年09月25日(星期三)

正在发生

2019年09月25日 | stm32 Ctext-M3内核最简单的多任务RTOS

2019-09-25 来源:eefocus

RTOS 实时操作系统,我做的是一个多任务的操作系统,可以同时运行多个任务,我这里设置的最大任务数是32个,


估计跑30多个任务的嵌入式设备很少吧,32个任务够用了。


OS我把它叫做HesOS,主要功能如下,比较简单。


1--实现多任务调度


2--实现任务调度锁


3--实现临界区保护


4--实现读取cpu使用率(这个功能比较重要的)


5--实现us延时(用于模拟如IIC总线模拟)


对于一般的嵌入式应用有这些功能,差不多够用了。


移植HesOS也非常简单,不会像其它的OS一样比较庞大,修改的地方也比较多,使用起来也复杂。


HesOS不管是移植和使用都是非常简单的,类似于PC的线程使用。


主函数初始化:系统一共跑了10个任务。

部分任务定义:

打印cpu使用量任务:

不能在所有任务里串口打印,因为串口打印非常的占用cpu,除非使用dma传输。


说一下移植,只需要实现以下代码


_uint32 fac_us;

//SysTick定时器

void set_systick(_uint32 ms)

{

fac_us=SystemCoreClock/1000000; //不论是否使用OS,fac_us都需要使用

SysTick->LOAD = ms * SystemCoreClock/1000-1;

NVIC_SetPriority(SysTick_IRQn,(1<<__NVIC_PRIO_BITS)-1);

SysTick->VAL = 0;

SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk|

SysTick_CTRL_TICKINT_Msk|

SysTick_CTRL_ENABLE_Msk;

}

 

/*延时us

这里裁剪的原子哥的

*/

void delay_us(_uint32 nus)

{

_uint32 ticks;

_uint32 told,tnow,tcnt=0;

_uint32 reload=SysTick->LOAD; //LOAD的值      

ticks=nus*fac_us; //需要的节拍数 

told=SysTick->VAL;        //刚进入时的计数器值

while(1)

{

tnow=SysTick->VAL;

if(tnow!=told)

{     

if(tnow else tcnt+=reload-tnow+told;     

told=tnow;

if(tcnt>=ticks)break; //时间超过/等于要延迟的时间,则退出.

}  

};     

 

//滴答中断必须调用以下代码,是关于任务调度的

void SysTick_Handler()

{

if(now_task!=0) //如果当前任务不为空则执行任务调度

{

//任务调度

tran_delay();

}

}

把工程下的HesOS.lib加入工程,HesOS系统文件只有这3个

推荐阅读

史海拾趣

FutureWafer公司的发展小趣事

对于冷热饮水机电路及家用电器电路,网友可能提出多种问题。以下是一些可能的问题及详细回答:

一、冷热饮水机电路相关问题

  1. 冷热饮水机的工作原理是什么?

    回答:冷热饮水机的工作原理主要分为加热和制冷两部分。加热部分通过电加热元件(如电炉丝)对水进行加热,当水温达到设定温度时,温控器自动切断电源,进入保温状态。制冷部分则通常利用半导体制冷技术,通过半导体制冷片对冷水进行降温,同时散热风扇帮助散热,以保持冷水的温度。

  2. 冷热饮水机为何会出现不加热的故障?

    回答:冷热饮水机不加热的故障可能由多种原因引起,包括但不限于:

    • 加热元件(如电炉丝)损坏或烧毁。
    • 温控器故障,导致无法正确感知水温或无法切断电源。
    • 电源线路问题,如插头松动、保险丝熔断等。
    • 加热控制电路故障,如继电器、微处理器等元件损坏。
  3. 冷热饮水机制冷效果不佳怎么办?

    回答:如果冷热饮水机制冷效果不佳,可以尝试以下解决方法:

    • 检查半导体制冷片和散热风扇是否工作正常,如有损坏需更换。
    • 清理饮水机内部的灰尘和杂物,确保空气流通顺畅。
    • 检查制冷控制电路是否有问题,如温控器、继电器等元件是否工作正常。
    • 如果以上方法均无效,可能是制冷剂泄漏或制冷系统其他部件故障,需请专业人员维修。
  4. 如何判断冷热饮水机的电路是否损坏?

    回答:判断冷热饮水机的电路是否损坏,可以通过以下步骤进行:

    • 检查电源插头和插座是否接触良好,电源是否正常。
    • 使用万用表等工具检查电路中的保险丝、继电器、微处理器等元件是否损坏。
    • 观察饮水机的指示灯和显示屏是否正常显示,以判断控制电路是否工作正常。
    • 如果以上检查均正常,但饮水机仍无法正常工作,可能是电路中存在隐性故障或需要更专业的检测手段。

二、家用电器电路相关问题

  1. 家用电器电路的常见故障有哪些?

    回答:家用电器电路的常见故障包括但不限于:

    • 电源故障,如插头松动、保险丝熔断等。
    • 控制电路故障,如遥控器失灵、控制面板按键无反应等。
    • 电机或压缩机故障,如电机不转、压缩机不制冷等。
    • 传感器故障,如温度传感器失灵导致温度控制不准确。
    • 电路板损坏,如电路板上的元件烧毁或短路。
  2. 如何预防家用电器电路故障?

    回答:预防家用电器电路故障可以从以下几个方面入手:

    • 定期清洁家用电器,避免灰尘和杂物积累导致散热不良或短路。
    • 使用合格的电源线和插座,避免使用劣质产品导致电路故障。
    • 注意家用电器的使用环境,避免潮湿、高温等恶劣环境对电路造成损害。
    • 不要超负荷使用家用电器,避免长时间连续工作导致电路过热或损坏。
    • 定期检查家用电器的电路和元件是否完好,如有问题及时维修或更换。
  3. 家用电器电路维修需要注意哪些事项?

    回答:家用电器电路维修需要注意以下事项:

    • 在维修前务必切断电源,避免触电危险。
    • 使用合适的工具和设备进行维修,避免损坏其他部件或造成更大的故障。
    • 在维修过程中要仔细检查电路和元件的损坏情况,避免遗漏或误判。
    • 对于不熟悉或复杂的电路故障,应请专业人员进行维修。
    • 维修完成后要进行测试,确保家用电器能够正常工作并符合安全要求。
Calmos Systems Inc公司的发展小趣事

随着电子行业的快速发展,Calmos Systems Inc公司意识到技术创新是企业发展的核心动力。因此,公司加大了研发投入,引进了一批高水平的技术人才,建立了完善的研发体系。经过多次试验和失败,公司成功开发出了一款具有颠覆性的新技术,这项技术在行业内引起了广泛关注。凭借这一技术创新,公司在市场上获得了竞争优势,实现了快速发展。

Hendon Semiconductors公司的发展小趣事

随着全球化进程的加速和国际贸易的不断发展,Hendon Semiconductors积极实施全球化战略,不断拓展国际市场。公司加强与国际客户的合作与交流,了解他们的需求和期望,并根据市场变化调整产品结构和市场策略。同时,Hendon Semiconductors还积极参与国际展会和技术交流活动,展示其最新的技术和产品成果,提升品牌知名度和影响力。通过一系列有效的市场拓展措施和全球化战略的实施,Hendon Semiconductors在国际市场上取得了显著的成绩和突破。

意普(ESPE)公司的发展小趣事

作为一家有社会责任感的企业,意普(ESPE)公司始终关注环保和可持续发展。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还积极参与社会公益活动,为社会做出了积极贡献。这些举措不仅提升了公司的社会形象,也为企业的长期发展奠定了良好的社会基础。

DATEL Inc公司的发展小趣事

随着技术的不断进步,DATEL Inc.的数据采集产品逐渐在军事领域找到了用武之地。公司接到一项为军方开发高精度数据采集系统的订单。经过深入研究和反复测试,DATEL Inc.成功交付了一套满足军方严苛要求的数据采集系统,为军方提供了准确、可靠的数据支持。这一突破不仅为DATEL Inc.赢得了军方的高度认可,也进一步扩大了公司在军事领域的影响力。

Beckhoff Automation GmbH公司的发展小趣事

在环保日益受到重视的今天,BCD Semi公司积极响应国家环保政策,将环保理念融入公司的生产和经营中。公司采用环保材料和工艺,减少生产过程中的污染排放,提高资源利用效率。同时,BCD Semi还加强了对员工的环保培训和教育,提高员工的环保意识,共同推动公司的可持续发展。

问答坊 | AI 解惑

LCD取模问题——菜鸟

请教下各位大虾,本人正学习LCD,遇到汉字取模的问题。 比如汉字“请”字,在书上取模写的为: 0x20,0x22,0xEC,0x00,0x20,0x22,0xAA,0xAA, 0xAA,0xBF,0xAA,0xAA,0xEB,0xA2,0x20,0x00, 0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x0A, 0x0A,0x0A,0x4 ...…

查看全部问答>

信号调理电路设计

关于信号调理电路设计的资料…

查看全部问答>

GSM手机定位技术

摘要 文章提出了GSM手机定位技术的重要性,并对TOA、E-OTD和A-GPS3种GsM手机定位技术解决方案进行分析和比较。 关键词 GSM 定位业务 到达时间 增强测量时间差 GPS辅助 在我国,随着GSM移动通信网的迅速发展,手机成为人们通信的重要工具之一, ...…

查看全部问答>

诚聘vxWorks开发人员

职位:中科院某所工程师 职责:(以下各项优先级从高到低,即你的能力以能胜任前面职责为优)   1 vxworks裁剪   2 BSP PowerPC系列开发   3 串口、网络驱动开发   4 多任务应用编程   5 ...…

查看全部问答>

有几个问题这几天老被困扰,也许问得比较幼稚,但还请知道的人停下来,帮解惑一下....

在还一个还没有OS的裸机上,我们用光盘安装系统过程中或者用其他的类似在光盘上的硬盘分区软件进行操作时, 可以用键盘来输入。 1.我的意思是键盘的驱动程序也被固化在BIOS上,还是在有输入时,软件上的实现每次都调用BIOS中断? 2.接1所继续的 ...…

查看全部问答>

提供H.264/H.263/MPEG4/MPEG2/MPEG1视频解码器

在200MHz的ARM9开发板上测得: H.264 QCIF 60fps MPEG4 CIF 60fps H.263 CIF 70fps MPEG2 CIF 75fps MPEG1 CIF 80fps 有SDK源代码提供,欢迎到 http://www.cyansoft.com.cn/product.htm 下载评测。…

查看全部问答>

学习wince嵌入式开发的步骤

新手,期待大家指点!比如看什么书,具体学什么等!期待中......…

查看全部问答>

困惑困惑,绝对困惑

本人前几天在使用PC时,遇到绝对难题,如下描述: 1)运行时,出现“0xXXXXXXXX”内存出错(这我就郁闷了,从没在我机器上出现过) 2)机器自动重启,问题出现 3)不能正常进入Windows,进入磁盘检查,可是问题是即使是磁盘checking   &nb ...…

查看全部问答>

为什么我的WinCE4.2中,夏令时修改后,不起作用啊?

进入CE后,点击右下角的Date/Time properties后,选中Automatically adjust clock for daylight saving后,点击Apply后,为什么一点反应都没有啊?在XP上选择同样的时区后,应用夏令时,时间却有改变啊!…

查看全部问答>