在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于RT-Thread對N32L40XCL的看門狗定時器進行測試

冬至子 ? 來源:zealsoft ? 作者:zealsoft ? 2023-08-08 17:24 ? 次閱讀

模塊介紹

N32L40XCL 內置獨立看門狗(IWDG)和窗口看門狗(WWDG)定時器,解決軟件錯誤導致的問題。看門狗定時器使用非常靈活,提高了系統的安全性和定時控制的準確性。

獨立看門狗(IWDG)由運行在 40KHz 的低速內部時鐘(LSI 時鐘)驅動,在死循環事件或 MCU 卡死發生時,它仍然可以運行。這可以提供更高的安全級別、定時精度和看門狗的靈活性。它可以通過重置來解決由于軟件故障引起的系統故障。IWDG 最適合需要看門狗在主應用程序之外作為完全獨立進程運行但時序精度限制較低的應用程序。

窗口看門狗(WWDG)的時鐘是由 APB1 時鐘頻率除以 4096 得到的,通過時間窗口的配置來檢測程序運行是否異常。因此,WWDG 適用于精確定時,常用于監控因外部干擾或無法預見的邏輯條件導致應用程序偏離其正常操作順序的軟件故障。當 WWDG 遞減計數器在達到窗口寄存器值之前或 WWDG_CTRL.T6 位變為 0 之后刷新時,系統復位發生。

官方WDT驅動實現的是獨立看門狗(IWDG)。

開發軟件
開發環境:
RT-Thread Studio 2.2.6
RT-Thread版本:4.0.2
下載工具:pyocd

步驟說明

新建工程

打開RT-Thread settings,使能Watchdog Timer,如下圖所示。

1.jpg

添加保存后,進行編譯,若無問題,則進行下一步。

編寫測試程序

編寫測試程序如下:

#include
#include
#include
/* defined the LED3 pin: PB5 /
#define LED3_PIN GET_PIN(B, 5)
#define WDT_DEVICE_NAME "wdt" /
看門狗設備名稱 /
static rt_device_t wdg_dev; /
看門狗設備句柄 /
static void idle_hook(void)
{
/
在空閑線程的回調函數里喂狗 /
rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
//rt_kprintf("feed the dog!n ");
}
int main(void)
{
/
set LED3 pin mode to output /
rt_pin_mode(LED3_PIN, PIN_MODE_OUTPUT);
rt_err_t ret = RT_EOK;
rt_uint32_t timeout = 3000; /
溢出時間,單位:毫秒 /
char device_name[RT_NAME_MAX];
rt_strncpy(device_name, WDT_DEVICE_NAME, RT_NAME_MAX);
/
根據設備名稱查找看門狗設備,獲取設備句柄 /
wdg_dev = rt_device_find(device_name);
if (!wdg_dev)
{
rt_kprintf("find %s failed!n", device_name);
return RT_ERROR;
}
/
設置看門狗溢出時間 /
ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_SET_TIMEOUT, &timeout);
if (ret != RT_EOK)
{
rt_kprintf("set %s timeout failed!n", device_name);
return RT_ERROR;
}
/
啟動看門狗 /
ret = rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_START, RT_NULL);
if (ret != RT_EOK)
{
rt_kprintf("start %s failed!n", device_name);
return -RT_ERROR;
}
/
根據設備名稱查找看門狗設備,獲取設備句柄 /
wdg_dev = rt_device_find(device_name);
if (!wdg_dev)
{
rt_kprintf("find %s failed!n", device_name);
return RT_ERROR;
}
/
設置空閑線程回調函數 */
rt_thread_idle_sethook(idle_hook);
while (1)
{
rt_pin_write(LED3_PIN, PIN_HIGH);
rt_thread_mdelay(500);
rt_pin_write(LED3_PIN, PIN_LOW);
rt_thread_mdelay(500);
}
}

代碼驗證

程序很簡單,初始化看門狗后,在空閑線程回調函數中不斷喂狗即可。在正式使用看門狗時,取消回調函數中的打印。

下載程序后運行。

如果終端打印提示“warning: tidle0 stack is close to end of stack address.”,請在rtconfig.h文件中搜索IDLE_THREAD_STACK_SIZE,并擴大該棧空間。默認值是256,可以擴大到512。

程序中使用RT_DEVICE_CTRL_WDT_SET_TIM命令設置超時時間,需要注意對于N32L40XCL開發板的驅動程序而言,這個超時時間的單位是毫秒,而有些RT-Thread的驅動程序這個超時時間的單位是秒。

此外,這個超時時間不能設置過長,因為過長會超過N32L40XCL寄存器的范圍。對于默認配置,這個超時時間不能超過376ms。否則程序會打印如下錯誤信息

[W/DBG] wdg set timeout parameter too large, please less than 3276 ms

set wdt timeout failed!

具體的工作原理可以參考下面這段drv_wdt.c的代碼:

case RT_DEVICE_CTRL_WDT_SET_TIMEOUT:
    {
        RT_ASSERT(*(uint16_t *)args != 0);
        reload_value = *(uint16_t *)args;
        if(reload_value >  0xFFF * 32 *1000 / LsiFreq)
        {
            LOG_W("wdg set timeout parameter too large, please less than %d msn", 0xFFF * 32 *1000 / LsiFreq);
            return -RT_EINVAL;
        }
        /* Enable write access to IWDG_PR and IWDG_RLR registers */
        IWDG_WriteConfig(IWDG_WRITE_ENABLE);
        /* IWDG counter clock: LSI/32 */
        IWDG_SetPrescalerDiv(IWDG_PRESCALER_DIV32);
        reload_value = ((uint32_t)reload_value * LsiFreq / 1000) / 32;
        IWDG_CntReload(reload_value);
        IWDG_WriteConfig(IWDG_WRITE_DISABLE);
    }

如果注釋掉上面idle_hook中的喂狗語句,則可以看到程序每3秒重啟一次。

章節總結

通過測試,可以驗證N32L40XCL芯片的WDT驅動程序可以正常運行。

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

    關注

    31

    文章

    5363

    瀏覽量

    121194
  • RT-Thread
    +關注

    關注

    31

    文章

    1305

    瀏覽量

    40388
  • MCU控制器
    +關注

    關注

    0

    文章

    27

    瀏覽量

    6932
  • WWDG
    +關注

    關注

    0

    文章

    19

    瀏覽量

    5536
  • IWDG
    +關注

    關注

    0

    文章

    21

    瀏覽量

    5239
收藏 人收藏

    評論

    相關推薦

    一文詳解看門狗定時器

    看門狗定時器由獨立的1 Mhz 片內振蕩驅動。這是VCC = 5V 時的典型值。請參見特性數據以了解其他VCC 電平下的典型值。通過設置看門狗定時
    發表于 09-02 16:40 ?4097次閱讀
    一文詳解<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    STM32看門狗定時器的工作原理和作用 看門狗定時器的特性

    看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數,一般來說都是向下計數的,給看門狗一個數字,程序開始運行后
    的頭像 發表于 07-27 16:30 ?6336次閱讀
    STM32<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的工作原理和作用 <b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的特性

    N32L40XCL-STB的I2C測試步驟

    本人基于 rt-thread studio 對 N32L40XCL 進行I2C測試。具體表現為使用 N32L40XCL 的 I2C1 (PA
    的頭像 發表于 09-18 17:35 ?1527次閱讀
    <b class='flag-5'>N32L40XCL</b>-STB的I2C<b class='flag-5'>測試</b>步驟

    RT-Thread Nano入門:獨立看門狗(IWDT)

    本文主要介紹怎么用RT-Thread Nano實現獨立看門狗IWDT驅動,創建一個喂狗線程,實現定時喂狗功能。
    的頭像 發表于 11-22 11:04 ?2488次閱讀
    <b class='flag-5'>RT-Thread</b> Nano入門:獨立<b class='flag-5'>看門狗</b>(IWDT)

    內部與外部看門狗定時器的比較

    摘要:本文對內部(集成在處理內部)看門狗定時器(WTD)與外部(基于硬件) WDT的優勢和劣勢進行了對比。內部看門狗便于設計,但容易失效。
    發表于 05-02 10:34 ?4684次閱讀

    看門狗定時器的設計、工作原理及看門狗定時器的操作

    看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數,一般給看門狗一個數字,程序開始運行后看門狗
    發表于 05-23 09:14 ?7823次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的設計、工作原理及<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的操作

    看門狗定時器的作用

    看門狗定時器(WDT,Watch Dog Timer)是單片機的一個組成部分,它實際上是一個計數,一般給看門狗一個數字,程序開始運行后看門狗
    發表于 10-20 14:41 ?6739次閱讀

    基于VxWorks的看門狗定高效定時機制設計實現

    VxWorks提供了一個看門狗定時器(watchDog timer),它由以下四個函數維護: wdCreate( ) 創建并初始化一個看門狗定時器;wdDelete( ) 終止并
    發表于 03-06 09:22 ?4872次閱讀
    基于VxWorks的<b class='flag-5'>看門狗</b>定高效<b class='flag-5'>定時</b>機制設計實現

    TB3123 - PIC?單片機的窗口看門狗定時器

    窗口看門狗定時器(Windowed Watchdog Timer,WWDT)是PIC單片機的增強型看門狗定時器。該定時器是PIC單片機現有
    發表于 03-26 14:35 ?0次下載
    TB3123 - PIC?單片機的窗口<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    什么是看門狗定時器?為何看門狗定時器如此重要?

    的MCU故障可能無意中使看門狗定時器喪失功用,因此整合看門狗可能不會總是按預期的方式運作。同樣地,雖然軟件以內部看門狗能夠偵測所有凍結或停機的方式編寫,但是,采取額外的步驟以冗余方式監
    的頭像 發表于 08-29 08:13 ?2.4w次閱讀
    什么是<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>?為何<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>如此重要?

    看門狗定時器的相關問題和實驗說明

    看門狗的作用: 看門狗定時器是一個計數,基本功能是在發生軟件問題和程序跑飛后使系統重新啟動。看門狗計數
    的頭像 發表于 10-06 12:59 ?4657次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>的相關問題和實驗說明

    LPC2294看門狗定時器

    導致復位/中斷5.指示看門狗復位的標志6.可編程的32位定時器與內部預分頻。7.可選擇時間段,從(T PCLK x 256 x 4)到(TPCLK x 232 x4)應用看門狗的目的是在微控制
    發表于 12-04 10:36 ?8次下載
    LPC2294<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>

    使用高速微型看門狗定時器

    在惡劣環境中使用的高速微控制應用的設計人員將使用看門狗定時器來防止軟件失控。DS80C320高速微控制集成了看門狗
    的頭像 發表于 02-09 11:54 ?985次閱讀

    內部和外部看門狗定時器的比較

    本文比較了內部(與微處理集成)和外部(基于硬件)看門狗定時器(WDT)的優缺點。它解釋了內部看門狗定時器易于實現,但容易發生故障。MAXQ
    的頭像 發表于 04-03 11:15 ?3171次閱讀

    抄作業!看門狗定時器必備知識

    Air201在模組內部集成了硬件看門狗,今天就一起來聊聊~ 本文將帶你了解看門狗的工作原理、應用架構、定時時間設置、軟硬件看門狗的區別,以及看門狗
    的頭像 發表于 12-30 14:44 ?280次閱讀
    抄作業!<b class='flag-5'>看門狗</b><b class='flag-5'>定時器</b>必備知識
    主站蜘蛛池模板: 美国色网站 | 日本妞xxxxxxxxx69 | 很黄很污的视频网站 | 天天操天天干天天爱 | 美国69bj | 亚洲欧洲色 | 一级视频在线观看 | 亚洲国产精品婷婷久久久久 | 四虎欧美在线观看免费 | 美国bj69video18 | 一级做a爱片久久毛片 | 色妹子在线| 天天狠天天插 | 足控免费视频xxav | 伊人狼人在线 | 国产精品一级香蕉一区 | 巨乳色最新网址 | 伊人久久综合成人亚洲 | 风流护士 | 老汉影视永久免费视频 | 日韩毛片在线影视 | 李老汉和小花的性生生活 | 六月丁香色婷婷 | 女人精aaaa片一级毛片女女 | 91md天美精东蜜桃传媒在线 | 免费大片a一级一级 | 亚洲综合日韩欧美一区二区三 | 不卡视频一区 | 色女人在线视频 | 九九全国免费视频 | 日日噜噜爽爽狠狠视频 | 色图综合网 | 97色在线 | 一级免费看 | 天堂网在线最新版www | 伊人久久大香线蕉综合高清 | 夜夜艹 | 欧美性幼 | 天天操天天干天天干 | 99精品在免费线视频 | 免费看啪 |