娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月29日(星期四)

2019年05月29日 | 在STM32項(xiàng)目中使用SysTick實(shí)現(xiàn)延時(shí)(STM32_06)

發(fā)布者:芳華逝水 來(lái)源: eefocus關(guān)鍵字:STM32項(xiàng)目  SysTick  延時(shí) 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

一、SysTick


Sys-系統(tǒng),Tick-滴答聲,系統(tǒng)滴答滴答很形象地表示了它是一個(gè)系統(tǒng)節(jié)拍器。SysTick 是一個(gè)集成在Cortex內(nèi)核里的24位的倒計(jì)數(shù)定時(shí)器,當(dāng)計(jì)到0時(shí),將從RELOAD 寄存器中自動(dòng)重裝載定時(shí)初值。只要不把它在SysTick 控制及狀態(tài)寄存器中的使能位清除,就永不停息。


SysTick的作用。


SysTick主要有以下幾個(gè)作用:


1、產(chǎn)生操作系統(tǒng)的時(shí)鐘節(jié)拍;


當(dāng)RTOS以并行的架構(gòu)處理任務(wù),單一任務(wù)的崩潰并不會(huì)牽連到整個(gè)系統(tǒng)。這樣用戶(hù)出于可靠性的考慮可能就會(huì)基于RTOS來(lái)設(shè)計(jì)自己的應(yīng)用程序。這樣SYSTICK存在的意義就是提供必要的時(shí)鐘節(jié)拍,為RTOS的任務(wù)調(diào)度提供一個(gè)有節(jié)奏的“心跳”。


2、便于不同處理器之間程序移植


因?yàn)樗械腃M3芯片都帶有這個(gè)定時(shí)器,軟件在不同 CM3器件間的移植工作得以化簡(jiǎn)。


3、作為一個(gè)鬧鈴測(cè)量時(shí)間


可以用作鬧鐘,作為啟動(dòng)一個(gè)特定任務(wù)的時(shí)間依據(jù)。它作為一個(gè)鬧鈴,用于測(cè)量時(shí)間。要注意的是,當(dāng)處理器在調(diào)試期間被喊停(halt)時(shí),則SysTick定時(shí)器亦將暫停運(yùn)作。


二、項(xiàng)目配置


該項(xiàng)目以https://blog.csdn.net/fanxp66/article/details/80227611為基礎(chǔ),對(duì)程序中的延時(shí)替換為使用SysTick來(lái)實(shí)現(xiàn)精準(zhǔn)延時(shí)。


1、將庫(kù)函數(shù)庫(kù)中的"misc.h"頭文件復(fù)制到項(xiàng)目的Libinc文件夾下,將"misc.c"程序文件復(fù)制到Libsrc文件夾下;


2、將"misc.c"文件添加到項(xiàng)目的"Lib"組中;


3、在項(xiàng)目文件夾下新建一個(gè)"Public"文件夾,在項(xiàng)目中添加"Public"組;


4、新建"SysTick.h"文件和"SysTick.c"文件,將"SysTick.c"文件添加到項(xiàng)目的"Public"組中;


5、修改項(xiàng)目配置,將路徑"Public"添加到"C/C++"的"Include Paths"中。


三、編程


在本程序中,利用SysTick進(jìn)行精準(zhǔn)1秒定時(shí),系統(tǒng)時(shí)鐘初始為72MHz,選擇SYSCLK/8分頻后得到的9MHz作為SysTick的輸入計(jì)時(shí)時(shí)鐘,當(dāng)設(shè)置計(jì)數(shù)值為9000000時(shí),實(shí)現(xiàn)1秒定時(shí)。


在使用SysTick時(shí)有查詢(xún)式和中斷方式兩種,使用查詢(xún)方式時(shí),首先為SysTick選擇時(shí)鐘源和設(shè)置計(jì)數(shù)值并啟動(dòng)計(jì)數(shù),然后查詢(xún)計(jì)數(shù)完成狀態(tài)位,狀態(tài)位為1時(shí)表示計(jì)數(shù)完成;使用中斷方式時(shí)要為15號(hào)異常設(shè)置中斷服務(wù)程序處理。這里使用查詢(xún)方式。


SysTick編程用到以下寄存器:


CTRL          SysTick 控制和狀態(tài)寄存器


LOAD         SysTick 重裝載值寄存器


VAL            SysTick 當(dāng)前值寄存器


CALIB         SysTick 校準(zhǔn)值寄存器


在"core_cm3.h"文件中定義了:


typedef struct


{


  __IO uint32_t CTRL;    /*地址偏移: 0x00  SysTick 控制和狀態(tài)寄存器*/


  __IO uint32_t LOAD;    /*地址偏移: 0x04  SysTick 裝載計(jì)數(shù)值寄存器*/


  __IO uint32_t VAL;     /*地址偏移: 0x08  SysTick當(dāng)前計(jì)數(shù)值寄存器*/


  __I  uint32_t CALIB;   /*地址偏移: 0x0C  SysTick 校準(zhǔn)值寄存器*/


} SysTick_Type;


#define SysTick   ((SysTick_Type *)SysTick_BASE)   /*SysTick 配置結(jié)構(gòu)體  */


    以后就可以通過(guò)對(duì)SysTick結(jié)構(gòu)體指針操作SysTick的寄存器。


1、SysTick編程步驟。


① 為SysTick設(shè)置時(shí)鐘源


在STM32的庫(kù)函數(shù)文件中有"misc.h"頭文件和"misc.c"程序文件定義了相應(yīng)的宏和庫(kù)函數(shù)。


在"misc.h"頭文件有定義:


#define SysTick_CLKSource_HCLK_Div8    ((uint32_t)0xFFFFFFFB)


#define SysTick_CLKSource_HCLK         ((uint32_t)0x00000004)


在"misc.c"程序文件定義函數(shù)


void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)


{


  assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));


  if (SysTick_CLKSource == SysTick_CLKSource_HCLK)


  {


    SysTick->CTRL |= SysTick_CLKSource_HCLK; /*將CTRL寄存器的位2設(shè)為1*/


  }


  else


  {


    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8; /*將CTRL寄存器的位2設(shè)為0*/


  }


}


在本程序中使用8分頻的系統(tǒng)時(shí)鐘,所以調(diào)用函數(shù)如下:


SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);


② 為SysTick 裝載計(jì)數(shù)值寄存器設(shè)置計(jì)數(shù)值;


③ 對(duì)SysTick當(dāng)前計(jì)數(shù)值寄存器置0;


④ 通過(guò)對(duì)SysTick的CTRL寄存器的位0置位使能SysTick定時(shí)器。


2、編程實(shí)現(xiàn)


在程序中,為了方便使用,定義了"SysTick.h"頭文件和"SysTick.c"程序文件(這兩個(gè)文件已經(jīng)在前面“項(xiàng)目配置”部分創(chuàng)建)。


"SysTick.h"頭文件內(nèi)容如下:


#ifndef __SysTick__H


#define __SysTick__H


#include "stm32f10x.h"


void SysTick_Init(u8 SYSCLK);


void delay_us(u32 nus);


void delay_ms(u16 nms);


"SysTick.c"程序文件內(nèi)容如下:


#include "SysTick.h"


#include "misc.h"


u8 fac_us = 0;


u16 fac_ms = 0;


 


void SysTick_Init(u8 SYSCLK)


{


     SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);


     fac_us = SYSCLK / 8;


     fac_ms = (u16)fac_us*1000;


}


 


void delay_us(u32 nus)


{


     u32 temp;


     SysTick->LOAD = nus * fac_us;


     SysTick->VAL = 0;


     SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;


     do{


         temp = SysTick->CTRL;


     }while((temp&0x01)&&(!(temp&(1<<16))));


     SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;


     SysTick->VAL = 0;


}


void delay_ms(u16 nms)


{


     u32 temp;


     SysTick->LOAD = nms * fac_ms;


     SysTick->VAL = 0;


     SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;


     do{


         temp = SysTick->CTRL;


     }while((temp&0x01)&&(!(temp&(1<<16))));


     SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;


     SysTick->VAL = 0;


}


3、在主函數(shù)中使用定時(shí)


#include "stm32f10x.h"


#include "stm32f10x_rcc.h"


#include "led.h"


#include "SysTick.h"


 


int main()


{


     u32 i,j;


     //共陽(yáng)數(shù)碼管'0'-'9'顯示碼


     u32 LED[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


     LED_Init();


     SysTick_Init(72);  //系統(tǒng)時(shí)鐘72MHz


     while(1)


     {


         for(i=0;i<10;i++)


         {


              //根據(jù)LED[n]數(shù)組的值決定數(shù)碼管各個(gè)段位的顯示


              for(j=0; j<8; j++)


                   if( ~(LED[i]) & 0x1<

                       PCout(j) = 0;


                   else


                       PCout(j) = 1;


              delay_ms(1000);


         }


     }


}



關(guān)鍵字:STM32項(xiàng)目  SysTick  延時(shí) 引用地址:在STM32項(xiàng)目中使用SysTick實(shí)現(xiàn)延時(shí)(STM32_06)

上一篇:使用STM32GPIO讀取按鍵實(shí)現(xiàn)按鍵操作(STM32_08)
下一篇:通過(guò)位帶地址操作GPIO在數(shù)碼管顯示數(shù)字(STM32_05)

推薦閱讀

小米官方宣布,小米手環(huán)3將于5月31日與小米8同步亮相。??同時(shí)小米科技CEO雷軍向廣大網(wǎng)友詢(xún)問(wèn):“小米手環(huán)3,你最期待的功能是什么?”官方暗示全新可觸摸,結(jié)合此前曝光的信息,官方暗示的可能是全新可觸摸OLED顯示屏。?作為新一代產(chǎn)品,小米手環(huán)3應(yīng)該會(huì)在運(yùn)動(dòng)、睡眠、心率監(jiān)測(cè)等健康信息方面有所加強(qiáng),同時(shí)作為手機(jī)的輔助設(shè)備,它還會(huì)具備通知、鬧鐘提...
華為傳來(lái)消息已經(jīng)正式注冊(cè)了鴻蒙系統(tǒng)的商標(biāo),并且根據(jù)此前余承東的說(shuō)法,華為這個(gè)系統(tǒng)最快將會(huì)在今年秋天發(fā)布,最晚也是明年春天。那么,我們今天就來(lái)討論下——華為鴻蒙系統(tǒng)真的能行嗎?今天筆者也看到了一個(gè)非常有趣的觀點(diǎn),同時(shí)也認(rèn)為這五大因素將會(huì)是華為做系統(tǒng)成功的關(guān)鍵!或者說(shuō),如果華為鴻蒙系統(tǒng)想要成功,這幾個(gè)條件不可或缺! 第一、做OS要站在...
知名手機(jī)評(píng)測(cè)機(jī)構(gòu)DXOMARK在昨天揭曉了iPhone SE(2020)的音頻成績(jī),音頻播放得分69,音頻錄制得分73,綜合得分70。音頻播放方面,iPhone SE(2020)最大和最小音量性能良好,中音和高音均衡,缺點(diǎn)是該機(jī)橫向播放(音樂(lè)應(yīng)用程序)時(shí),立體聲倒置,音調(diào)平衡缺乏低音響應(yīng)。音頻錄制方面,iPhone SE(2020)音色表現(xiàn)優(yōu)異,即使在高聲壓級(jí)中也幾乎沒(méi)有音損...

史海拾趣

問(wèn)答坊 | AI 解惑

Quenching the thirst of RF power amps and extending the life

Battery life or rather runtime is crucial in portable wireless systems such as cell phones, PDAs, laptop computers, and so on because it ultimately defines the device\'\'s mobility. With decreasing form factors and increasing func ...…

查看全部問(wèn)答∨

DCS 系統(tǒng)中UPS 的選用及維護(hù)

針對(duì)DCS 對(duì)其供電電源的嚴(yán)格要求,通過(guò)分析在線式靜態(tài)交流不停電電源系統(tǒng)UPS 的性能和工作方式,闡明了選用在線式UPS 是DCS 系統(tǒng)的最優(yōu)電源保證,并結(jié)合曲線圖說(shuō)明了如何選擇UPS 及其配套電池的容量,最后介紹了UPS的日常維護(hù)方法和注意事項(xiàng)。…

查看全部問(wèn)答∨

一種輸出電壓4~16V開(kāi)關(guān)穩(wěn)壓電源的設(shè)計(jì)

摘  要: 介 紹 一 種 采 用 半 橋 電 路 的 開(kāi) 關(guān) 電 源 , 其 輸 入 電 壓 為 交 流 220V± 20% , 輸 出 電 壓 為 直 流 4~ 16V, 最 大 電 流 40A, 工 作 頻 率 50kHz。 重 點(diǎn) 介 紹 了 該 電 源 的 設(shè) 計(jì) 思 想 , 工 作 原 理 及 特 ...…

查看全部問(wèn)答∨

關(guān)于RS485電能表通訊協(xié)議DL645的探討!

小弟這段時(shí)間在學(xué)習(xí)單片機(jī)的通訊RS485,實(shí)現(xiàn)DL645電能表通訊協(xié)議的程序。畫(huà)了很多流程圖都沒(méi)畫(huà)好(小弟使用匯編編寫(xiě)程序)。請(qǐng)做個(gè)DL645協(xié)議的前輩來(lái)討論下。…

查看全部問(wèn)答∨

8個(gè)二極管的橋式整流電路

橋式整流電路中用兩個(gè)二極管串聯(lián)作為一個(gè)任一橋臂中的二極管。請(qǐng)問(wèn)這樣的做法有什么可取之處?…

查看全部問(wèn)答∨

winpcap for wince

有誰(shuí)解決沒(méi)解決winpcap for wince的"Windows CE failed to load the packet capture driver"問(wèn)題啊?…

查看全部問(wèn)答∨

招聘WinCE嵌入式工程師,硬件工程師

本公司為新成立的公司,有了強(qiáng)大的市場(chǎng),現(xiàn)缺乏一批有經(jīng)驗(yàn)和激情的有創(chuàng)業(yè)精神的技術(shù)人員加盟。  我們將給開(kāi)發(fā)人員極大的自由發(fā)揮空間。    深圳市數(shù)訊新通通信有限公司“ShuXun XinTong Communication Equipment Co.,Ltd.” ...…

查看全部問(wèn)答∨

Verilog 中的系統(tǒng)任務(wù)

&nbsp;花了好長(zhǎng)時(shí)間去看系統(tǒng)任務(wù) &nbsp;但是有一事不明,就是在用quartus 進(jìn)行仿真的時(shí)候 系統(tǒng)任務(wù)起到什么作用 &nbsp;可否將程序中的系統(tǒng)任務(wù)注釋掉 &nbsp;請(qǐng)大俠點(diǎn)亮燈明路!…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阿图什市| 盱眙县| 和平县| 东乡族自治县| 盐山县| 保靖县| 太谷县| 龙泉市| 河源市| 潮安县| 江达县| 葵青区| 休宁县| 利辛县| 武穴市| 安仁县| 叙永县| 疏附县| 南投县| 新竹县| 武威市| 千阳县| 布拖县| 澄江县| 尼玛县| 九寨沟县| 赤壁市| 梅河口市| 宜川县| 阳东县| 吉安县| 阿荣旗| 天峻县| 电白县| 庆元县| 甘谷县| 樟树市| 澄城县| 南昌市| 土默特左旗| 凤凰县|