標籤: 教學
所有帶有標籤「教學」的文章。
STM32 WWDG 窗口看門狗計時器
前言:在上一篇中已經介紹了 WDG 看門狗計時器的用途以及 IWDG 與 WWDG 的差別,也示範了 IWDG 的基本用法。 這一篇要接著介紹 WWDG 窗口看門狗的基本概念。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#嵌入式
STM32 LibOpenCM3:IWDG 獨立看門狗計時器
前言:看門狗計時器(Watchdog timer,WDG)是眾多 MCU 都有的功能,它是一種特殊功能的計時器,其功能為不斷下數,如果下數到一個值之前都沒有做刷新(Refresh)的話就認定目前系統出問題了(例如進入死迴圈跳不出來),並自動觸發系統重置(System reset)。如果要系統正常運作不 Reset 的話,必須要在 WDG Timeout 前進行 Refresh,以告訴 WDG:「我還在正常運作,不要把我 Reset 掉」。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式
STM32 LibOpenCM3:SysTick delay
前言:在前面的篇章中,我們已經學會使用 Timer 來精確定時了,而在使用 MCU 的過程中最常會需要精確定時的莫過於 delay() 函式,在此之前我都是單純的讓 MCU 空跑一定的次數,但這樣很難知道它實際上到底 delay 了多久的時間,而已同樣的數值在不同的 Clock Tree 設定下 delay 的長度也不同,因此我們可以使用 Timer 來做出一個更好的 delay()。 但是如果只是要實現 delay() 功能的話,並不用像之前的 Timer 那樣計算並設定一大堆數值,因為 ARM Cortex M3 有一個特殊的計時器——SysTick,我們可以使用它來完成 delay() 函式。 這次的目標是使用 SysTick 來實現一個 delay_ms() 函式,它可以以毫秒為單位進行 delay,並且用來寫 LED 閃爍的程式。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式
STM32 LibOpenCM3:PWM 脈波寬度調變
前言:在之前的內容中已經介紹過基本的 Timer 用法,及 PWM 的計算。 在使用 PWM 時我們會需要控制兩種參數:頻率與 Duty Cycle(佔空比)。頻率的部分和 Timer 一樣,由 TIMx_PSC 與 TIMx_ARR 暫存器的值來設定,而 Duty Cycle 則由 TIMx_CCRx 暫存器來指定。 這篇的目標是寫出一個可以設定 PWM 頻率與 Duty Cycle 的程式,並讓 STM32 輸出 PWM 訊號。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式
STM32 PWM 脈波寬度調變
前言:在上一篇中已經介紹過基本的 Timer 用法,而 Timer 除了單純的定時外,最常見的應用就是產生 PWM(Pulse width modulation)訊號。 在使用 PWM 時我們會需要控制兩種參數:頻率與 Duty Cycle(佔空比)。頻率的部分和 Timer 一樣,由 TIMx_PSC 與 TIMx_ARR 暫存器的值來設定,而 Duty Cycle 則由 TIMx_CCRx 暫存器來指定。 這篇會先從理論的部分說明要如何計算並設定 CCR 的值以精確地控制 Duty Cycle。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#嵌入式
STM32 LibOpenCM3:Timer 計時器
前言:Timer 計時器是各個 MCU 中都會有的基本功能。正如其名,當需要精確定時以進行控制時,Timer 就會派上用場,Timer 還可以用來產生 PWM 訊號,是很常用的功能。 上一篇已經簡單介紹要如何計算 Timer 的 PSC 與 ARR 來得到想要的頻率了,這一篇就要來看看實際的程式。 這篇的目標是使用 Timer 來讓 LED 的閃爍頻率更精確且方便修改。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式
STM32 Timer 計時器
前言:Timer 計時器是各個 MCU 中都會有的基本功能。正如其名,當需要精確定時以進行控制時,Timer 就會派上用場,Timer 還可以用來產生 PWM 訊號,是很常用的功能。 在 STM32 上我們可以藉由設定預除頻器(Prescaler)和自動裝載(Auto-Reload)來讓 Timer 每經過一段固定的時間後就產生一個中斷。 這一篇會介紹要如何使用並計算 STM32 的 Timer 的各項參數以設定想要的頻率。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#嵌入式
STM32 LibOpenCM3:USART 接收
前言:上一篇中我介紹了 USART 的發送,這次要來寫 USART 的接收了。由於透過輪詢的方式實現 USART 的接收實在是不是一個好的寫法,因此我們會直接使用中斷(Interrupt)的方式來達成。 這次的功能為讓 STM32 將 USART 接收到的資料原封不動丟回去,且收到資料時 LED 會閃一下。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式
STM32 LibOpenCM3:USART 發送
前言:USART 是最常用且基本的通訊方式之一,我通常會用 USART 來讓 MCU 與電腦進行溝通,在進行設定或開發除錯時很好用。不過實際上這篇要介紹的只是 UART 而非 USART,不過我還是統一用 USART。 這一篇的目標是讓 STM32 持續透過 USART 來發送資料到電腦,並且可以使用 printf() 函式。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式
STM32 LibOpenCM3:EXTI 外部中斷
前言:在之前的文章中我們使用輪詢的方式來讀取目前的按鈕狀態,但這種方式的效率不是很好,在需要讀取按鈕狀態等情況下,我們可以使用外部中斷(External Interrupt,EXTI),讓 CPU 可以去忙其它事情,等到按鈕被按下時會產生中斷事件,才去執行按鈕被按下時要處理的事。 這次要我們的目標功能是每次按下按鈕後,LED 的閃爍速度就會變化。
發佈簡單入門 LibOpenCM3 STM32 嵌入式系 統開發#STM32
#LibOpenCM3
#教學
#C/C++
#程式
#嵌入式