亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? watchdog.c

?? KEIL驅動 各方面各 你的看法女士的煩惱 方看到你
?? C
?? 第 1 頁 / 共 2 頁
字號:
//
//*****************************************************************************
unsigned long
WatchdogReloadGet(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Get the load register.
    //
    return(HWREG(ulBase + WDT_O_LOAD));
}

//*****************************************************************************
//
//! Gets the current watchdog timer value.
//!
//! \param ulBase is the base address of the watchdog timer module.
//!
//! This function reads the current value of the watchdog timer.
//!
//! \return Returns the current value of the watchdog timer.
//
//*****************************************************************************
unsigned long
WatchdogValueGet(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Get the current watchdog timer register value.
    //
    return(HWREG(ulBase + WDT_O_VALUE));
}

//*****************************************************************************
//
//! Registers an interrupt handler for watchdog timer interrupt.
//!
//! \param ulBase is the base address of the watchdog timer module.
//! \param pfnHandler is a pointer to the function to be called when the
//! watchdog timer interrupt occurs.
//!
//! This function does the actual registering of the interrupt handler.  This
//! will enable the global interrupt in the interrupt controller; the watchdog
//! timer interrupt must be enabled via WatchdogEnable().  It is the interrupt
//! handler's responsibility to clear the interrupt source via
//! WatchdogIntClear().
//!
//! \sa IntRegister() for important information about registering interrupt
//! handlers.
//!
//! \return None.
//
//*****************************************************************************
void
WatchdogIntRegister(unsigned long ulBase, void (*pfnHandler)(void))
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Register the interrupt handler.
    //
    IntRegister(INT_WATCHDOG, pfnHandler);

    //
    // Enable the watchdog timer interrupt.
    //
    IntEnable(INT_WATCHDOG);
}

//*****************************************************************************
//
//! Unregisters an interrupt handler for the watchdog timer interrupt.
//!
//! \param ulBase is the base address of the watchdog timer module.
//!
//! This function does the actual unregistering of the interrupt handler.  This
//! function will clear the handler to be called when a watchdog timer
//! interrupt occurs.  This will also mask off the interrupt in the interrupt
//! controller so that the interrupt handler no longer is called.
//!
//! \sa IntRegister() for important information about registering interrupt
//! handlers.
//!
//! \return None.
//
//*****************************************************************************
void
WatchdogIntUnregister(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Disable the interrupt.
    //
    IntDisable(INT_WATCHDOG);

    //
    // Unregister the interrupt handler.
    //
    IntUnregister(INT_WATCHDOG);
}

//*****************************************************************************
//
//! Enables the watchdog timer interrupt.
//!
//! \param ulBase is the base address of the watchdog timer module.
//!
//! Enables the watchdog timer interrupt.
//!
//! \note This function will have no effect if the watchdog timer has
//! been locked.
//!
//! \sa WatchdogLock(), WatchdogUnlock(), WatchdogEnable()
//!
//! \return None.
//
//*****************************************************************************
void
WatchdogIntEnable(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Enable the watchdog interrupt.
    //
    HWREG(ulBase + WDT_O_CTL) |= WDT_CTL_INTEN;
}

//*****************************************************************************
//
//! Gets the current watchdog timer interrupt status.
//!
//! \param ulBase is the base address of the watchdog timer module.
//! \param bMasked is \b false if the raw interrupt status is required and
//! \b true if the masked interrupt status is required.
//!
//! This returns the interrupt status for the watchdog timer module.  Either
//! the raw interrupt status or the status of interrupt that is allowed to
//! reflect to the processor can be returned.
//!
//! \return Returns the current interrupt status, where a 1 indicates that the
//! watchdog interrupt is active, and a 0 indicates that it is not active.
//
//*****************************************************************************
unsigned long
WatchdogIntStatus(unsigned long ulBase, tBoolean bMasked)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Return either the interrupt status or the raw interrupt status as
    // requested.
    //
    if(bMasked)
    {
        return(HWREG(ulBase + WDT_O_MIS));
    }
    else
    {
        return(HWREG(ulBase + WDT_O_RIS));
    }
}

//*****************************************************************************
//
//! Clears the watchdog timer interrupt.
//!
//! \param ulBase is the base address of the watchdog timer module.
//!
//! The watchdog timer interrupt source is cleared, so that it no longer
//! asserts.
//!
//! \note Since there is a write buffer in the Cortex-M3 processor, it may take
//! several clock cycles before the interrupt source is actually cleared.
//! Therefore, it is recommended that the interrupt source be cleared early in
//! the interrupt handler (as opposed to the very last action) to avoid
//! returning from the interrupt handler before the interrupt source is
//! actually cleared.  Failure to do so may result in the interrupt handler
//! being immediately reentered (since NVIC still sees the interrupt source
//! asserted).
//!
//! \return None.
//
//*****************************************************************************
void
WatchdogIntClear(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Clear the interrupt source.
    //
    HWREG(ulBase + WDT_O_ICR) = WDT_INT_TIMEOUT;
}

//*****************************************************************************
//
//! Enables stalling of the watchdog timer during debug events.
//!
//! \param ulBase is the base address of the watchdog timer module.
//!
//! This function allows the watchdog timer to stop counting when the processor
//! is stopped by the debugger.  By doing so, the watchdog is prevented from
//! expiring (typically almost immediately from a human time perspective) and
//! resetting the system (if reset is enabled).  The watchdog will instead
//! expired after the appropriate number of processor cycles have been executed
//! while debugging (or at the appropriate time after the processor has been
//! restarted).
//!
//! \return None.
//
//*****************************************************************************
void
WatchdogStallEnable(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Enable timer stalling.
    //
    HWREG(ulBase + WDT_O_TEST) |= WDT_TEST_STALL;
}

//*****************************************************************************
//
//! Disables stalling of the watchdog timer during debug events.
//!
//! \param ulBase is the base address of the watchdog timer module.
//!
//! This function disables the debug mode stall of the watchdog timer.  By
//! doing so, the watchdog timer continues to count regardless of the processor
//! debug state.
//!
//! \return None.
//
//*****************************************************************************
void
WatchdogStallDisable(unsigned long ulBase)
{
    //
    // Check the arguments.
    //
    ASSERT(ulBase == WATCHDOG_BASE);

    //
    // Disable timer stalling.
    //
    HWREG(ulBase + WDT_O_TEST) &= ~(WDT_TEST_STALL);
}

//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//*****************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品精品欲导航| 色婷婷精品大在线视频| 亚洲成人av电影在线| 亚洲视频小说图片| 国产精品成人免费| 成人欧美一区二区三区小说| 欧美韩国一区二区| 国产精品国产三级国产专播品爱网| 久久综合久久综合久久综合| 久久亚洲综合色| 国产日韩精品一区二区三区在线| 久久婷婷国产综合国色天香| 精品欧美一区二区久久| 精品国产不卡一区二区三区| 久久精品欧美日韩精品| 国产精品三级久久久久三级| 亚洲欧美一区二区三区极速播放| 亚洲人成亚洲人成在线观看图片| 亚洲色图第一区| 日韩av一区二区三区四区| 蜜臀av一区二区在线免费观看| 麻豆精品久久久| 风间由美中文字幕在线看视频国产欧美| 国产一区二区三区久久久| 成人av在线播放网站| 欧美性极品少妇| 久久这里只有精品6| 最新高清无码专区| 蜜臀av性久久久久蜜臀av麻豆| 精品一二三四区| 91美女片黄在线观看| 欧美日本国产视频| 久久久久久久综合狠狠综合| 亚洲欧美日韩在线不卡| 男女男精品视频网| 91一区在线观看| 日韩一级大片在线观看| 亚洲欧洲av另类| 麻豆精品在线看| 一本到高清视频免费精品| 日韩一区二区三区视频| 综合自拍亚洲综合图不卡区| 奇米精品一区二区三区在线观看| 国产成人av网站| 7878成人国产在线观看| 自拍偷拍亚洲欧美日韩| 激情综合色播五月| 欧美群妇大交群中文字幕| 国产精品麻豆久久久| 蜜桃视频一区二区三区| 欧美在线不卡视频| 国产精品你懂的在线| 久久99蜜桃精品| 91精品国产综合久久久蜜臀图片| 国产精品久久午夜夜伦鲁鲁| 麻豆精品视频在线观看免费 | 欧美一级二级三级乱码| 国产精品网站在线观看| 韩国欧美国产1区| 日韩午夜在线播放| 一区二区三区四区在线| av电影在线不卡| 国产欧美一区二区精品性| 久久福利视频一区二区| 6080yy午夜一二三区久久| 亚洲综合视频在线观看| 一本久久综合亚洲鲁鲁五月天 | 欧美卡1卡2卡| 亚洲精品乱码久久久久久久久| 国产精品白丝av| 久久久综合精品| 久久99精品国产麻豆不卡| 日韩丝袜美女视频| 美腿丝袜亚洲一区| 精品成人私密视频| 精品一区二区三区在线播放| 日韩一区二区三区在线| 日韩高清在线不卡| 精品理论电影在线| 国产精品99久久不卡二区| 国产人成亚洲第一网站在线播放 | 国产成人精品午夜视频免费| 26uuu国产电影一区二区| 国产一区在线看| 国产日韩精品一区| 97久久精品人人做人人爽| 一区二区三区四区不卡在线| 一本大道综合伊人精品热热| 亚洲一区在线视频观看| 91精品在线免费| 久久国产日韩欧美精品| 国产婷婷色一区二区三区四区| 国产综合色精品一区二区三区| 久久色视频免费观看| 成人精品视频网站| 亚洲午夜在线视频| 欧美一区二区三区不卡| 国产一区二区三区四区五区美女 | 欧美伊人久久久久久久久影院| 亚洲欧美自拍偷拍色图| 欧美日韩综合在线免费观看| 麻豆视频观看网址久久| 国产精品久久精品日日| 欧美三级乱人伦电影| 麻豆精品一区二区三区| 成人免费小视频| 日韩一区二区在线免费观看| 成人国产亚洲欧美成人综合网| 亚洲第一福利视频在线| 国产亚洲美州欧州综合国| 日本福利一区二区| 国产精品 欧美精品| 亚洲观看高清完整版在线观看| 日韩欧美电影在线| 91在线精品一区二区三区| 日本系列欧美系列| 亚洲精品国产成人久久av盗摄 | 中文字幕日韩精品一区| 欧美二区三区的天堂| 成人黄色小视频在线观看| 日韩黄色小视频| 亚洲欧美经典视频| 久久综合色之久久综合| 欧美日韩成人综合天天影院 | 成人久久18免费网站麻豆| 天天色综合成人网| 18成人在线观看| 国产亚洲1区2区3区| 欧美一区二区黄色| 欧美在线一区二区三区| 成人小视频免费观看| 另类中文字幕网| 日韩精品亚洲专区| 亚洲最新在线观看| 亚洲视频每日更新| 国产日韩欧美综合在线| 欧美一区二区三区视频在线观看| 91老师片黄在线观看| 成人一级片在线观看| 国产原创一区二区| 久久99在线观看| 久久国产麻豆精品| 另类欧美日韩国产在线| 日韩精品免费专区| 亚洲成人av一区二区三区| 亚洲一线二线三线久久久| 中文字幕一区二区三区精华液 | 亚洲美女一区二区三区| 国产精品美女www爽爽爽| 中文字幕不卡三区| 中文字幕精品一区| 国产精品激情偷乱一区二区∴| 国产喂奶挤奶一区二区三区| 久久精品人人做人人爽97| 国产视频一区二区在线| 国产亚洲精品资源在线26u| 国产欧美日韩一区二区三区在线观看| 欧美成人精品二区三区99精品| 日韩一区二区在线观看| 欧美精品一区二区不卡| 国产午夜精品一区二区三区四区 | 中文字幕在线一区免费| 国产精品护士白丝一区av| 亚洲欧美综合在线精品| |精品福利一区二区三区| 一区二区三区自拍| 亚洲v日本v欧美v久久精品| 理论电影国产精品| 成人中文字幕合集| 91官网在线免费观看| 欧美日韩国产三级| 亚洲精品一区二区三区精华液 | www国产成人| 国产精品久久久久影院| 国产精品久久久久久久久免费桃花| 国产精品久久免费看| 亚洲成人av福利| 韩国精品在线观看| 色香色香欲天天天影视综合网| 欧美日韩久久久久久| 2023国产精品自拍| 亚洲欧洲一区二区在线播放| 亚洲成人一区二区在线观看| 极品美女销魂一区二区三区| 成人性生交大片免费看视频在线 | 午夜精品在线看| 国产69精品久久久久毛片| 欧美最新大片在线看| 久久综合av免费| 亚洲国产中文字幕| 国产精品影音先锋| 欧美日韩一区二区不卡| 久久久久久久久久久电影| 亚洲成在线观看| 99re热这里只有精品视频| 日韩一区二区免费高清| 亚洲欧洲99久久| 国产福利不卡视频| 欧美一区二区三区播放老司机| 国产午夜三级一区二区三|