国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SysTick初始化函數和中斷服務函數詳解

瑞薩嵌入式小百科 ? 來源:野火電子 ? 2025-09-23 09:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

16.3.2.2.3SysTick初始化函數

列表3:代碼清單17?3 SysTick初始化函數

左右滑動查看完整內容

/**
*@brief啟動系統滴答計時器 SysTick
*@paramIT_frequency: 滴答計時器每秒的中斷次數
*@retval無
*/
voidSysTick_Init(uint32_t IT_frequency)
{
/* SystemCoreClock 在這里默認為 200M
* SystemCoreClock / 1000 1ms 中斷一次
* SystemCoreClock / 100000 10us 中斷一次
* SystemCoreClock / 1000000 1us 中斷一次
*/
IT_Period =SystemCoreClock/ IT_frequency;
uint32_t err =SysTick_Config (IT_Period);
assert(err==0);//capture error
}

SysTick_Init函數里面調用了SysTick_Config()這個固件庫函數,通過設置該固件庫函數的形參,就決定了系統定時器經過多少時間就產生一次中斷。

16.3.2.2.4SysTick中斷時間的計算

SysTick定時器的計數器是向下遞減計數的,計數一次的時間TDEC=1/CLKICLK,當重裝載寄存器中的值VALUELOAD減到0的時候,產生中斷,可知中斷一次的時間TINT=VALUELOAD*TDEC=VALUELOAD/CLKICLK,其中CLKICLK=200MHZ。

如果設置VALUELOAD為200,那中斷一次的時間TINT=200/200M=1us。不過1us的中斷沒啥意義,整個程序的重心都花在進出中斷上了,根本沒有時間處理其他的任務。

左右滑動查看完整內容

IT_Period =SystemCoreClock/ IT_frequency;//IT_frequency 為中斷的頻率 (單位為
Hz)
SysTick_Config(IT_Period)//IT_Period 為中斷一次的時間 (單位為時鐘節拍數)

SysTick_Config()的形參我們配置為 IT_Period。例如,當IT_frequency為1000,IT_Period=SystemCoreClock/IT_frequency=200M/1000=200K,從剛剛分析我們知道這個形參的值最終是寫到重裝載寄存器LOAD中的,從而可知我們現在把SysTick定時器中斷一次的時間TINT=200k/200M=1ms。

16.3.2.2.5SysTick定時時間的計算

當設置好中斷時間TINT后,我們可以設置一個變量t,用來記錄進入中斷的次數,那么變量t乘以中斷的時間TINT就可以計算出需要定時的時間。

16.3.2.2.6SysTick定時函數

現在我們定義一個延時函數,類似官方的延時函數“R_BSP_SoftwareDelay”,形參為delay和unit,這兩個形參相乘就得出我們需要的延時時間 TSUM,因此進入中斷的次數 t=TSUM/TINT。

列表4:代碼清單17?4 SysTick延時函數

左右滑動查看完整內容

/**
*@brief延時程序
*@paramdelay: 延時的單位時間
*@paramunit: 延時的單位
*@retval無
*/


voidSysTick_Delay(uint32_t delay, sys_delay_units_t unit)
{
uint32_tSumTime= delay * unit;//計算總延時時間 (單位為時鐘節拍數)
IT_nums =SumTime/IT_Period;
while(IT_nums !=0);
}

SysTick_Delay()中我們等待IT_nums為0,當IT_nums為0的時候表示延時時間到。變量 IT_nums在中斷函數中遞減,即SysTick每進一次中斷即TINT的時間IT_nums遞減一次。

16.3.2.2.7sys_delay_units_t

列表5:代碼清單17?5 sys_delay_units_t

左右滑動查看完整內容

typedefenum
{
SYS_DELAY_UNITS_SECONDS=200000000,///< Requested delay amount?
→is?in?seconds
SYS_DELAY_UNITS_MILLISECONDS?=?200000,?///< Requested delay amount?
→is?in?milliseconds
SYS_DELAY_UNITS_MICROSECONDS?=?200///< Requested delay amount?
→is?in?microseconds
} sys_delay_units_t;

16.3.2.2.8SysTick中斷服務函數

列表6:代碼清單17?6 SysTick中斷服務函數

左右滑動查看完整內容

/**
*@briefSysTick 的中斷服務函數
*@param無
*@retval無
*/
externvoidSysTick_Handler(void);//需要先 extern 聲明一下避免編譯器警告
voidSysTick_Handler(void)
{
if(IT_nums !=0x00)
{
IT_nums--;
}
}

16.3.2.2.9hal_entry入口函數

列表7:

代碼清單17?7由main函數轉入的hal_entry函數

左右滑動查看完整內容

voidhal_entry(void)
{
/*TODO:add your own code here */
R_BSP_PinAccessEnable ();//啟用對 PFS 寄存器的訪問, 因為后面寫 IO 口都用
BSP 內聯函數
SysTick_Init(1000);//初始化系統時鐘, 設置中斷頻率為 1000Hz


while(1)
{
R_BSP_PinWrite (LED_G, BSP_IO_LEVEL_LOW);//點亮綠色 LED
SysTick_Delay(1, SYS_DELAY_UNITS_SECONDS);//延時 1s
R_BSP_PinWrite (LED_G, BSP_IO_LEVEL_HIGH);//熄滅綠色 LED
SysTick_Delay(1, SYS_DELAY_UNITS_SECONDS);//延時 1s
}
#ifBSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}

主函數中初始化了SysTick,然后在一個while循環中以1s的頻率讓LED閃爍。

08d529c8-976a-11f0-8c8f-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    917

    瀏覽量

    43757
  • 定時器
    +關注

    關注

    23

    文章

    3368

    瀏覽量

    123622
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67507
  • Systick
    +關注

    關注

    0

    文章

    67

    瀏覽量

    13968

原文標題:SysTick初始化函數、定時函數、延時函數、中斷服務函數——瑞薩RA系列FSP庫開發實戰指南(42)

文章出處:【微信號:瑞薩嵌入式小百科,微信公眾號:瑞薩嵌入式小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RT-Thread自動初始化詳解

    我們知道,在寫裸機程序時,當我們完成硬件初始化后,就需要在主函數中進行調用。當我們使用RT-Thread后,完全不需要這樣做了,我們可以將硬件等自動初始化。 RT-Thread?自動初始化
    的頭像 發表于 06-25 21:38 ?1.3w次閱讀
    RT-Thread自動<b class='flag-5'>初始化</b><b class='flag-5'>詳解</b>

    自動初始化機制原理詳解

    自動初始化機制是指初始化函數不需要被顯式調用,只需要在函數定義處通過宏定義的方式進行申明,就會在系統啟動過程中被執行。這篇文章就來探索一下其中的奧秘, 簡單理解其原理!
    的頭像 發表于 12-16 09:33 ?1958次閱讀
    自動<b class='flag-5'>初始化</b>機制原理<b class='flag-5'>詳解</b>

    請問哪個函數初始化SysTick_Handler中斷

    比如普通的定時器中斷,通過調用TIM的configuration函數初始化定時器以后,然后就每隔一段時間就能自動進入相應定時器的中斷。那請問是哪個
    發表于 08-14 04:35

    STM32外部中斷端口初始化函數

    ;/******************************************************************************** 函 數 名: exti_init* 函數功能 : 外部中斷2端口初始化
    發表于 08-13 09:27

    配置SYSTICK

    SysTick_Handler中也無需對中斷標志進行清零(參考exit外部中斷服務函數)2.要注意的是關于
    發表于 08-17 06:22

    如何用STM32定時器的初始化函數中斷函數

    如何用STM32定時器的初始化函數中斷函數
    發表于 12-16 06:43

    中斷初始化中斷函數的代碼示例

    前面一節講解了中斷初始化中斷函數,下面是關于中斷的代碼示例。#include #define uint unsigned int#defi
    發表于 01-24 07:09

    USART初始化結構體詳解

    USART 初始化結構體詳解標準庫函數對每個外設都建立了一個初始化結構體,比如USART_InitTypeDef,結構體成員用于設置外設工作參數,并由外設
    發表于 02-22 06:08

    SEED-DEC2812函數

    SEED-DEC2812函數:一、 SEED-DEC2812 系統初始化函數二、 系統PIE 中斷矢量表控制寄存器的操作函數.
    發表于 02-23 15:31 ?40次下載

    SEED-DEC2812初始化函數說明

    SEED-DEC2812系統初始化函數
    發表于 04-13 09:05 ?11次下載
    SEED-DEC2812<b class='flag-5'>初始化</b><b class='flag-5'>函數</b>說明

    UCOS2系統內核講述(二)_ 初始化調用函數

    UCOS2系統內核講述(二)_初始化調用函數
    的頭像 發表于 03-25 09:57 ?2456次閱讀
    UCOS2系統內核講述(二)_ <b class='flag-5'>初始化</b>調用<b class='flag-5'>函數</b>

    CC2530中斷初始化中斷函數

    相關寄存器在cc2530中文數手冊中2.4小節中斷初始化其實中斷初始化可以參照引腳的初始化,即4個寄存器(PxSEL,PxDIR,PxIN
    發表于 11-29 19:06 ?9次下載
    CC2530<b class='flag-5'>中斷</b><b class='flag-5'>初始化</b>和<b class='flag-5'>中斷</b><b class='flag-5'>函數</b>

    STM32—關于SYSTICK系統時鐘的詳解及學習筆記

    SysTick_Handler中也無需對中斷標志進行清零(參考exit外部中斷服務函數)2.要注意的是關于
    發表于 11-30 15:51 ?15次下載
    STM32—關于<b class='flag-5'>SYSTICK</b>系統時鐘的<b class='flag-5'>詳解</b>及學習筆記

    Systick定時器幾個簡單的函數簡介

    函數參數的確定時鐘中斷設置函數SysTick_Config(uint32_t ticks)補充說明:ul后綴表示什么?Systick滴答時鐘
    發表于 12-04 17:06 ?1次下載
    <b class='flag-5'>Systick</b>定時器幾個簡單的<b class='flag-5'>函數</b>簡介

    OP-TEE的內核初始化函數調用

    generic_boot_init_primary函數內容 generic_boot_init_primary函數是OP-TEE建立系統運行環境的入口函數,該函數會進行建立線程運行空間
    的頭像 發表于 11-02 18:18 ?1703次閱讀
    OP-TEE的內核<b class='flag-5'>初始化</b><b class='flag-5'>函數</b>調用