日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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)注

    244

    文章

    24733

    瀏覽量

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

    關(guān)注

    21

    文章

    436

    瀏覽量

    62181
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    67

    瀏覽量

    14027

原文標(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)推薦
    熱點(diǎn)推薦

    使用FPGA控制上千顆RGB LED流水燈

    國(guó)內(nèi)還有一個(gè)FPGA技術(shù)在特定垂直的領(lǐng)域-LED 顯示。今天就從開(kāi)源項(xiàng)目展開(kāi)講講這個(gè)領(lǐng)域中FPGA扮演的角色。
    的頭像 發(fā)表于 03-25 17:52 ?993次閱讀

    郎特科技 LED 燈管定制:管徑規(guī)格如何影響照明效果?

    郎特科技LED燈管定制:管徑規(guī)格如何影響照明效果?在照明領(lǐng)域,LED燈管的管徑規(guī)格是影響照明效果的關(guān)鍵因素之一。郎特科技提供多種管徑規(guī)格的LED
    的頭像 發(fā)表于 02-12 13:08 ?757次閱讀
    郎特科技 <b class='flag-5'>LED</b> 燈管定制:管徑規(guī)格如何影響照明<b class='flag-5'>效果</b>?

    CW32系統(tǒng)滴答SysTick定時(shí)器詳解

    _CTRL_TICKINT_Msk| SysTick_CTRL_ENABLE_Msk; 設(shè)置SysTick IRQ中斷使能,并開(kāi)啟SysTick定時(shí)器 4.Systick延時(shí)功能
    發(fā)表于 01-21 07:20

    基于PWM的LED調(diào)光技術(shù)與呼吸燈實(shí)現(xiàn)方法!

    分享PWM相關(guān)基礎(chǔ)知識(shí),并以Air8000核心板為例,演示LuatOS開(kāi)發(fā)中如何使用PWM功能實(shí)現(xiàn)LED亮度控制及呼吸燈效果,幫助開(kāi)發(fā)者快速上手。 ? 一、PWM相關(guān)基礎(chǔ)知識(shí) PWM具有高效、控制精度高及
    的頭像 發(fā)表于 12-15 13:03 ?701次閱讀
    基于PWM的<b class='flag-5'>LED</b>調(diào)光技術(shù)與呼吸燈<b class='flag-5'>實(shí)現(xiàn)</b>方法!

    使用系統(tǒng)定時(shí)器SysTick來(lái)實(shí)現(xiàn)精確延時(shí)微秒和毫秒函數(shù)

    到 0 時(shí),將從RELOAD 寄存器中自動(dòng)重裝載定時(shí)初值,開(kāi)始新一輪計(jì)數(shù)。使用內(nèi)核的SysTick定時(shí)器來(lái)實(shí)現(xiàn)延時(shí),可以不占用系統(tǒng)定時(shí)器,由于和MCU外設(shè)無(wú)關(guān),所以代碼的移植,在不同廠家的Cortex-M
    發(fā)表于 11-20 07:12

    FZH16 固定花樣 6 通道LED流星雨顯示效果驅(qū)動(dòng)IC

    是固定花樣 6 通道LED流星雨顯示效果驅(qū)動(dòng)IC。本產(chǎn)品內(nèi)部自帶振蕩器,PWM輸出進(jìn)行灰度 漸變。上電復(fù)位后,輸出PWM波形,進(jìn)行 6 通道的LED依次循環(huán)控制,實(shí)現(xiàn)流星、水滴
    發(fā)表于 11-14 09:34

    蜂鳥(niǎo)E203在黑金XC7A200T型FPGA上點(diǎn)亮LED實(shí)現(xiàn)流水燈

    一、隊(duì)伍介紹 本篇介紹的內(nèi)容是蜂鳥(niǎo)E203在黑金XC7A200T型FPGA上點(diǎn)亮LED實(shí)現(xiàn)流水燈。 二、前言 在此之前我們已經(jīng)將蜂鳥(niǎo)E203在黑金XC7A200T型FPGA開(kāi)發(fā)板上,所以
    發(fā)表于 10-31 09:04

    如何使用 M252 PSIO 實(shí)現(xiàn) ARGB2 LED 定時(shí),實(shí)現(xiàn)彩虹、劇場(chǎng)追逐彩虹等燈光效果

    使用 M252 PSIO 實(shí)現(xiàn) ARGB2 LED 定時(shí),實(shí)現(xiàn)彩虹、劇場(chǎng)追逐彩虹等燈光效果
    發(fā)表于 08-20 06:58

    如何使用GPIO模擬ARGB2 LED定時(shí)序列,并在M258系列微控制器(MCU)上實(shí)現(xiàn)彩虹波ARGB2 LED效果?

    使用GPIO模擬ARGB2 LED定時(shí)序列,并在M258系列微控制器(MCU)上實(shí)現(xiàn)彩虹波ARGB2 LED效果
    發(fā)表于 08-20 06:55

    【中科昊芯Core_DSC280025C開(kāi)發(fā)板試用體驗(yàn)】---定時(shí)器中斷方式LED流水燈

    中科昊芯Core_DSC280025C開(kāi)發(fā)板的單片機(jī)是32位單片機(jī),運(yùn)算速度快,但引腳配置又有點(diǎn)像Arduino,所以假如編寫(xiě)流水燈程序不像51單片機(jī)那么簡(jiǎn)單,可能對(duì)于玩轉(zhuǎn)32位單片機(jī)的老手來(lái)說(shuō)
    發(fā)表于 08-07 22:14

    瑞薩RA MCU眾測(cè)寶典 SysTick之RA0E1定時(shí)器點(diǎn)燈

    嵌入式小百科將和大家一起,基于【RA-Eco-RA0E1-32PIN-V1.0】開(kāi)發(fā)板,一步步實(shí)現(xiàn)SysTick定時(shí)器點(diǎn)燈,感受時(shí)間控制在嵌入式開(kāi)發(fā)中的奇妙作用。 開(kāi)啟寶典 #Systick定時(shí)器
    的頭像 發(fā)表于 08-05 14:50 ?3663次閱讀
    瑞薩RA MCU眾測(cè)寶典  <b class='flag-5'>SysTick</b>之RA0E1定時(shí)器點(diǎn)燈

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】——1.開(kāi)箱點(diǎn)燈

    8.打開(kāi)KEIL 9.設(shè)置MCU 10.編譯,燒錄代碼 看到LED1,LED2,LED3全亮,滿足預(yù)期結(jié)果 11.修改代碼,實(shí)現(xiàn)流水燈
    發(fā)表于 07-16 13:00

    【沁恒CH585開(kāi)發(fā)板免費(fèi)試用體驗(yàn)】GPIO 流水燈

    電路圖 值得注意的,不同的開(kāi)發(fā)板,LED連接的GPIO一般是不同的,請(qǐng)注意修改。這里將LED0接到PB8,LED1接到PB17。 3 GPIO 流水燈
    發(fā)表于 07-04 22:55

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】流水燈練習(xí)

    ,LED的驅(qū)動(dòng)。做一個(gè)流水燈效果 參考代碼如下: #include \"hal_data.h\" FSP_CPP_HEADER void R_BSP_WarmStart
    發(fā)表于 05-29 19:04

    第十二章 SysTick——系統(tǒng)定時(shí)器

    本章介紹了W55MH32的SysTick系統(tǒng)定時(shí)器,它是24位遞減計(jì)數(shù)器,含4個(gè)寄存器,可配置定時(shí)、中斷,用于產(chǎn)生時(shí)基 等。
    的頭像 發(fā)表于 05-22 17:16 ?1270次閱讀
    第十二章 <b class='flag-5'>SysTick</b>——系統(tǒng)定時(shí)器
    广饶县| 桃园市| 灵武市| 清远市| 哈巴河县| 通山县| 通化市| 安乡县| 华阴市| 阳原县| 纳雍县| 旬邑县| 江达县| 德钦县| 越西县| 甘孜县| 永兴县| 金华市| 隆尧县| 台北市| 贡嘎县| 张北县| 通化县| 苍溪县| 西林县| 灌南县| 定日县| 孙吴县| 玉林市| 霍州市| 安仁县| 鲁山县| 叙永县| 米泉市| 武强县| 南京市| 佛坪县| 忻城县| 大兴区| 日喀则市| 弋阳县|