T12白光烙铁固件源码(天山V1.2 51单片机问题
主函数如下
#include "config.h"
void main(void)
{
//系统初始化
Sys_Init();
while(1)
{
//显示主界面
Sys_Monitor();这叫:
空闲休眠(IDLE 模式)
它只休眠:
但这些全部正常工作:
- 定时器中断
- PWM 加热
- ADC 采集
- IIC 通信
- 外部中断
- 编码器扫描
一句话:
CPU 睡了,但是所有外设都在跑!
休眠后怎么唤醒?
中断一来,自动唤醒!
你的程序里:
- 定时器 1ms 中断 → 唤醒
- 编码器中断 → 唤醒
- 按键中断 → 唤醒
唤醒后继续执行:
plaintext
Sys_Monitor(); // 显示ParaSet(); // 按键
所以你看到的现象是:
明明休眠了,屏幕还在刷新,加热还在控制,温度还在跑!
终极总结(你一定要记住)
- IRON = 加热 IO,在 config.h 里
- PID = IronTempControl()
- main 只管显示 + 按键
- 真正加热、温控、计时 = 定时器中断后台跑
- 休眠 = CPU 休息,外设继续跑,所以程序不会停
你现在想让我继续做什么?
- 帮你找 IRON 引脚
- 帮你看 PID 代码
- 帮你画 流程图
- 帮你移植到 STM32
//编码器设定参数,
ParaSet();
}
}************************************************************
65 * 函数名 : timer1_int
66 * 功能说明 : 定时器1中断,主要控制
67 *
68 * 输入参数 : 无
69 * 输出参数 : 无
70 *
71 * 修改记录 : 新增函数,第一次编辑
72 * 历次作者 : 王志浩
73 * 日期 : 2017-10-18
74 *************************************************************/
75 void timer1_int (void) interrupt TIMER1_VECTOR
76 {
77 1 static unsigned int IronUseCounter[2]={0,0};
78 1 static unsigned int ShutDownCounter = 0;
79 1 static unsigned char Sleep_Old = 0;
80 1 static unsigned char PWM_counter = 0;
81 1 static unsigned char SetTempCounter = 0;
82 1
83 1
84 1 //烙铁PWM生成
85 1 PWM_counter=Timer.mSec%100;
86 1 if((PWM_counter<PWM.Duty) && PWM.Run)
87 1 IRON = 1;
88 1 else
89 1 IRON = 0;
90 1
91 1 //1ms处理部分
92 1 Timer.mSec++; //定时器0分段计数器自加
93 1 EC11_Capture(); //捕捉EC11信息
94 1
95 1 //10ms处理部分
96 1 if(Timer.mSec%10 == 0)
97 1 {
98 2 if(IronUse_Status.Handle || IronUse_Status.Coder)//烙铁或编码器用了,那要看看现在是不是休眠什么的状态了
主函数只有这几个,没有看出来怎么加热,能解释下吗,下面的文件多不用,怎么工作的,谁来整理解释下,经过学习,

|