用中斷實現流水燈

2021-07-05 02:55:34 字數 1298 閱讀 8547

#include

#define gpio_pin_6                 0x0040  /* led2 */

#define gpio_pin_7

0x0080  /* led1 */

#define

pll_m

8#define

pll_n

336#define

pll_p

2#define

pll_q

7uint32_t flag = 0;

int main()

// 中斷函式處理

void tim4_irqhandler(void)

if(flag == 1)

}void rcc_config(void)

// 配置ahb預分頻

set_bit(rcc->cfgr, rcc_cfgr_hpre_div1);

// 配置apb1預分頻,得到84m的時鐘頻率

set_bit(rcc->cfgr, rcc_cfgr_ppre1_div4);

// 配置apb2預分頻

set_bit(rcc->cfgr, rcc_cfgr_ppre2_div2);

// 將hse作為pllclk的輸入

set_bit(rcc->pllcfgr, rcc_pllcfgr_pllsrc_hse);

// 使能pllclk

set_bit(rcc->cr, rcc_cr_pllon);

// 等待pllclk穩定

while(!(rcc->cr&rcc_cr_pllrdy))

// 正確設定flash延遲時間

flash->acr = flash_acr_prften | flash_acr_icen |flash_acr_dcen |flash_acr_latency_5ws;

// 檢查設定是否成功

if((flash->acr & flash_acr_latency) != flash_acr_latency_5ws)

// 將pllclk作為sysclk,關閉hsi

set_bit(rcc->cfgr, rcc_cfgr_sw_pll);

clear_bit(rcc->cr, rcc_cr_hsion);

// 等待設定成功

while((rcc->cfgr & rcc_cfgr_sws ) != rcc_cfgr_sws_pll)

}void timer_config(void)

void nvic_config(void)

void gpio_config(void)

用微控制器實現流水燈(高階版)

看到這個標題,很多人會想 流水燈?誰不會流水燈啊。微控制器入門的第一節課不就是實現跑馬燈嘛?別急,慢慢看嘛,就算是簡單的跑馬燈,也可以玩出花樣的喲。好吧,不賣關子了,先說說我今天講的內容吧,首先 如何用p1口 只有八個引腳喲 實現八個流水燈,然後 如何用p1口實現十六個流水燈。怎麼樣,有沒有一點小刺...

中斷定時器與流水燈

此程式為設定led流水燈與數碼管第0一位的0 16數字迴圈亮。不能將數碼管程式放進主函式裡,因為延遲函式delay,可能會在add自加到40時剛好在dalay裡面,這時不會有數碼管的閃爍。include include define uchar unsigned char define uint u...

呼吸流水燈

實現剛開始第乙個燈做完呼吸後左移,到達最右邊後回來,如此反覆。由於 需求,在每個計數器到達最大時設定乙個標誌位便於觀察。分析 的編寫 module xunhuan1 input wire clk input wire rst n output reg 3 0 led reg 5 0 cnt us r...