18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

SysTick初始化函數(shù)和中斷服務(wù)函數(shù)詳解

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

掃碼添加小助手

加入工程師交流群

16.3.2.2.3SysTick初始化函數(shù)

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

左右滑動(dòng)查看完整內(nèi)容

/**
*@brief啟動(dòng)系統(tǒng)滴答計(jì)時(shí)器 SysTick
*@paramIT_frequency: 滴答計(jì)時(shí)器每秒的中斷次數(shù)
*@retval無
*/
voidSysTick_Init(uint32_t IT_frequency)
{
/* SystemCoreClock 在這里默認(rèn)為 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函數(shù)里面調(diào)用了SysTick_Config()這個(gè)固件庫函數(shù),通過設(shè)置該固件庫函數(shù)的形參,就決定了系統(tǒng)定時(shí)器經(jīng)過多少時(shí)間就產(chǎn)生一次中斷。

16.3.2.2.4SysTick中斷時(shí)間的計(jì)算

SysTick定時(shí)器的計(jì)數(shù)器是向下遞減計(jì)數(shù)的,計(jì)數(shù)一次的時(shí)間TDEC=1/CLKICLK,當(dāng)重裝載寄存器中的值VALUELOAD減到0的時(shí)候,產(chǎn)生中斷,可知中斷一次的時(shí)間TINT=VALUELOAD*TDEC=VALUELOAD/CLKICLK,其中CLKICLK=200MHZ。

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

左右滑動(dòng)查看完整內(nèi)容

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

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

16.3.2.2.5SysTick定時(shí)時(shí)間的計(jì)算

當(dāng)設(shè)置好中斷時(shí)間TINT后,我們可以設(shè)置一個(gè)變量t,用來記錄進(jìn)入中斷的次數(shù),那么變量t乘以中斷的時(shí)間TINT就可以計(jì)算出需要定時(shí)的時(shí)間。

16.3.2.2.6SysTick定時(shí)函數(shù)

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

列表4:代碼清單17?4 SysTick延時(shí)函數(shù)

左右滑動(dòng)查看完整內(nèi)容

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


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

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

16.3.2.2.7sys_delay_units_t

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

左右滑動(dòng)查看完整內(nèi)容

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中斷服務(wù)函數(shù)

列表6:代碼清單17?6 SysTick中斷服務(wù)函數(shù)

左右滑動(dòng)查看完整內(nèi)容

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

16.3.2.2.9hal_entry入口函數(shù)

列表7:

代碼清單17?7由main函數(shù)轉(zhuǎn)入的hal_entry函數(shù)

左右滑動(dòng)查看完整內(nèi)容

voidhal_entry(void)
{
/*TODO:add your own code here */
R_BSP_PinAccessEnable ();//啟用對 PFS 寄存器的訪問, 因?yàn)楹竺鎸?IO 口都用
BSP 內(nèi)聯(lián)函數(shù)
SysTick_Init(1000);//初始化系統(tǒng)時(shí)鐘, 設(shè)置中斷頻率為 1000Hz


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

主函數(shù)中初始化了SysTick,然后在一個(gè)while循環(huán)中以1s的頻率讓LED閃爍。

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

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

    關(guān)注

    5

    文章

    911

    瀏覽量

    43372
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3349

    瀏覽量

    121137
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4401

    瀏覽量

    66451
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    66

    瀏覽量

    13816

原文標(biāo)題:SysTick初始化函數(shù)、定時(shí)函數(shù)、延時(shí)函數(shù)、中斷服務(wù)函數(shù)——瑞薩RA系列FSP庫開發(fā)實(shí)戰(zhàn)指南(42)

文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    RT-Thread自動(dòng)初始化詳解

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

    自動(dòng)初始化機(jī)制原理詳解

    自動(dòng)初始化機(jī)制是指初始化函數(shù)不需要被顯式調(diào)用,只需要在函數(shù)定義處通過宏定義的方式進(jìn)行申明,就會(huì)在系統(tǒng)啟動(dòng)過程中被執(zhí)行。這篇文章就來探索一下其中的奧秘, 簡單理解其原理!
    的頭像 發(fā)表于 12-16 09:33 ?1634次閱讀
    自動(dòng)<b class='flag-5'>初始化</b>機(jī)制原理<b class='flag-5'>詳解</b>

    請問哪個(gè)函數(shù)初始化SysTick_Handler中斷?

    比如普通的定時(shí)器中斷,通過調(diào)用TIM的configuration函數(shù)初始化定時(shí)器以后,然后就每隔一段時(shí)間就能自動(dòng)進(jìn)入相應(yīng)定時(shí)器的中斷。那請問是哪個(gè)
    發(fā)表于 08-14 04:35

    STM32外部中斷端口初始化函數(shù)

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

    配置SYSTICK

    SysTick_Handler中也無需對中斷標(biāo)志進(jìn)行清零(參考exit外部中斷服務(wù)函數(shù))2.要注意的是關(guān)于
    發(fā)表于 08-17 06:22

    如何用STM32定時(shí)器的初始化函數(shù)中斷函數(shù)?

    如何用STM32定時(shí)器的初始化函數(shù)中斷函數(shù)?
    發(fā)表于 12-16 06:43

    中斷初始化中斷函數(shù)的代碼示例

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

    USART初始化結(jié)構(gòu)體詳解

    USART 初始化結(jié)構(gòu)體詳解標(biāo)準(zhǔn)庫函數(shù)對每個(gè)外設(shè)都建立了一個(gè)初始化結(jié)構(gòu)體,比如USART_InitTypeDef,結(jié)構(gòu)體成員用于設(shè)置外設(shè)工作參數(shù),并由外設(shè)
    發(fā)表于 02-22 06:08

    SEED-DEC2812函數(shù)

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

    SEED-DEC2812初始化函數(shù)說明

    SEED-DEC2812系統(tǒng)初始化函數(shù)。
    發(fā)表于 04-13 09:05 ?11次下載
    SEED-DEC2812<b class='flag-5'>初始化</b><b class='flag-5'>函數(shù)</b>說明

    UCOS2系統(tǒng)內(nèi)核講述(二)_ 初始化調(diào)用函數(shù)

    UCOS2系統(tǒng)內(nèi)核講述(二)_初始化調(diào)用函數(shù)
    的頭像 發(fā)表于 03-25 09:57 ?2205次閱讀
    UCOS2系統(tǒng)內(nèi)核講述(二)_ <b class='flag-5'>初始化</b>調(diào)用<b class='flag-5'>函數(shù)</b>

    CC2530中斷初始化中斷函數(shù)

    相關(guān)寄存器在cc2530中文數(shù)手冊中2.4小節(jié)中斷初始化其實(shí)中斷初始化可以參照引腳的初始化,即4個(gè)寄存器(PxSEL,PxDIR,PxIN
    發(fā)表于 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'>函數(shù)</b>

    STM32—關(guān)于SYSTICK系統(tǒng)時(shí)鐘的詳解及學(xué)習(xí)筆記

    SysTick_Handler中也無需對中斷標(biāo)志進(jìn)行清零(參考exit外部中斷服務(wù)函數(shù))2.要注意的是關(guān)于
    發(fā)表于 11-30 15:51 ?15次下載
    STM32—關(guān)于<b class='flag-5'>SYSTICK</b>系統(tǒng)時(shí)鐘的<b class='flag-5'>詳解</b>及學(xué)習(xí)筆記

    Systick定時(shí)器幾個(gè)簡單的函數(shù)簡介

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

    OP-TEE的內(nèi)核初始化函數(shù)調(diào)用

    generic_boot_init_primary函數(shù)內(nèi)容 generic_boot_init_primary函數(shù)是OP-TEE建立系統(tǒng)運(yùn)行環(huán)境的入口函數(shù),該函數(shù)會(huì)進(jìn)行建立線程運(yùn)行空間
    的頭像 發(fā)表于 11-02 18:18 ?1408次閱讀
    OP-TEE的內(nèi)核<b class='flag-5'>初始化</b><b class='flag-5'>函數(shù)</b>調(diào)用