找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 912|回复: 5
打印 上一主题 下一主题
收起左侧

请教单片机框架编程

[复制链接]
跳转到指定楼层
楼主
ID:254747 发表于 2020-3-16 18:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我做了一个程序  主要功能是   pwm频率输出频率  按键改变PWM频率高低   1602显示数据    DA采集电压
整个程序我是用的模块化写的  但是执行结构是顺序执行的   现在有一个问题就是  DA采集到电压模块在程序里面多了一个10次求平均值的过程
当程序运行到这里的时候 在切换按键的时候  根本没有用  因为CPU一直在DA里面空转 只有当采集完了按键才可以勉强用一次  后来没有办法了我就去掉了这一段代码 效果会好了很多 , 随时改变数据都可以,但是测量的电压不准确了   

而且我整个程序里面用了很多延迟函数


请问我改成框架结构的   应该怎么处理这样的问题啊   是需要一个定时器 定义一个节拍吗   



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2020-3-16 21:15 | 只看该作者
可以主程序循环和定时器控制节拍结合使用,保证每一个程序合理执行到
回复

使用道具 举报

板凳
ID:213173 发表于 2020-3-16 22:10 | 只看该作者
虽然程序构架是否合理是非常重要的问题,但楼主的问题核心不在于此。记住:不是不得已不要用阻滞型延时方式。可以用定时器给主循环设定一个节奏,比如2ms采样一次,按键也是2ms扫描一次,需要长延时的部分就用计数方式。反正一个循环不能完成的任务分多次来完成。其实单片机执行一条指令就几us,2ms可以干很多很多事。关键是要让单片机真正跑起来,千万不要原地踏步。
回复

使用道具 举报

地板
ID:687694 发表于 2020-3-16 22:14 | 只看该作者
程序执行就是循环,为何循环中还要套小循环,只用标志计数循环次数不就有延迟,等等的作用了吗?程序框架做成只有一个主循环。
回复

使用道具 举报

5#
ID:707815 发表于 2020-3-17 10:35 | 只看该作者
用定时器做一个无延时状态机就好了,程序卡在延时函数里很浪费的,用滴答定时器写时间片也行
回复

使用道具 举报

6#
ID:254747 发表于 2020-3-27 13:19 | 只看该作者
非常感谢  我就是一直不太理解这个    经常写的程序都 基本都用了很多延迟函数 最后发现运行越来越慢;还会导致其他功能不能正常使用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表