看门狗实验(顺手喂一下隔壁村狗子)
不介绍了,去隔壁村扒一个过来,就当作喂狗的奖励
(诚实的原图出)为了帮助隔壁村子狗独立,咱就讲下独立看门狗实验
main.c
#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/DOG/dog.h"
#include "./BSP/KEY/key.h"
int main(void)
{
HAL_Init(); /* ³õʼ»¯HAL¿â */
sys_stm32_clock_init(RCC_PLL_MUL9); /* ÉèÖÃʱÖÓ, 72Mhz */
delay_init(72); /* ÑÓʱ³õʼ»¯ */
usart_init(115200); /* ´®¿Ú³õʼ»¯Îª115200 */
led_init(); /* ³õʼ»¯LED */
key_init(); /* ³õʼ»¯°´¼ü */
delay_ms(100); /* ÑÓʱ100msÔÙ³õʼ»¯¿´ÃŹ·,LED0µÄ±ä»¯"¿É¼û" */
iwdg_init(IWDG_PRESCALER_64, 625); /* Ô¤·ÖƵÊýΪ64,ÖØÔØֵΪ625,Òç³öʱ¼äԼΪ1s */
LED0(0); /* µãÁÁLED0(ºìµÆ) */
while (1)
{
if (key_scan(1) == WKUP_PRES) /* Èç¹ûWK_UP°´ÏÂ,Ôòι¹· */
{
iwdg_feed(); /* ι¹· */
}
delay_ms(10);
}
}
dog.c(别问)
#include "./BSP/WDG/wdg.h"
IWDG_HandleTypeDef g_iwdg_handle; /* ¶ÀÁ¢¿´ÃŹ·¾ä±ú */
/**
* @brief ³õʼ»¯¶ÀÁ¢¿´ÃŹ·
* @param prer: IWDG_PRESCALER_4~IWDG_PRESCALER_256,¶ÔÓ¦4~256·ÖƵ
* @arg ·ÖƵÒò×Ó = 4 * 2^prer. µ«×î´óÖµÖ»ÄÜÊÇ256!
* @param rlr: ×Ô¶¯ÖØ×°ÔØÖµ,0~0XFFF.
* @note ʱ¼ä¼ÆËã(´ó¸Å):Tout=((4 * 2^prer) * rlr) / 40 (ms).
* @retval ÎÞ
*/
void iwdg_init(uint8_t prer, uint16_t rlr)
{
g_iwdg_handle.Instance = IWDG;
g_iwdg_handle.Init.Prescaler = prer; /* ÉèÖÃIWDG·ÖƵϵÊý */
g_iwdg_handle.Init.Reload = rlr; /* ÖØ×°ÔØÖµ */
HAL_IWDG_Init(&g_iwdg_handle); /* ³õʼ»¯IWDG²¢Æô¶¯ */
}
/**
* @brief ι¶ÀÁ¢¿´ÃŹ·
* @param ÎÞ
* @retval ÎÞ
*/
void iwdg_feed(void)
{
HAL_IWDG_Refresh(&g_iwdg_handle); /* ÖØ×°ÔؼÆÊýÆ÷ */
}