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

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

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

3天內不再提示

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

CHANBAEK ? 來源:MrZhou的技術棧 ? 作者: zzx_mcu ? 2023-11-22 11:04 ? 次閱讀

本文主要介紹怎么用RT-Thread Nano實現獨立看門狗IWDT驅動,創建一個喂狗線程,實現定時喂狗功能。

一、準備工作

1.硬件準備:

STM32F103RCT6(本人使用正點原子的MINI板)

ST-LINK

USB轉TTL模塊

2.軟件準備:

KEIL5 MDK

STM32CubeMX

二、使用STM32CubeMX生成MDK工程

使用STM32CubeMX創建STM32F103RBT6的對應工程,配置時鐘源,使能GPIO、UART、IWDT,配置時鐘樹。

配置預覽效果,配置PA8引腳為推挽輸出,用于LED燈閃爍。

圖片

STM32F103RBT6的最大主頻為72M,配置PLL選擇外部時鐘。

圖片

生成KEIL MDK工程。

圖片

二、添加RT-Thread Nano到工程

打開MDK工程,添加RT-Thread Nano組件,具體可參考官方《基于Keil MDK移植RT-Thread Nano》文檔,鏈接為https://www.rt-thread.org/document/site/tutorial/nano/nano-port-keil/an0039-nano-port-keil/。

主要分為以下幾個步驟:

  1. 注釋掉STM32CubeMX生成的PendSV,HardFault,SysTick。
  2. 將main.c中的板級初始化函數,系統時鐘配置函數移到board.c中,替換RTT的配置。
  3. 移植FinSH,實現rt_hw_console_output()函數。
void rt_hw_console_output(const char *str)
{
   /* empty console output */
   rt_size_t i = 0, size = 0;
   char a = 'r';

//   __HAL_UNLOCK(&huart1);
   rt_enter_critical();
   size = rt_strlen(str);
   for (i = 0; i < size; i++)
    {
       if (*(str + i) == 'n')
       {
           HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);
       }
       HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);
    }
       rt_exit_critical();

}

三、編寫代碼

主要實現兩個功能,LED閃爍和IWDG喂狗。

  1. 在main函數中創建兩個線程。
tid1 = rt_thread_create("iwdg",
                        iwdg_thread_entry,
                        RT_NULL,
                        THREAD_STACK_SIZE,
                        THREAD_PRIORITY,
                        THREAD_TIMESLICE);
if(tid1!= RT_NULL)
{
     rt_thread_startup(tid1);
}


       tid2= rt_thread_create("led",
                              led_thread_entry,
                              RT_NULL,
                              THREAD_STACK_SIZE,
                              THREAD_PRIORITY- 1,
                              THREAD_TIMESLICE);

if(tid2!= RT_NULL)
{
    rt_thread_startup(tid2);
}

2.LED線程

static void led_thread_entry(void *param)
{
       MX_GPIO_Init();
       while(1)
       {
              HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8, GPIO_PIN_RESET);
              rt_thread_mdelay(500);
              HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8, GPIO_PIN_SET);
              rt_thread_mdelay(500);
//            rt_kprintf("hello,ledn");
       }

}

3.IWDG線程

static void iwdg_thread_entry(void *param)
{
       MX_IWDG_Init();
       while(1)
       {
              HAL_IWDG_Refresh(&hiwdg);
              rt_kprintf("feediwdgn");
              rt_thread_mdelay(1000);
       }
}

注意計算iwdg的溢出時間,本文設置的溢出時間約為3.276s,預分頻值為32,看門狗時鐘為40kHz。

計算看門狗溢出時間:

1.方式一

分頻后的頻率:IWDG時鐘/分頻值 = 40KHz/32= 1.25KHz

溢出時間:設置的裝填值/分頻后的頻率 = 4095/1.25KHz = 3276ms=3.276s

2.方式二

用戶手冊的公式給定公式,看門狗溢出時間:

Tout=((4×2^prer)×rlr)/40KHz。

其中Tout 為看門狗溢出時間(單位為ms),prer為看門狗時鐘預分頻值(IWDG_PR值),范圍為0~7;rlr 為看門狗的重裝載值(IWDG_RLR 的值)。

我們在STM32CubeMX中設置分頻值為32,相當(4×2^prer=32),prer = 3,rlr = 4095,故有

Tout=((4×2^prer) ×rlr) /40KHz =((4×2^3) ×4095) /40KHz = 3276ms。

其實也很好理解,看門狗定時器是一個遞減的定時器,從給定的計算值遞減到0時就會產生看門狗復位(如果不喂狗),我們設置的計數值4095,看門狗計一次數的時間為32/40kHz,故總時間就等于計數值*一次計數的時間。

四、下載驗證

現象:

1.看門狗每1s喂一次狗。

圖片

2.led燈以1Hz的頻率閃爍。

圖片

至此,RTT中的獨立看門狗就講解結束。

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

    關注

    4

    文章

    209

    瀏覽量

    32105
  • 線程
    +關注

    關注

    0

    文章

    505

    瀏覽量

    19715
  • RT-Thread
    +關注

    關注

    31

    文章

    1300

    瀏覽量

    40264
  • stm32cubemx
    +關注

    關注

    5

    文章

    283

    瀏覽量

    14871
  • 獨立看門狗
    +關注

    關注

    0

    文章

    24

    瀏覽量

    3863
收藏 人收藏

    評論

    相關推薦

    獨立看門狗(IWDG)的基礎知識

      STM32F10xxx系列內置兩個看門狗(獨立看門狗和窗口看門狗),提供了更高的安全性、時間的精確性和使用的靈活性。兩個看門狗設備(
    發表于 10-19 17:10 ?4298次閱讀
    <b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>(IWDG)的基礎知識

    STM32中的獨立看門狗和窗口看門狗是什么

    在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本上分為兩大類:獨立
    的頭像 發表于 02-20 17:47 ?2798次閱讀
    STM32中的<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>是什么

    怎樣去搭建一種基于RT-Thread實時操作系統的STM32開發環境?

    怎樣去搭建一種基于RT-Thread實時操作系統的STM32開發環境?怎樣去搭建一種IWDT獨立看門狗的環境?如何去編寫IWDT
    發表于 07-27 07:19

    實現獨立看門狗IWDT驅動

    實現獨立看門狗IWDT驅動,創建喂狗線程,實現喂狗功能工程環境:stm32cubeIDE開發板:STM32 F103 ZET6最小系統仿真器:st-link V2cubeIDE 基于eclipse
    發表于 08-03 06:30

    stm32看門狗時間計算 獨立看門狗和窗口看門狗的特性是什么

    本文為您講解STM看門狗時間計算(時限)與頻率計算,獨立看門狗和窗口看門狗的特性、區別與聯系。
    發表于 10-10 10:41 ?8788次閱讀

    什么是stm32看門狗獨立看門狗和窗口看門狗工作原理解析

    stm32有兩個看門狗獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。 獨立
    的頭像 發表于 11-06 11:48 ?2.8w次閱讀
    什么是stm32<b class='flag-5'>看門狗</b>?<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>工作原理解析

    STM32看門狗配置(獨立看門狗IWDG和窗口看門狗WWDG)

    stm32自帶兩個看門狗模塊,獨立看門狗IWDG和窗口看門狗WWDG。看門狗主要作用是可用來檢測和解決由軟件錯誤引起的故障;當計數器達到給定
    發表于 11-09 17:17 ?8465次閱讀
    STM32<b class='flag-5'>看門狗</b>配置(<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>IWDG和窗口<b class='flag-5'>看門狗</b>WWDG)

    MCU獨立看門狗與窗口看門狗的區別

    早期的MCU沒有看門狗,就容易引起有些產品死機了不能重啟工作。為了避免這個問題,后期的MCU在內部集成了看門狗的功能。為了滿足更多使用場景,現在很多MCU都集成了兩個看門狗獨立
    發表于 10-28 20:06 ?8次下載
    MCU<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>與窗口<b class='flag-5'>看門狗</b>的區別

    RT-Thread Nano入門學習筆記

    RT-Thread Nano入門學習筆記
    發表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b><b class='flag-5'>入門</b>學習筆記

    基于 Keil MDK 移植 RT-Thread Nano

    本文介紹如何基于 Keil MDK 移植 RT-Thread Nano ,并以一個 stm32f103 的基礎工程作為示例進行講解。 RT-Thread Nano 已集成在 Keil
    發表于 01-26 17:04 ?16次下載
    基于 Keil MDK 移植 <b class='flag-5'>RT-Thread</b> <b class='flag-5'>Nano</b>

    STM32:獨立看門狗、窗口看門狗的配置

    STM32單片機的看門狗獨立看門狗和窗口看門狗之分,這兩者的工作原理卻完全不同。
    發表于 02-08 16:15 ?18次下載
    STM32:<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>、窗口<b class='flag-5'>看門狗</b>的配置

    窗口看門狗是什么?與獨立看門狗有啥區別?

    STM32有兩個看門狗獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是喂狗的限制時間不同。
    發表于 02-09 10:28 ?9次下載
    窗口<b class='flag-5'>看門狗</b>是什么?與<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>有啥區別?

    STM32中的獨立看門狗和窗口看門狗

    一、前言 在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本上分為兩大類:獨立
    的頭像 發表于 12-22 16:58 ?2191次閱讀

    STM32中的獨立看門狗和窗口看門狗

    在早期的MCU中是沒有看門狗這種東西的,所以產品就很容易出現死機,跑飛的情況。為了避免這種情況的出現,后期的MCU都集成了看門狗的功能。但是目前看門狗發展到今天基本上分為兩大類:獨立
    的頭像 發表于 01-30 14:38 ?1413次閱讀
    STM32中的<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b>和窗口<b class='flag-5'>看門狗</b>

    瑞薩e2studio----獨立看門狗IWDT

    概述本篇文章主要介紹如何使用e2studio對瑞薩進行獨立看門狗IWDT配置,并且配置RTC時鐘產生1s的周期中斷,通過串口打印查看獨立看門狗
    的頭像 發表于 11-26 17:18 ?1589次閱讀
    瑞薩e2studio----<b class='flag-5'>獨立</b><b class='flag-5'>看門狗</b><b class='flag-5'>IWDT</b>
    主站蜘蛛池模板: 久久久久免费精品国产小说| 狠狠干狠狠爱| 亚洲美女视频在线观看| 男女免费视频| 欧美30p| 天天操天天插天天射| 天堂网在线新版www| 欧美午夜在线观看| 在线资源站| 天天干天天干| 国产午夜精品片一区二区三区| 天天做天天爱夜夜大爽完整| 国产色婷婷亚洲| 丁香婷婷亚洲六月综合色| 免费能看的黄色网址| 精品国产一区二区三区国产馆| 欧美成人天天综合在线视色| 四虎影院在线观看免费| 综合色亚洲| 精品国产免费观看一区高清| 亚洲伊人久久大香线蕉啊| 四虎884| 免费看很黄很色裸乳视频| 成年色黄大色黄大片 视频 | 午夜三级在线| 69性xxxxfreexxxx| 国产精品久久久久久久久久妇女 | 亚洲入口| 亚洲欧美色一区二区三区| 中文天堂最新版在线中文 | 亚洲美女激情视频| 欧美一级高清片在线| 国产福利不卡一区二区三区| 国产三级在线观看免费| 五月天狠狠操| 色片免费网站| 国产h视频在线观看网站免费| 在线观看亚洲免费视频| 亚洲人成亚洲人成在线观看| 欧美精品成人a多人在线观看| 国产99色|