单片机程序运行多任务

sshyidishui 2017-08-18 07:33:52
最近要做个测量仪器,需要采样3路ADC值并计算处被测量显示在段码LCD上,外部有5个按键,3个LED灯。单独的功能都没有问题了。但是将这几个功能合起来形成一个完整的软件,还需要考虑如何运行多任务。

3路ADC分时采样,计算出被测量。1路ADC大概100ms采样一次,并计算出被测量,另外两路ADC大概1秒采样一次。显示200ms一次。屏幕上可能有多个闪烁图标。在设置界面也有闪烁,同时还可能在测量。

现在想到的一个方法是 使用一个硬件定时器产生多个软件定时器,然后在主程序中依次执行软件定时器定时到的程序。这样搞越来越像RTOS了。暂时还不想上RTOS.
哪位指点下?
...全文
551 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianxj001 2017-08-19
  • 打赏
  • 举报
回复
通常,我用单片机执行你这样类型的多任务,采用多个定时器,定时器溢出中断启动ADC采集,处理,然后存储到专用缓存。 在专门的显示函数,统一进行多个结果的显示处理。如果只有数量不多的定时器资源,那么就用最高速度处理要求的AD为定时器基本定时单位(或者他们的最大公倍数),然后在定时中断进行计数比较等等,实现各个不同时序的AD操作。计数选择时序也可以在主函数的循环内查询,然后分步处理。显示函数则采用另外一个定时器按照必须的刷新时序触发。
dceacho 2017-08-19
  • 打赏
  • 举报
回复
按键,LED灯控制放,显示放定时器中 主程序中 for(i=0;i<5;i++) { adc1(); adc1(); adc2(); } adc3();

27,509

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧