|
|
STC 單片機(jī) 完整工程文件分類
分三大類:外設(shè)功能文件、算法工具文件、程序流程結(jié)構(gòu)文件
給你按做項目標(biāo)準(zhǔn)結(jié)構(gòu)整理,跟你寫 T12、溫控、工控程序完全對上。
一、外設(shè)功能文件(底層硬件驅(qū)動)
只管硬件干活,不負(fù)責(zé)業(yè)務(wù)邏輯
- gpio.c / gpio.h IO 口初始化、高低電平
- timer.c / timer.h 定時器、中斷、定時周期
- delay.c / delay.h 毫秒、微秒延時
- uart.c / uart.h 串口收發(fā)、打印調(diào)試
- adc.c / adc.h 模數(shù)采集、電壓溫度讀取
- pwm.c / pwm.h 呼吸燈、加熱 PWM、電機(jī)調(diào)速
- key.c / key.h 獨立按鍵、矩陣按鍵、長按短按
- i2c.c / spi.c 通信總線(OLED、傳感器)
- iap.c / eeprom.c 內(nèi)部 Flash 掉電保存參數(shù)
- wdt.c 看門狗復(fù)位
二、算法 & 工具文件(計算、處理、通用函數(shù))
只管計算、濾波、數(shù)學(xué),不管硬件
- pid.c / pid.h 位置式 / 增量式 PID(焊臺溫控核心)
- filter.c / filter.h 均值濾波、滑動濾波、中值濾波(ADC 去抖動)
- math.c / math.h 限幅、取絕對值、插值、歸一化
- crc.c CRC 校驗(串口通信)
- string.c 數(shù)字轉(zhuǎn)字符串、格式拼接
- oled.c / lcd.c 屏幕驅(qū)動 + 數(shù)字顯示
三、程序流程結(jié)構(gòu)文件(整個項目骨架)
管運行順序、狀態(tài)邏輯、業(yè)務(wù)流程,這就是你要的「流程結(jié)構(gòu)文件」
1. main.c / main.h
程序入口總骨架
- 所有模塊初始化順序
- 大 while 死循環(huán)主流程
- 總調(diào)度:按鍵→采樣→算法→控制→顯示
2. system.c / system.h
系統(tǒng)初始化框架
- 系統(tǒng)時鐘配置
- 所有外設(shè)統(tǒng)一初始化
- 全局變量初始化、標(biāo)志位初始化
- 中斷分組、IO 模式統(tǒng)一配置
3. task.c / task.h
任務(wù)調(diào)度文件
前后臺架構(gòu)、時間片輪詢
- 1ms 任務(wù)、10ms 任務(wù)、100ms 任務(wù)
- 定時執(zhí)行:測溫、PID、掃描按鍵、刷新顯示、休眠檢測
不用全程死卡 while,按時間分片跑流程
4. menu.c / menu.h
菜單流程文件
- 界面切換、參數(shù)加減、光標(biāo)移動
- 菜單狀態(tài)機(jī)邏輯
5. setting.c / setting.h
參數(shù)配置流程
- 默認(rèn)參數(shù)初始化
- 參數(shù)保存到 Flash、開機(jī)讀取
- 溫度默認(rèn)值、PID 參數(shù)、休眠時間等
6. state.c / state.h
狀態(tài)機(jī)流程文件
焊臺常用 4 大狀態(tài):
待機(jī) → 升溫 → 恒溫 → 休眠 → 關(guān)機(jī)
用狀態(tài)機(jī)管理整個工作流程,不亂套
7. interrupt.c
中斷服務(wù)匯總文件
定時器中斷、串口中斷、外部中斷
把所有中斷統(tǒng)一放這里,結(jié)構(gòu)清晰
四、標(biāo)準(zhǔn)工程整體流程結(jié)構(gòu)(從上到下)
- system.c 系統(tǒng)時鐘 + 全部硬件初始化
- main.c 進(jìn)入主循環(huán)
- task.c 按時間輪詢調(diào)度各個任務(wù)
- 調(diào)用:adc 采樣 → filter 濾波 → pid 計算 → pwm 輸出
- menu.c 按鍵觸發(fā)菜單跳轉(zhuǎn)
- setting.c 讀寫保存參數(shù)
- state.c 切換工作狀態(tài)
五、極簡一句話區(qū)分
- 功能文件:只管硬件
- 算法文件:只管計算
- 流程結(jié)構(gòu)文件:管先做什么、后做什么、什么時候做、狀態(tài)怎么切
我可以給你搭一個 STC 標(biāo)準(zhǔn)空白工程目錄結(jié)構(gòu),文件夾分層、每個文件作用寫好,你直接照著新建工程就能用
STC 單片機(jī) 標(biāo)準(zhǔn)工程完整目錄結(jié)構(gòu)(直接照搬就能用)
適配 STC15/STC32/STC8,做焊臺、溫控、工控、按鍵菜單都通用,分層干凈、條理清晰。
一、整體文件夾架構(gòu)
Project├── App 【程序流程/業(yè)務(wù)邏輯層】├── Driver 【硬件外設(shè)驅(qū)動層】├── Algorithm 【算法數(shù)學(xué)工具層】├── Common 【通用基礎(chǔ)層】├── User 【用戶配置/參數(shù)層】└── main.c 程序入口
二、每層文件清單 + 每個文件作用
1. App 程序流程結(jié)構(gòu)文件(骨架、業(yè)務(wù)、任務(wù)、狀態(tài))
- app_task.c/h 任務(wù)調(diào)度:1ms/10ms/100ms 定時輪詢
- app_state.c/h 狀態(tài)機(jī):待機(jī) / 升溫 / 恒溫 / 休眠 / 關(guān)機(jī)
- app_menu.c/h 菜單界面、光標(biāo)、參數(shù)切換
- app_control.c/h 總控制邏輯:測溫→PID→PWM 輸出總流程
2. Driver 硬件功能驅(qū)動文件(底層外設(shè))
- drv_gpio.c/h IO 初始化、高低電平
- drv_timer.c/h 定時器、定時中斷
- drv_uart.c/h 串口收發(fā)、打印調(diào)試
- drv_adc.c/h ADC 采集、溫度電壓讀取
- drv_pwm.c/h PWM 生成、占空比調(diào)節(jié)
- drv_key.c/h 按鍵掃描、長短按
- drv_i2c.c/h I2C 總線(OLED / 傳感器)
- drv_oled.c/h OLED 屏幕驅(qū)動
- drv_eeprom.c/h 內(nèi)部 Flash 參數(shù)保存
- drv_delay.c/h 延時函數(shù)
3. Algorithm 算法 & 工具文件(計算、濾波、PID)
- algo_pid.c/h 增量 / 位置式 PID(溫控核心)
- algo_filter.c/h 均值、滑動、中值濾波(ADC 去噪)
- algo_math.c/h 限幅、插值、絕對值、數(shù)據(jù)換算
- algo_crc.c/h CRC 校驗
- algo_string.c/h 數(shù)字轉(zhuǎn)字符串、格式化
4. Common 通用基礎(chǔ)
- common.h 全局類型定義、宏定義、常用頭文件匯總
- system_init.c/h 系統(tǒng)總初始化:時鐘 + 所有外設(shè)一鍵初始化
- interrupt.c/h 所有中斷服務(wù)函數(shù)統(tǒng)一放這里
5. User 用戶配置
- user_setting.c/h 默認(rèn)參數(shù)、PID 參數(shù)、休眠時間、出廠設(shè)置
- user_config.h 全局宏配置:屏幕大小、溫度上限、PWM 周期
三、標(biāo)準(zhǔn)程序運行流程(固定套路)
- main.c 入口
- 調(diào)用 system_init() 系統(tǒng)全部初始化
- 進(jìn)入 while (1) 主循環(huán)
- 調(diào)用 app_task() 時間片輪詢調(diào)度
- 任務(wù)里依次跑:
- 按鍵掃描
- ADC 測溫 + 濾波
- PID 運算
- PWM 加熱輸出
- OLED 顯示刷新
- 休眠 / 狀態(tài)判斷
- 參數(shù)保存讀取
四、三種文件一句話區(qū)分
- Driver 驅(qū)動文件:只管硬件干活(定時器、ADC、串口)
- Algorithm 算法文件:只管數(shù)學(xué)計算(PID、濾波、換算)
- App 流程結(jié)構(gòu)文件:管先做啥、后做啥、什么時候做、狀態(tài)怎么切
|
評分
-
查看全部評分
|