STM32使用TIM閃爍LED 中斷方式

2022-03-07 20:27:54 字數 992 閱讀 2742

最簡單的閃爍led的方式莫過於在主函式的while迴圈中使用短暫延時並不斷開啟和關斷led,此處不做討論

該簡單工程執行在野火mini開發板上,板上有兩顆led(d4, d5),可以通過巨集定義的方式控制led開關

#define led_d4_on                gpio_resetbits(led_gpio, led_d4_pin)

#define led_d4_off gpio_setbits(led_gpio, led_d4_pin)

#define led_d4_toggle gpio_togglebits(led_gpio, led_d4_pin)

#define led_d5_on gpio_resetbits(led_gpio, led_d5_pin)

#define led_d5_off gpio_setbits(led_gpio, led_d5_pin)

#define led_d5_toggle gpio_togglebits(led_gpio, led_d5_pin)

其中gpio的置位/復位函式由庫提供,仿照該格式通過暫存器操作定義了gpio位翻轉函式

#define gpio_togglebits(gpiox, gpio_pin)    gpiox->odr ^= gpio_pin

這樣極大地方便了對led的操作

開發板上有一顆stm32f103rc的微控制器,系統時鐘為72mhz,定時器時鐘頻率與之相同,通過36000分頻,1000的中斷週期實現led 1hz的閃爍頻率

void mini_led_config(void

)

中斷處理函式中判斷中斷標誌並清除中斷標誌,然後做led翻轉動作

void led_d4_tim_irq_handler(void

)}

STM32使用TIM閃爍LED 輸出比較方式

stm32定時器輸出比較器可以直接操作對應的gpio,在計數器值等於比較暫存器的值時,對應的gpio可以有以下四種動作 無動作啟用 取消啟用 翻轉啟用電平由輸出極性暫存器決定 將led置於定時器輸出比較對應的gpio上,對它的操作將非常方便,完全由硬體完成,不消耗cpu時間,無需中斷,每個定時器都對...

STM32使用TIM閃爍LED PWM方式

這次實驗實現乙個呼吸燈的效果,led在第一秒內漸亮,在第二秒內漸暗,如此反覆 控制led的pwm波形階梯數為100,即2秒內pwm的占空比從0 到100 範圍內先遞增後遞減且遞增 遞減的幅度為1 在設計stm32時,將定時器時鐘7200分頻後得到的10k時鐘作為計數器時鐘,並且設定週期為100,這樣...

利用stm32定時器實現LED燈閃爍

本文採用晶元為stm32f103rc,定時器為systick。systick 系統定時器是屬於 cm3 核心中的乙個外設,內嵌在 nvic 中。系統定時器 是乙個 24bit 的向下遞減的計數器,計數器每計數一次的時間為 1 sysclk,一般我們設定系統時鐘 sysclk 等於 72m。當重裝載數...