精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SysTick方式實(shí)現(xiàn)LED流水燈效果。

電子工程師 ? 來(lái)源:lq ? 2019-02-11 15:35 ? 次閱讀

SysTick_Init()函數(shù)

SysTick_Init 函數(shù)代碼如下:

/*************************************************************************

* 函 數(shù) 名 : SysTick_Init

* 函數(shù)功能 : SysTick 初始化,SYSTICK 的時(shí)鐘固定為 AHB 時(shí)鐘的 1/8

* 輸 入 : SYSCLK:系統(tǒng)時(shí)鐘頻率

* 輸 出 : 無(wú)

**************************************************************************/

void SysTick_Init(u8 SYSCLK)

{

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

fac_us=SYSCLK/8; //SYSCLK的8分頻 保存1us所需的計(jì)數(shù)次數(shù)

fac_ms=(u16)fac_us*1000; //每個(gè) ms 需要的 systick 時(shí)鐘數(shù)

}

SysTick_Init 函數(shù)形參 SYSCLK 表示的系統(tǒng)時(shí)鐘大小,默認(rèn)配置我們使用的系統(tǒng)時(shí)鐘是 72M,所以調(diào)用這個(gè)函數(shù)時(shí),形參值即為 72。函數(shù)內(nèi)部調(diào)用了一個(gè)庫(kù)函數(shù) SysTick_CLKSourceConfig,此函數(shù)用來(lái)對(duì) SysTick 定時(shí)器時(shí)鐘的選擇,我們使用的SysTick定時(shí)器時(shí)鐘是系統(tǒng)時(shí)鐘的8 頻 ,所以參數(shù)是SysTick_CLKSource_HCLK_Div8。如果使用系統(tǒng)時(shí)鐘作為 SysTick 定時(shí)器時(shí)鐘,那么參數(shù)即為 SysTick_CLKSource_HCLK。這個(gè)函數(shù)在 misc.c 庫(kù)文件內(nèi),如何查找我們前面介紹過(guò)方法。

下面的兩條語(yǔ)句是用來(lái)求取SysTick定時(shí)器在1us時(shí)間內(nèi)和1ms時(shí)間內(nèi)的計(jì)數(shù)次數(shù)。

delay_us()函數(shù)

delay_us 函數(shù)代碼如下:

/**********************************************************************

* 函 數(shù) 名 : delay_us

* 函數(shù)功能 : us 延時(shí),

* 輸 入 : nus:要延時(shí)的 us 數(shù)

注 意 :nus 的 值 , 不 要 大 于 798915us( 最 大 值 即

2^24/fac_us@fac_us=21)

* 輸 出 : 無(wú)

**********************************************************************/

void delay_us(u32 nus)

{

u32 temp;

SysTick->LOAD=nus*fac_us; //時(shí)間加載

SysTick->VAL=0x00; //清空計(jì)數(shù)器

SysTick->CTRL|=0x01 ; //開(kāi)始倒數(shù)

do

{

temp=SysTick->CTRL;

}while((temp&0x01)&&!(temp&(1<<16))); //等待時(shí)間到達(dá)

SysTick->CTRL&=~0x01; //關(guān)閉計(jì)數(shù)器

SysTick->VAL =0X00; //清空計(jì)數(shù)器

}

①將需要延時(shí)多少 us 的計(jì)數(shù)值加載到 SysTick 的 LOAD 寄存器中,fac_us值是延時(shí) 1us 所需的計(jì)數(shù)值。

②清空當(dāng)前計(jì)數(shù)值寄存器 VAL。

③打開(kāi) SysTick 定時(shí)器,定時(shí)器開(kāi)始向下遞減計(jì)數(shù)。

④CTRL 寄存器的第 16 位是 SysTick 遞減到 0 的標(biāo)志位,如果遞減到 0,此為置 1,通過(guò)讀取該位來(lái)判斷延時(shí)是否完成,從而退出 while 循環(huán)。

⑤關(guān)閉 SysTick 定時(shí)器。

⑥清空當(dāng)前計(jì)數(shù)值寄存器 VAL。

delay_ms()函數(shù)

delay_ms 函數(shù)代碼如下:

/*************************************************************

* 函 數(shù) 名 : delay_ms

* 函數(shù)功能 : ms 延時(shí),

* 輸 入 : nms:要延時(shí)的 ms 數(shù)

注意:nms 的值,SysTick->LOAD 為 24 位寄存器,

不要大于 0xffffff*8*1000/SYSCLK

對(duì) 72M 條件下,nms<=1864ms

* 輸 出 : 無(wú)

**************************************************************/

void delay_ms(u16 nms)

{

u32 temp;

SysTick->LOAD=(u32)nms*fac_ms; // 時(shí) 間 加 載

(SysTick->LOAD 為 24bit)

SysTick->VAL =0x00; //清空計(jì)數(shù)器

SysTick->CTRL|=0x01 ; //開(kāi)始倒數(shù)

do

{

temp=SysTick->CTRL;

}while((temp&0x01)&&!(temp&(1<<16))); //等待時(shí)間到達(dá)

SysTick->CTRL&=~0x01; //關(guān)閉計(jì)數(shù)器

SysTick->VAL =0X00; //清空計(jì)數(shù)器

}

此函數(shù)功能與 delay_us 基本一樣,只不過(guò)這里是延時(shí) ms。要注意的是,SysTick 定 時(shí) 器 是 24 位 的 , 其 計(jì) 數(shù) 最 大 值 為 0xffffff , 時(shí) 間 為nms<=0xffffff*8*1000/SYSCLK,SYSCLK 是系統(tǒng)時(shí)鐘為 72M,所以最大延時(shí)為1864ms。如果需要延時(shí)大于 1.864S,可以調(diào)用多個(gè) delay_ms 函數(shù)即可。

主函數(shù)

在 main.c 文件中前面引入了工程中所需的頭文件,可以打開(kāi)工程查看,這里我們主要看下 main 函數(shù),代碼如下:

/**************************************************************

* 函 數(shù) 名 : main

* 函數(shù)功能 : 主函數(shù)

* 輸 入 : 無(wú)

* 輸 出 : 無(wú)

***************************************************************/

int main()

{

SysTick_Init(72);

LED_Init();

while(1)

{

led1=0;

led2=1;

delay_ms(500); //精確延時(shí) 500ms

led1=1;

led2=0;

delay_ms(500); //精確延時(shí) 500ms

}

}

主函數(shù)實(shí)現(xiàn)的功能比較簡(jiǎn)單,首先對(duì) SysTick 定時(shí)器進(jìn)行初始化配置,選擇系統(tǒng)時(shí)鐘 8 分頻作為 SysTick 的時(shí)鐘,然后初始化 LED,這個(gè)初始化過(guò)程前面已經(jīng)介紹過(guò),大家也可以進(jìn)入這個(gè)函數(shù)內(nèi)查看。最后進(jìn)入 while 循環(huán)語(yǔ)句,對(duì) PC0和 PC1 管腳進(jìn)行位操作,里面也調(diào)用了 delay_ms 延時(shí)函數(shù),這時(shí)候的延時(shí)是非常精確的。

將工程程序編譯下載到開(kāi)發(fā)板內(nèi), 可以看到 LED 模塊的 2 個(gè)指示燈實(shí)現(xiàn)了流水燈效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23141

    瀏覽量

    658527
  • 流水燈
    +關(guān)注

    關(guān)注

    21

    文章

    432

    瀏覽量

    59637
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

    13045

原文標(biāo)題:STM32實(shí)例-SysTick實(shí)現(xiàn)2個(gè)LED流水燈效果

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于51單片機(jī)的跑馬燈/流水燈系統(tǒng)

    具體實(shí)現(xiàn)功能(1)9種LED流水燈模式通過(guò)按鍵進(jìn)行切換,數(shù)碼管顯示流水燈模式。(2)通過(guò)加減按鍵可以切換每種LED
    的頭像 發(fā)表于 10-22 14:12 ?159次閱讀
    基于51單片機(jī)的跑馬燈/<b class='flag-5'>流水燈</b>系統(tǒng)

    單片機(jī)POV LED流水燈制作

    電子發(fā)燒友網(wǎng)站提供《單片機(jī)POV LED流水燈制作.docx》資料免費(fèi)下載
    發(fā)表于 05-28 14:34 ?3次下載

    【紫光同創(chuàng)盤(pán)古PGX-Nano教程】——(盤(pán)古PGX-Nano開(kāi)發(fā)板/PG2L50H_MBG324第三章)鍵控流水燈實(shí)驗(yàn)例程

    燈、按鍵、撥碼開(kāi)關(guān)等。 二:實(shí)驗(yàn)?zāi)康?由PB0(即開(kāi)發(fā)板S0位置)按鍵輸入,切換LED0~LED7的輸出效果。 三:實(shí)驗(yàn)原理 實(shí)現(xiàn)框架如下: (1)頂層
    發(fā)表于 04-29 16:06

    【紫光同創(chuàng)盤(pán)古PGX-MINI-4K教程】——(盤(pán)古PGX-MINI-4K開(kāi)發(fā)板/PGC4KD-6ILPG144第二章)LED 流水燈實(shí)驗(yàn)例程

    載 jtag 調(diào)試接口, 預(yù)留兩組 20PIN 擴(kuò)展 IO、數(shù)碼管、按鍵、led 燈等硬件資源,為用戶(hù)提供基本的 開(kāi)發(fā)環(huán)境。 二:實(shí)驗(yàn)?zāi)康恼莆?b class='flag-5'>流水燈原理并實(shí)現(xiàn)流水燈 三:實(shí)驗(yàn)要求
    發(fā)表于 03-26 16:24

    【紫光同創(chuàng)盤(pán)古PGX-Lite 7K教程】——(盤(pán)古PGX-Lite 7K開(kāi)發(fā)板/PGC7KD-6IMBG256第二章)?LED 流水燈實(shí)驗(yàn)例程

    流水燈原理并實(shí)現(xiàn)流水燈 三:實(shí)驗(yàn)要求流水燈:8 個(gè) LED 以 0.5s 間隔接替閃爍 四:實(shí)驗(yàn)原理相比上一個(gè)
    發(fā)表于 03-20 15:07

    51單片機(jī)流水燈制作

    ?流水燈是學(xué)習(xí)51單片機(jī)的一個(gè)基本項(xiàng)目,是我們對(duì)單片機(jī)IO口輸出認(rèn)識(shí)的基本項(xiàng)目。當(dāng)然學(xué)會(huì)了花樣流水燈也很好玩。 下面就分享一種51單片機(jī)流水燈制作的方法。 一、流水燈原理圖 二、相關(guān)知
    的頭像 發(fā)表于 02-26 10:06 ?1494次閱讀
    51單片機(jī)<b class='flag-5'>流水燈</b>制作

    【紫光同創(chuàng)國(guó)產(chǎn)FPGA教程】——(PGL22G第二章)鍵控流水燈實(shí)驗(yàn)例程

    1~ USER_LED8 的輸出效果。 三:實(shí)驗(yàn)原理 實(shí)現(xiàn)框架如下: (1)頂層實(shí)現(xiàn)按鍵切換 LED
    發(fā)表于 01-05 11:22

    【每周一練】盤(pán)古1K開(kāi)發(fā)板 練習(xí)一:LED流水燈實(shí)驗(yàn)

    查看附件中的快速使用手冊(cè)。 LED流水燈實(shí)驗(yàn) 本次實(shí)驗(yàn)實(shí)現(xiàn)LED流水燈,使用的到的硬件為LED
    發(fā)表于 12-21 00:20

    【每周一練】盤(pán)古1K開(kāi)發(fā)板 練習(xí)一:LED流水燈

    實(shí)驗(yàn)?zāi)康?熟悉PDS開(kāi)發(fā)流程,掌握流水燈原理并實(shí)現(xiàn)流水燈。 實(shí)驗(yàn)要求 設(shè)計(jì)8個(gè)LED以0.5s間隔接替點(diǎn)亮。 學(xué)習(xí)心得 實(shí)現(xiàn)了IO控制,點(diǎn)亮
    發(fā)表于 12-10 16:39

    【每周一練】盤(pán)古1K開(kāi)發(fā)板 練習(xí)一:LED流水燈實(shí)驗(yàn)學(xué)習(xí)

    實(shí)驗(yàn)?zāi)康?熟悉PDS開(kāi)發(fā)流程,掌握流水燈原理并實(shí)現(xiàn)流水燈 實(shí)驗(yàn)要求 設(shè)計(jì)8個(gè)LED以0.5s間隔接替點(diǎn)亮 實(shí)現(xiàn)代碼 `define UD #
    發(fā)表于 12-09 14:20

    【每周一練】+盤(pán)古1K開(kāi)發(fā)板+1. 流水燈實(shí)現(xiàn)

    License)鏈接”下面提供的軟件即可。 2 開(kāi)發(fā)學(xué)習(xí) 參考“1K2K鏈接”下面提供的“MES2KG”,里面有示例代碼和說(shuō)明,我們可以參考這些入門(mén)。 下面就是我實(shí)現(xiàn)流水燈的過(guò)程。 2.1 新建
    發(fā)表于 12-08 00:30

    利用SCR步進(jìn)指令實(shí)現(xiàn)流水燈循環(huán)點(diǎn)亮

    在以往介紹西門(mén)子smart文章中,提到過(guò)流水燈的寫(xiě)法,有用循環(huán)位移字[ROL(R)_B]節(jié)來(lái)實(shí)現(xiàn),有利用定時(shí)器(TON)來(lái)實(shí)現(xiàn)。今天我們利用SCR步進(jìn)指令來(lái)實(shí)現(xiàn)
    的頭像 發(fā)表于 12-04 09:15 ?2127次閱讀
    利用SCR步進(jìn)指令<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>流水燈</b>循環(huán)點(diǎn)亮

    如何利用SCR步進(jìn)指令來(lái)實(shí)現(xiàn)流水燈循環(huán)點(diǎn)亮?

    在以往介紹西門(mén)子smart文章中,提到過(guò)流水燈的寫(xiě)法,有用循環(huán)位移字[ROL(R)_B]節(jié)來(lái)實(shí)現(xiàn),有利用定時(shí)器(TON)來(lái)實(shí)現(xiàn)
    的頭像 發(fā)表于 12-04 09:14 ?2569次閱讀
    如何利用SCR步進(jìn)指令來(lái)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>流水燈</b>循環(huán)點(diǎn)亮?

    使用74HC595驅(qū)動(dòng)LED流水燈實(shí)驗(yàn)

    本次實(shí)驗(yàn)的simulink模型如圖5.2所示,實(shí)驗(yàn)現(xiàn)象可以通過(guò)改變控制PC6引腳的“constant2”變量實(shí)現(xiàn)LED流水燈效果,如圖5.1所示,本次實(shí)驗(yàn)電路原理如圖5.3所示,STM
    的頭像 發(fā)表于 11-29 16:20 ?1924次閱讀
    使用74HC595驅(qū)動(dòng)<b class='flag-5'>LED</b><b class='flag-5'>流水燈</b>實(shí)驗(yàn)

    【每周一練】+盤(pán)古1K開(kāi)發(fā)板+環(huán)境建立與流水燈

    下載線,該下載線的連接請(qǐng)參考“小眼睛FPGA”微信視頻號(hào)中的“#紫光同創(chuàng)盤(pán)古系列FPGA開(kāi)發(fā)板@盤(pán)古1K2K開(kāi)發(fā)板 燒錄器下載器 連接教程”。 二、流水燈測(cè)試 要實(shí)現(xiàn)流水燈效果,在F
    發(fā)表于 11-27 21:57