|
|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
STC 单片机 完整工程文件分类
分三大类:外设功能文件、算法工具文件、程序流程结构文件
给你按做项目标准结构整理,跟你写 T12、温控、工控程序完全对上。
一、外设功能文件(底层硬件驱动)
只管硬件干活,不负责业务逻辑
- gpio.c / gpio.h IO 口初始化、高低电平
- timer.c / timer.h 定时器、中断、定时周期
- delay.c / delay.h 毫秒、微秒延时
- uart.c / uart.h 串口收发、打印调试
- adc.c / adc.h 模数采集、电压温度读取
- pwm.c / pwm.h 呼吸灯、加热 PWM、电机调速
- key.c / key.h 独立按键、矩阵按键、长按短按
- i2c.c / spi.c 通信总线(OLED、传感器)
- iap.c / eeprom.c 内部 Flash 掉电保存参数
- wdt.c 看门狗复位
二、算法 & 工具文件(计算、处理、通用函数)
只管计算、滤波、数学,不管硬件
- pid.c / pid.h 位置式 / 增量式 PID(焊台温控核心)
- filter.c / filter.h 均值滤波、滑动滤波、中值滤波(ADC 去抖动)
- math.c / math.h 限幅、取绝对值、插值、归一化
- crc.c CRC 校验(串口通信)
- string.c 数字转字符串、格式拼接
- oled.c / lcd.c 屏幕驱动 + 数字显示
三、程序流程结构文件(整个项目骨架)
管运行顺序、状态逻辑、业务流程,这就是你要的「流程结构文件」
1. main.c / main.h
程序入口总骨架
- 所有模块初始化顺序
- 大 while 死循环主流程
- 总调度:按键→采样→算法→控制→显示
2. system.c / system.h
系统初始化框架
- 系统时钟配置
- 所有外设统一初始化
- 全局变量初始化、标志位初始化
- 中断分组、IO 模式统一配置
3. task.c / task.h
任务调度文件
前后台架构、时间片轮询
- 1ms 任务、10ms 任务、100ms 任务
- 定时执行:测温、PID、扫描按键、刷新显示、休眠检测
不用全程死卡 while,按时间分片跑流程
4. menu.c / menu.h
菜单流程文件
5. setting.c / setting.h
参数配置流程
- 默认参数初始化
- 参数保存到 Flash、开机读取
- 温度默认值、PID 参数、休眠时间等
6. state.c / state.h
状态机流程文件
焊台常用 4 大状态:
待机 → 升温 → 恒温 → 休眠 → 关机
用状态机管理整个工作流程,不乱套
7. interrupt.c
中断服务汇总文件
定时器中断、串口中断、外部中断
把所有中断统一放这里,结构清晰
四、标准工程整体流程结构(从上到下)
- system.c 系统时钟 + 全部硬件初始化
- main.c 进入主循环
- task.c 按时间轮询调度各个任务
- 调用:adc 采样 → filter 滤波 → pid 计算 → pwm 输出
- menu.c 按键触发菜单跳转
- setting.c 读写保存参数
- state.c 切换工作状态
五、极简一句话区分
- 功能文件:只管硬件
- 算法文件:只管计算
- 流程结构文件:管先做什么、后做什么、什么时候做、状态怎么切
我可以给你搭一个 STC 标准空白工程目录结构,文件夹分层、每个文件作用写好,你直接照着新建工程就能用
STC 单片机 标准工程完整目录结构(直接照搬就能用)
适配 STC15/STC32/STC8,做焊台、温控、工控、按键菜单都通用,分层干净、条理清晰。
一、整体文件夹架构
Project├── App 【程序流程/业务逻辑层】├── Driver 【硬件外设驱动层】├── Algorithm 【算法数学工具层】├── Common 【通用基础层】├── User 【用户配置/参数层】└── main.c 程序入口
二、每层文件清单 + 每个文件作用
1. App 程序流程结构文件(骨架、业务、任务、状态)
- app_task.c/h 任务调度:1ms/10ms/100ms 定时轮询
- app_state.c/h 状态机:待机 / 升温 / 恒温 / 休眠 / 关机
- app_menu.c/h 菜单界面、光标、参数切换
- app_control.c/h 总控制逻辑:测温→PID→PWM 输出总流程
2. Driver 硬件功能驱动文件(底层外设)
- drv_gpio.c/h IO 初始化、高低电平
- drv_timer.c/h 定时器、定时中断
- drv_uart.c/h 串口收发、打印调试
- drv_adc.c/h ADC 采集、温度电压读取
- drv_pwm.c/h PWM 生成、占空比调节
- drv_key.c/h 按键扫描、长短按
- drv_i2c.c/h I2C 总线(OLED / 传感器)
- drv_oled.c/h OLED 屏幕驱动
- drv_eeprom.c/h 内部 Flash 参数保存
- drv_delay.c/h 延时函数
3. Algorithm 算法 & 工具文件(计算、滤波、PID)
- algo_pid.c/h 增量 / 位置式 PID(温控核心)
- algo_filter.c/h 均值、滑动、中值滤波(ADC 去噪)
- algo_math.c/h 限幅、插值、绝对值、数据换算
- algo_crc.c/h CRC 校验
- algo_string.c/h 数字转字符串、格式化
4. Common 通用基础
- common.h 全局类型定义、宏定义、常用头文件汇总
- system_init.c/h 系统总初始化:时钟 + 所有外设一键初始化
- interrupt.c/h 所有中断服务函数统一放这里
5. User 用户配置
- user_setting.c/h 默认参数、PID 参数、休眠时间、出厂设置
- user_config.h 全局宏配置:屏幕大小、温度上限、PWM 周期
三、标准程序运行流程(固定套路)
- main.c 入口
- 调用 system_init() 系统全部初始化
- 进入 while (1) 主循环
- 调用 app_task() 时间片轮询调度
- 任务里依次跑:
- 按键扫描
- ADC 测温 + 滤波
- PID 运算
- PWM 加热输出
- OLED 显示刷新
- 休眠 / 状态判断
- 参数保存读取
四、三种文件一句话区分
- Driver 驱动文件:只管硬件干活(定时器、ADC、串口)
- Algorithm 算法文件:只管数学计算(PID、滤波、换算)
- App 流程结构文件:管先做啥、后做啥、什么时候做、状态怎么切
|
打赏
-
查看全部打赏
|