标题: 请教单片机框架编程 [打印本页]

作者: 不将就123    时间: 2020-3-16 18:21
标题: 请教单片机框架编程
我做了一个程序  主要功能是   pwm频率输出频率  按键改变PWM频率高低   1602显示数据    DA采集电压
整个程序我是用的模块化写的  但是执行结构是顺序执行的   现在有一个问题就是  DA采集到电压模块在程序里面多了一个10次求平均值的过程
当程序运行到这里的时候 在切换按键的时候  根本没有用  因为CPU一直在DA里面空转 只有当采集完了按键才可以勉强用一次  后来没有办法了我就去掉了这一段代码 效果会好了很多 , 随时改变数据都可以,但是测量的电压不准确了   

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


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




作者: csmyldl    时间: 2020-3-16 21:15
可以主程序循环和定时器控制节拍结合使用,保证每一个程序合理执行到
作者: wulin    时间: 2020-3-16 22:10
虽然程序构架是否合理是非常重要的问题,但楼主的问题核心不在于此。记住:不是不得已不要用阻滞型延时方式。可以用定时器给主循环设定一个节奏,比如2ms采样一次,按键也是2ms扫描一次,需要长延时的部分就用计数方式。反正一个循环不能完成的任务分多次来完成。其实单片机执行一条指令就几us,2ms可以干很多很多事。关键是要让单片机真正跑起来,千万不要原地踏步。
作者: lovexulu    时间: 2020-3-16 22:14
程序执行就是循环,为何循环中还要套小循环,只用标志计数循环次数不就有延迟,等等的作用了吗?程序框架做成只有一个主循环。
作者: 左岸的花会开    时间: 2020-3-17 10:35
用定时器做一个无延时状态机就好了,程序卡在延时函数里很浪费的,用滴答定时器写时间片也行
作者: 不将就123    时间: 2020-3-27 13:19
非常感谢  我就是一直不太理解这个    经常写的程序都 基本都用了很多延迟函数 最后发现运行越来越慢;还会导致其他功能不能正常使用




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1