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

STM32學習(四) SyxTick 實驗

發布者:Jinyu521最新更新時間:2025-01-15 來源: jianshu關鍵字:STM32  實驗  內核 手機看文章 掃描二維碼
隨時隨地手機看文章


Systick 簡介

  • SYSTick 系統定時器是 CM4 內核的一個外設(所有 CM4 內核的單片機都有),內嵌在 NVIC 中;

  • 24bit 的向下遞減計數器,計數器每計數一次的時間是 1/SYSCLK,一般設置 SYSTICK 為168MHz(以STM32F407為例);

  • 當重裝載數值寄存器的值遞減到0的時候,系統定時器就產生一次中斷,以此循環往復;

  • 一般用于產生時基,維持系統心跳

SysTick 寄存器講解

寄存器功能
CTRL控制及狀態寄存器
LOAD重裝載數值寄存器
VAL當前數值寄存器
CALIB校準數值寄存器

CTRL 寄存器

bit[2]          CLKSOURCE, 時鐘源選擇,0-AHB/8,1-AHB

bit[1]          TICKINIT, 1-SysTick倒計數到0時產生異常請求(即中斷)

bit[0]          ENABLE,1-使能


RELOAD 重裝載值寄存器

  • 當計數到0時,重新裝載到數值寄存器的值


bit[23~0]       低24位有效

VAL 當前數值寄存器

SysTick 配置庫函數

  • SysTick 屬于內核外設,跟普通外設的中斷優先級有些區別,并沒有搶占優先級和子優先級的說法;
    用庫函數編程時,我們只需要使用 SysTick_Config() 進行配置即可,函數如下,在 cm4.h 文件中:


// System Tick Configuration, The function initializes the System Timer and its interrupt, and starts the System Tick Timer.

// param [in]  ticks  Number of ticks between two interrupts.


__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)

{

    // 參數檢查,重載值最大是24位

  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); }


    /* set reload register */

  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         

  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);


    /* Load the SysTick Counter Value */

  SysTick->VAL   = 0UL;


    // 時鐘源選擇 AHB 168MHz,計數到0時產生中斷,使能系統定時器                                             

  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |

                   SysTick_CTRL_TICKINT_Msk   |

                   SysTick_CTRL_ENABLE_Msk;


  return (0UL);

}


SysTick 初始化函數

如下代碼,配置 ticks 為 SystemCoreClock / 1000,即 168K,即計數168K次時,產生一次中斷;

而計數一次的時間是:1/CLKAHB,即 1/168M 秒,所以計數168K次用時 1ms,意即 每ms產生一次 SysTick 中斷;

在 SysTick 中斷處理函數中可以累加經過的 毫秒值,從而達到記錄時間的目的;


void SysTick_Init(void){
    /* SystemFrequency / 1000    1ms中斷一次
     * SystemFrequency / 100000  10us中斷一次
     * SystemFrequency / 1000000 1us中斷一次
     */
    if (SysTick_Config(SystemCoreClock / 1000))
    {
        /* Capture error */
        while (1);
    }}

延時函數 和 SysTick 中斷處理函數


static __IO u32 TimingDelay;void delay_ms(__IO u32 nTime){
    TimingDelay = nTime;

    while (TimingDelay != 0);}void TimingDelay_Decrement(void){
    if (TimingDelay != 0x00)
    {
        TimingDelay--;
    }}void SysTick_Handler(void){
    TimingDelay_Decrement();}



關鍵字:STM32  實驗  內核 引用地址:STM32學習(四) SyxTick 實驗

上一篇:STM32學習(三)串口實驗
下一篇:stm32 freertos 任務不能調度(啟動)可能原因

推薦閱讀最新更新時間:2025-04-23 19:57

STM32G4內核性能篇
實現運行Flash零等待周期 指令預取機制 Cache 電源控制與頻率 CCM SRAM CCM SRAM直接連接I-Bus,D-Bus 執行速度最快,完全發揮出170MHz的STM32G4性能 關鍵代碼可放在這個區域(比如電機電流環路代碼) CCM SRAM配置舉例 CoreMark測試 CoreMark是一項測試處理器性能的基準測試 代碼使用C語言寫成,包含:列舉,數學矩陣操作和狀態CRC等運算法則 目前CoreMark已迅速成為測量與比較處理器性能的業界標準基準測試 CoreMark的得分越高,意味著性能越高 CoreMark官網的鏈接地址: https://www.eembc.o
[單片機]
STM32G4<font color='red'>內核</font>性能篇
ARM內核和架構都是什么意思?內核和架構的關系是什么?
ARM產品越來越豐富,命名也越來越多。很多朋友提問: ARM內核和架構都是什么意思?內核和架構的關系是什么?比如ARMv7架構,這個架構指的是什么?小編選給大家整理了幾個專業的概念!希望對嵌友們在選擇設計電路時有所幫助~ 1.ARM內核:從ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,總之不同版本 ARM 有不同的想法。比如為高速度設計的Cortex A8、A9都是ARMv7a 架構;Cortex M3、M4是ARMv7m架構;前者是內核,后者是指令集的架構。 2.ARM的架構都是基于RISC指令集而架構的,而其內核只是實現這一指令集的硬件架構的基礎,Thumb-2指
[單片機]
ARM<font color='red'>內核</font>和架構都是什么意思?<font color='red'>內核</font>和架構的關系是什么?
谷歌第三款移動操作系統Fuchsia放棄Linux內核
騰訊科技訊 據外媒報道,谷歌(微博)從來都沒有想過憑借一款產品征戰市場,它顯然不滿足于Android和Chrome OS,它正在努力開發一款名為“Fuchsia”的開源、實時OS。 這款操作系統曾在去年8月讓世人驚鴻一瞥,但是當時它還只是一個命令行,現在這個神秘項目的用戶界面(UI)終于浮出水面。 與Android和Chrome OS不同,Fuchsia并不是建立在Linux之上,它采用的是谷歌自主研發的微內核“Magenta”。在Fuchsia項目上,谷歌不僅放棄了Linux內核,而且還丟掉了GPL。這款操作系統是按照BSD 3條款、MIT和Apache 2.0進行授權的。放棄Linux內核或許有些令人意外,但是Andr
[手機便攜]
實時內核的電動車電子差速仿真
  伴隨著日益嚴重的大氣污染和能源危機,傳統的交通工具——汽車的發展面臨著一系列的挑戰。傳統的內燃機汽車消耗大量的石油資源,嚴重污染環境。這些無法避免的缺點使人們意識到,以清潔能源為動力的新一代汽車替代傳統汽車的重要性,其中的電動汽車技術已經成為當今汽車領域的前沿課題之一。電動汽車具有零排放,低噪聲,輕便,操控性能好等特點。此外隨著電動輪技術和現場總線技術的發展,在電動車上更容易實現四輪獨立驅動控制,進而為剎車防抱死系統(ABS)、電子穩定系統(ESP)等主動安全系統的實現提供便利。本文介紹一種基于嵌入式實時內核ARTXl66的電子差速算法。   1 基于Ackermann轉向模型的四輪速度關系   根據汽車動力學分析可知,車輛轉
[嵌入式]
Linux-2.6.32.2內核在mini2440上的移植(五)---激活RTC驅動
移植環境 1,主機環境:VMare下CentOS 5.5 ,1G內存。 2,集成開發環境:Elipse IDE 3,編譯編譯環境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,開發板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,參考文章: 嵌入式linux應用開發完全手冊,韋東山,編著。 Mini2440 之Linux 移植開發實戰指南 【1】在初始化文件中加入RTC 設備結構 Linux-2.6.32.2 內核對24
[單片機]
WinCE內核動態加載GPIO端口驅動的設計方法
引言 WinCE下GPIO端口驅動大多采用流接口驅動的方式進行開發,在實現上主要依托Platform Builder編譯環境將驅動程序編譯成動態鏈接庫,并整合到WinCE內核中。但在實際項目的開發中,Platform Builder在驅動程序的開發和涮試上不夠便捷,且在整合動態鏈接庫和WinCE內核時,需要進行繁瑣的參數配置,整個過程較為復雜。筆者以飛凌S3C2440開發板為例,給出在VisualStudio編譯環境中采用動態加載方式來設計GPIO端口驅動程序的思路,較好地改進了目前常用的GPIO端口驅動設計方法,提高了開發效率。 1 GPIO端口的流驅動設計 1.1 過程簡述 關于GPIO端口流驅動的設計原理,大量論文
[單片機]
WinCE<font color='red'>內核</font>動態加載GPIO端口驅動的設計方法
基于ARM7TDMI內核SEP3203處理器的語音信號的軟件實時編解碼的實現
  本文基于東南大學國家專用集成電路系統工程技術研究中心自主研發的ARM7TDMI內核的32位嵌入式SoC——SEP3203處理器,采用G.721標準ADPCM算法,實現了語音信號的軟件實時編解碼,為語音處理應用提供了一種有效的嵌入式解決方案。   1 G.721標準概述   1937年,A.H.Reeves提出脈沖編碼調制(PCM),開創了語音數字化通信的歷程。CCITT在20世紀80年代初,開始研究低于64 Kb/s的非PCM編碼算法,先后制定通過了G.721、G.728、 G.729等編碼標準。其中,G.721協議作為ADPCM的典型算法,不僅具有與PCM近乎相同的語音質量,而且有簡單的算法結構和優良的抗誤碼性能,在衛星
[單片機]
基于ARM7TDMI<font color='red'>內核</font>SEP3203處理器的語音信號的軟件實時編解碼的實現
Octasic公司推出第二代數字信號處理器內核
加拿大蒙特利爾,Marketwire 2010年2月9日電/明通新聞專線/--今日,全球領先的媒體處理和無線解決方案提供商Octasic Inc. 宣布推出其第二代 Opus2 DSP 內核。該內核采用具備高性能、超低功耗,并且專門針對基帶處理和多媒體代碼轉換應用而優化的異構 DSP 架構。為了便于客戶對內核進行評估,Octasic 公司同時推出了一款集成開發環境,該環境支持多標準蜂窩基礎設施應用。    Opus2 內核基于Octasic 公司獨有的異步 Opus DSP 架構而構建,能夠在可完全編程的高性能 DSP 產品中提供最低的功耗。Opus2 的代碼與當前發運的 Opus1 內核完全兼容。Opus1 是一款應
[嵌入式]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 长春市| 六安市| 大余县| 吉木萨尔县| 遂平县| 巴林左旗| 旬邑县| 定襄县| 开化县| 大荔县| 绥德县| 昌江| 南通市| 武清区| 双鸭山市| 新安县| 西林县| 东兰县| 西昌市| 广元市| 田林县| 潜山县| 高安市| 罗源县| 姜堰市| 盐城市| 都安| 安西县| 渭南市| 吉首市| 昌乐县| 宁阳县| 三明市| 哈巴河县| 宜兰县| 桑日县| 确山县| 奉化市| 佛学| 剑河县| 湘乡市|