0x6A Logbook

程式開發
程式開發

GPIO 中斷(外部中斷)完整教學:從原理到 ESP32/STM32 實作

什麼是中斷? 剛開始寫韌體的時候,我以為中斷只是「一個通知」。後來才發現,它其實是整顆 MCU 的即時性骨幹 —— 沒有它,你的系統只能一直問「變了嗎?變了嗎?」。 正式一點說:GPIO 中斷(GPIO Interrupt)是讓微控制器即時響應外部事件的核心機制。你不用讓 CPU 一直輪詢(Polling)腳位的電位變化,事件發生時由硬體主動通知 CPU,CPU 再暫停手邊的工作去處理。 原文那個比喻我一直覺得很好用:你在看書(主程式在跑),有人敲門(GPIO 觸發),你放下書去開門(執行 ISR),開完門回來繼續...

2026 年 6 月 4 日 0條評論 748點熱度 0人點贊 shi6a 閱讀全文
程式開發

Deep Sleep(深度睡眠)完整教學:從原理到 STM32/ESP32 實作

前言 如果有人問我「電池供電的 IoT 裝置,最關鍵的一行程式碼是什麼」,我大概會回答 esp_deep_sleep_start()。這行看起來什麼都沒做的函式,決定了你的感測器節點是一天就沒電,還是能撐好幾個月。 數字攤開來很有感:一顆 2000 mAh 的電池,讓裝置 24/7 全速跑,大概一天就見底;但只要讓它在 99% 的時間裡睡覺,續航力就是幾個月、甚至幾年的事。同一顆電池、同一塊電路,差別只在「什麼時候醒、醒多久」。 這篇我打算從硬體架構講起,把 ESP32 與 STM32 的多級低功耗模式拆開來看,再...

2026 年 6 月 2 日 0條評論 765點熱度 0人點贊 shi6a 閱讀全文
程式開發

BLE(藍牙低功耗)通訊協定完整教學:從原理到 ESP32 實作

前言 先講結論:如果你在做物聯網,遲早會撞上 BLE。從小米手環、智慧門鎖、感測器信標到醫療設備,背後幾乎都是同一套東西 —— BLE(藍牙低功耗,Bluetooth Low Energy),它用極低的功耗就把可靠的資料交換做完了。 而我手上的 ESP32 剛好內建雙模藍牙(Classic + BLE),支援藍牙 5.0 標準。老實說,這大概是它最被低估的一塊能力,很多人的 ESP32 買回來只拿它跑 WiFi。 這篇我照自己的學習順序寫:先看協定棧的架構,再拆廣播/掃描/連線這三個機制,接著進到 GATT 服務模...

2026 年 6 月 1 日 0條評論 956點熱度 0人點贊 shi6a 閱讀全文
程式開發

硬體定時器(Timer)完整教學:從計數原理到 STM32/ESP32 PWM 與輸入捕捉實作

前言:先說為什麼你該把 delay() 戒掉 大部分人寫 MCU 的第一支程式都是 delay(1000) 讓 LED 每秒閃一次。問題是那一秒裡 CPU 什麼都不能做 —— 按鍵不理你、序列埠不回應、通訊直接斷。 硬體定時器就是來解決這件事的:它是一個由硬體時鐘驅動的計數器,時間到了自己發中斷或輸出波形,CPU 從頭到尾不用等。 它有三個讓人離不開的特性: 精準:由專屬硬體電路驅動,不受 CPU 負載影響 無阻塞:計數期間 CPU 可以做任何事 多功能:同一個計數器可同時產生中斷、PWM、捕捉外部訊號 核心只有三...

2026 年 5 月 31 日 0條評論 534點熱度 0人點贊 shi6a 閱讀全文
程式開發

Watchdog Timer(看門狗計時器)完整教學:從原理到 STM32/ESP32 實作

前言:為什麼量產產品幾乎都有一顆看門狗 在實驗室裡,程式當掉最糟的結果就是「重開就好」。但只要這個裝置被裝在客戶的機房、變電箱或屋頂上,一次死機就代表一次客訴、一趟出差、甚至一次賠償。 看門狗計時器(Watchdog Timer)就是為了這種情境存在的:它是一個獨立於主程式之外的硬體計時器,會在最壞的情況下把系統重新拉起來。 它的設計哲學很粗暴,但非常有效 —— 因為它假設「軟體終究會壞」,而硬體不會陪著一起壞。 看門狗的邏輯只有三步 正常運作時你甚至感覺不到它的存在:主迴圈結尾餵一次狗,計數器就一直被歸零。真正有...

2026 年 5 月 30 日 0條評論 813點熱度 0人點贊 shi6a 閱讀全文
程式開發

DMA 傳輸完全解析:從架構到實作,STM32/ESP32 的 Direct Memory Access 教學

先講一件我踩過的事:我以前寫 UART 收資料,用中斷一個 byte 一個 byte 接,接完再自己塞進緩衝。等到要同時跑 ADC 連續取樣跟通訊,CPU 就開始喘了 —— 明明時脈沒變、程式也沒寫錯,就是資料一多就掉資料。 問題不在演算法,在「搬資料」這件事本身就吃掉了 CPU 的每一分力氣。DMA 傳輸(Direct Memory Access,直接記憶體存取)要解決的就是這個:讓周邊設備自己去跟記憶體交換資料,CPU 只負責下指令跟收結果。 什麼是 DMA?為什麼需要它? 先看沒有 DMA 的時候,我們在做什...

2026 年 5 月 23 日 0條評論 689點熱度 0人點贊 shi6a 閱讀全文
程式開發

Modbus 通訊協定完整教學:從 RTU 到 TCP,ESP32/STM32 實作

前言:1979 年的協定,為什麼現在還在跑 Modbus 是 Modicon 在 1979 年為 PLC 設計的協定,簡單到有點過時 —— 但它今天還活在你家附近的工廠、大樓機房與太陽能電廠裡。 原因很務實:它夠簡單、夠開放、實作成本夠低。一台變頻器只要宣稱支援 Modbus RTU,就能被任何 SCADA 系統讀到。這種「誰都做得到」的特性,比任何華麗的規格都長壽。 規矩只有一條:只能有一個 Master Master 負責發問,Slave 只負責回答 —— Slave 永遠不會主動開口。RTU 模式使用位址 1...

2026 年 5 月 22 日 0條評論 942點熱度 0人點贊 shi6a 閱讀全文
程式開發

FIFO 完全解析:結構、空滿判斷、深度計算與跨時域設計

什麼是 FIFO? 先講最白話的版本:FIFO 就是一個排隊用的緩衝區。東西從後面排進去、從前面拿出來,誰先到誰先被服務 —— First-In-First-Out,中文就叫先進先出。 聽起來沒什麼了不起,但嵌入式世界幾乎每個角落都有它:UART 收進來的資料、SPI 要送出去的佇列、DMA 搬資料的中繼站,還有兩個不同時鐘域之間的資料交換(Clock Domain Crossing, CDC)。少了 FIFO,這些事情全部得靠 CPU 硬扛。 這篇我想從頭把四件事講清楚:結構長什麼樣、空跟滿怎麼判斷、深度要開多大...

2026 年 5 月 21 日 0條評論 1159點熱度 0人點贊 shi6a 閱讀全文
程式開發

PID 演算法完整教學:從比例積分微分控制到 ESP32 實作

前言:PID 是那種「每個人都用過,但很少人說得清楚」的東西 你做馬達調速、恆溫控制、電池充電、平衡車,最後都會走到同一條路:量測實際值,跟目標比,然後修正輸出。這個循環就是回授控制,而 PID 是它最泛用的一種形式。 它紅了幾十年不是因為數學漂亮,而是因為三個參數就能涵蓋大多數系統,而且不需要你精確知道系統模型。 PID 迴路長什麼樣 連續形式的公式如下: u(t) = Kp × e(t) + Ki × ∫e(t)dt + Kd × de(t)/dt 但 MCU 上跑的是離散版本,每一項都要換成「取樣點之間」的算...

2026 年 5 月 21 日 0條評論 770點熱度 0人點贊 shi6a 閱讀全文
程式開發

PCB 去藕半徑完全解析:退耦電容擺放距離與電源完整性設計

前言:去耦半徑不是玄學,是「迴路面積」的工程問題 每個學 PCB Layout 的人都聽過這句話:「0.1 µF 要貼著 IC 腳放」。但為什麼?貼多近才算近?放遠一點真的會出事嗎? 這些問題的答案不是靠經驗法則的口耳相傳,而是一個很具體的物理量:迴路電感。電容離 IC 越遠,電流繞的那一圈就越大,電感就跟著變大 —— 而電感一大,這顆電容在高頻就等於不存在。 去耦半徑的本質:迴路面積 IC 在切換瞬間需要一股電流,這股電流從電容出發、經走線進 IC、再從 GND 繞回電容 —— 這一個圈就是迴路。圈越大,電感越大...

2026 年 5 月 21 日 0條評論 1075點熱度 0人點贊 shi6a 閱讀全文
123

近期文章

  • USLink 水下通訊模組(中):OOK 軟體設計與除錯歷程
  • USLink 水下通訊模組(上):項目發想與電路設計
  • ESP32 伺服馬達 SG90 控制完整教學:PWM 脈衝控制、LEDC 多軸同步、平滑運動與梯形加減速
  • ESP32 SD 卡讀寫完整教學:SPI 模式、SDMMC 4-bit 初始化序列、FAT32 檔案系統與 Data Logging
  • ESP32 藍牙傳統 SPP(Serial Port Profile)完整教學:BT Classic 通訊、RFCOMM 框架、主從架構與 HC-05 相容

近期留言

尚無留言可供顯示。

彙整

  • 2026 年 9 月
  • 2026 年 6 月
  • 2026 年 5 月

分類

  • 未分類
  • 程式開發
  • 自動化技巧

COPYRIGHT © 2026 0x6A Logbook. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang