色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

基于RT-Thread對(duì)N32L40XCL的看門狗定時(shí)器進(jìn)行測(cè)試

冬至子 ? 來(lái)源:zealsoft ? 作者:zealsoft ? 2023-08-08 17:24 ? 次閱讀

模塊介紹

N32L40XCL 內(nèi)置獨(dú)立看門狗(IWDG)和窗口看門狗(WWDG)定時(shí)器,解決軟件錯(cuò)誤導(dǎo)致的問(wèn)題。看門狗定時(shí)器使用非常靈活,提高了系統(tǒng)的安全性和定時(shí)控制的準(zhǔn)確性。

獨(dú)立看門狗(IWDG)由運(yùn)行在 40KHz 的低速內(nèi)部時(shí)鐘(LSI 時(shí)鐘)驅(qū)動(dòng),在死循環(huán)事件或 MCU 卡死發(fā)生時(shí),它仍然可以運(yùn)行。這可以提供更高的安全級(jí)別、定時(shí)精度和看門狗的靈活性。它可以通過(guò)重置來(lái)解決由于軟件故障引起的系統(tǒng)故障。IWDG 最適合需要看門狗在主應(yīng)用程序之外作為完全獨(dú)立進(jìn)程運(yùn)行但時(shí)序精度限制較低的應(yīng)用程序。

窗口看門狗(WWDG)的時(shí)鐘是由 APB1 時(shí)鐘頻率除以 4096 得到的,通過(guò)時(shí)間窗口的配置來(lái)檢測(cè)程序運(yùn)行是否異常。因此,WWDG 適用于精確定時(shí),常用于監(jiān)控因外部干擾或無(wú)法預(yù)見的邏輯條件導(dǎo)致應(yīng)用程序偏離其正常操作順序的軟件故障。當(dāng) WWDG 遞減計(jì)數(shù)器在達(dá)到窗口寄存器值之前或 WWDG_CTRL.T6 位變?yōu)?0 之后刷新時(shí),系統(tǒng)復(fù)位發(fā)生。

官方WDT驅(qū)動(dòng)實(shí)現(xiàn)的是獨(dú)立看門狗(IWDG)。

開發(fā)軟件
開發(fā)環(huán)境:
RT-Thread Studio 2.2.6
RT-Thread版本:4.0.2
下載工具:pyocd

步驟說(shuō)明

新建工程

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

1.jpg

添加保存后,進(jìn)行編譯,若無(wú)問(wèn)題,則進(jìn)行下一步。

編寫測(cè)試程序

編寫測(cè)試程序如下:

#include
#include
#include
/* defined the LED3 pin: PB5 /
#define LED3_PIN GET_PIN(B, 5)
#define WDT_DEVICE_NAME "wdt" /
看門狗設(shè)備名稱 /
static rt_device_t wdg_dev; /
看門狗設(shè)備句柄 /
static void idle_hook(void)
{
/
在空閑線程的回調(diào)函數(shù)里喂狗 /
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; /
溢出時(shí)間,單位:毫秒 /
char device_name[RT_NAME_MAX];
rt_strncpy(device_name, WDT_DEVICE_NAME, RT_NAME_MAX);
/
根據(jù)設(shè)備名稱查找看門狗設(shè)備,獲取設(shè)備句柄 /
wdg_dev = rt_device_find(device_name);
if (!wdg_dev)
{
rt_kprintf("find %s failed!n", device_name);
return RT_ERROR;
}
/
設(shè)置看門狗溢出時(shí)間 /
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;
}
/
啟動(dòng)看門狗 /
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;
}
/
根據(jù)設(shè)備名稱查找看門狗設(shè)備,獲取設(shè)備句柄 /
wdg_dev = rt_device_find(device_name);
if (!wdg_dev)
{
rt_kprintf("find %s failed!n", device_name);
return RT_ERROR;
}
/
設(shè)置空閑線程回調(diào)函數(shù) */
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);
}
}

代碼驗(yàn)證

程序很簡(jiǎn)單,初始化看門狗后,在空閑線程回調(diào)函數(shù)中不斷喂狗即可。在正式使用看門狗時(shí),取消回調(diào)函數(shù)中的打印。

下載程序后運(yùn)行。

如果終端打印提示“warning: tidle0 stack is close to end of stack address.”,請(qǐng)?jiān)趓tconfig.h文件中搜索IDLE_THREAD_STACK_SIZE,并擴(kuò)大該棧空間。默認(rèn)值是256,可以擴(kuò)大到512。

程序中使用RT_DEVICE_CTRL_WDT_SET_TIM命令設(shè)置超時(shí)時(shí)間,需要注意對(duì)于N32L40XCL開發(fā)板的驅(qū)動(dòng)程序而言,這個(gè)超時(shí)時(shí)間的單位是毫秒,而有些RT-Thread的驅(qū)動(dòng)程序這個(gè)超時(shí)時(shí)間的單位是秒。

此外,這個(gè)超時(shí)時(shí)間不能設(shè)置過(guò)長(zhǎng),因?yàn)檫^(guò)長(zhǎng)會(huì)超過(guò)N32L40XCL寄存器的范圍。對(duì)于默認(rèn)配置,這個(gè)超時(shí)時(shí)間不能超過(guò)376ms。否則程序會(huì)打印如下錯(cuò)誤信息

[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中的喂狗語(yǔ)句,則可以看到程序每3秒重啟一次。

章節(jié)總結(jié)

通過(guò)測(cè)試,可以驗(yàn)證N32L40XCL芯片的WDT驅(qū)動(dòng)程序可以正常運(yùn)行。

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

    關(guān)注

    31

    文章

    5342

    瀏覽量

    120279
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1286

    瀏覽量

    40103
  • MCU控制器
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    6885
  • WWDG
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    5509
  • IWDG
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    5212
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一文詳解看門狗定時(shí)器

    看門狗定時(shí)器由獨(dú)立的1 Mhz 片內(nèi)振蕩驅(qū)動(dòng)。這是VCC = 5V 時(shí)的典型值。請(qǐng)參見特性數(shù)據(jù)以了解其他VCC 電平下的典型值。通過(guò)設(shè)置看門狗定時(shí)
    發(fā)表于 09-02 16:40 ?4000次閱讀
    一文詳解<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>

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

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

    N32L40XCL-STB的I2C測(cè)試步驟

    本人基于 rt-thread studio 對(duì) N32L40XCL 進(jìn)行I2C測(cè)試。具體表現(xiàn)為使用 N32L40XCL 的 I2C1 (PA
    的頭像 發(fā)表于 09-18 17:35 ?1447次閱讀
    <b class='flag-5'>N32L40XCL</b>-STB的I2C<b class='flag-5'>測(cè)試</b>步驟

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

    本文主要介紹怎么用RT-Thread Nano實(shí)現(xiàn)獨(dú)立看門狗IWDT驅(qū)動(dòng),創(chuàng)建一個(gè)喂狗線程,實(shí)現(xiàn)定時(shí)喂狗功能。
    的頭像 發(fā)表于 11-22 11:04 ?2298次閱讀
    <b class='flag-5'>RT-Thread</b> Nano入門:獨(dú)立<b class='flag-5'>看門狗</b>(IWDT)

    內(nèi)部與外部看門狗定時(shí)器的比較

    摘要:本文對(duì)內(nèi)部(集成在處理內(nèi)部)看門狗定時(shí)器(WTD)與外部(基于硬件) WDT的優(yōu)勢(shì)和劣勢(shì)進(jìn)行了對(duì)比。內(nèi)部看門狗便于設(shè)計(jì),但容易失效。
    發(fā)表于 05-02 10:34 ?4656次閱讀

    看門狗定時(shí)器的設(shè)計(jì)、工作原理及看門狗定時(shí)器的操作

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

    看門狗定時(shí)器的作用

    看門狗定時(shí)器(WDT,Watch Dog Timer)是單片機(jī)的一個(gè)組成部分,它實(shí)際上是一個(gè)計(jì)數(shù),一般給看門狗一個(gè)數(shù)字,程序開始運(yùn)行后看門狗
    發(fā)表于 10-20 14:41 ?6704次閱讀

    基于VxWorks的看門狗定高效定時(shí)機(jī)制設(shè)計(jì)實(shí)現(xiàn)

    VxWorks提供了一個(gè)看門狗定時(shí)器(watchDog timer),它由以下四個(gè)函數(shù)維護(hù): wdCreate( ) 創(chuàng)建并初始化一個(gè)看門狗定時(shí)器;wdDelete( ) 終止并
    發(fā)表于 03-06 09:22 ?4813次閱讀
    基于VxWorks的<b class='flag-5'>看門狗</b>定高效<b class='flag-5'>定時(shí)</b>機(jī)制設(shè)計(jì)實(shí)現(xiàn)

    TB3123 - PIC?單片機(jī)的窗口看門狗定時(shí)器

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

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

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

    看門狗定時(shí)器的相關(guān)問(wèn)題和實(shí)驗(yàn)說(shuō)明

    看門狗的作用: 看門狗定時(shí)器是一個(gè)計(jì)數(shù),基本功能是在發(fā)生軟件問(wèn)題和程序跑飛后使系統(tǒng)重新啟動(dòng)。看門狗計(jì)數(shù)
    的頭像 發(fā)表于 10-06 12:59 ?4557次閱讀
    <b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>的相關(guān)問(wèn)題和實(shí)驗(yàn)說(shuō)明

    LPC2294看門狗定時(shí)器

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

    使用高速微型看門狗定時(shí)器

    在惡劣環(huán)境中使用的高速微控制應(yīng)用的設(shè)計(jì)人員將使用看門狗定時(shí)器來(lái)防止軟件失控。DS80C320高速微控制集成了看門狗
    的頭像 發(fā)表于 02-09 11:54 ?941次閱讀

    內(nèi)部和外部看門狗定時(shí)器的比較

    本文比較了內(nèi)部(與微處理集成)和外部(基于硬件)看門狗定時(shí)器(WDT)的優(yōu)缺點(diǎn)。它解釋了內(nèi)部看門狗定時(shí)器易于實(shí)現(xiàn),但容易發(fā)生故障。MAXQ
    的頭像 發(fā)表于 04-03 11:15 ?3047次閱讀

    AXI時(shí)基看門狗定時(shí)器(WDT)概述

    XilinxLogiCORE IP AXI4-Lite時(shí)基看門狗定時(shí)器(WDT)是一個(gè)32位外設(shè),提供32位自由運(yùn)行時(shí)基和看門狗定時(shí)器
    的頭像 發(fā)表于 10-16 11:10 ?1192次閱讀
    AXI時(shí)基<b class='flag-5'>看門狗</b><b class='flag-5'>定時(shí)器</b>(WDT)概述
    主站蜘蛛池模板: 乱叫抽搐流白浆免费视频| 西西人体大胆牲交PP6777| 2021精品高清卡1卡2卡3麻豆| 国产女人毛片| 国产呦精品一区二区三区网站| 看全色黄大色大片免费久黄久| 日韩毛片在线视频| 在线色av| 国产精品第一综合首页| 色内射无码AV| 福利社影院| 色迷迷导航| 国产成人精选免费视频| 日本精品久久久久中文字幕 1| WWW国产色情在线观看APP| 欧美男同gay粗大又长| 99视频福利| 欧美成ee人免费视频| 亚洲欧美成人| 成人人猿泰山| 久久夜色噜噜噜亚洲AV0000| 一一本之道高清手机在线观看 | 久久伊人免费| 在线精品视频免费观看| 久久亚洲黄色| 97超级碰久久久久香蕉人人| 国内精品免费久久影院| 日本超A大片在线观看| YELLOW免费观看2019| 久久在精品线影院精品国产| 与嫂子同居的日子在线观看| 国产乱码免费卡1卡二卡3卡四卡| 女人的选择hd| www.青青草| 色婷婷国产精品视频一区二区| 97无码人妻精品1国产精东影业 | 奇米狠狠一区二区三区| 重口味av| 年轻的女职工在线观看| 成人人观看的免费毛片| 西西人体大胆牲交PP6777|