#HHD32F107# watch dog

本文详细介绍了国产芯片中看门狗定时器的配置过程,包括设置时钟源、分频和定时间隔,以及如何启用和禁用看门狗定时器和复位功能。通过实例代码展示了如何初始化和喂狗操作,旨在促进更多开发者参与国产芯片的开发与应用。
摘要由CSDN通过智能技术生成

国产芯片

声明:本文旨在帮助自己记录芯片的常用配置过程。同时希望分享出自己的使用经验,让更多的人加入国产芯片的开发中。
新的技术往往都来自于模仿。从模仿到超越。芯片国产化的过程需要模仿已经比较成熟的产品,让使用者好入手,增加自己的用户量。

介绍

  • 独立的频率可以设定的看门狗时钟振荡器
  • 看门狗定时器可触发中断或复位
  • 支持低功耗模式

时钟源

可以选择内部低速时钟或者内部高速时钟。
时钟源

看门狗 时钟振荡 控制寄存器 WDTOSCCTRL 0x024

在这里插入图片描述
计算公式

void wdt_clock_set(uint8_t clksrc, uint8_t div)
{
    SYSCON->WDTOSCCTRL.bit.WDTCLKSRC = clksrc; //0 低速时钟, 1 内部时钟40MHz
    SYSCON->WDTOSCCTRL.bit.DIVSEL  = div;      //看门狗时钟分频  40/10/4=1MHz  4是看门狗固定分频
    SYSCON->WDTOSCCTRL.bit.CTRIM = 0;
    SYSCON->WDTOSCCTRL.bit.RTRIM = 0;
}

看门狗寄存器

在这里插入图片描述

MOD

MOD

//hhd_wdt.h
#define WDT_Enable_Timer  (WDT->MOD.bit.WDEN=1)
#define WDT_Disable_Timer (WDT->MOD.bit.WDEN=0)
#define WDT_Enable_RESET  (WDT->MOD.bit.WDRESET = 1)      //enable wdt reset
#define WDT_Disable_RESET (WDT->MOD.bit.WDRESET = 0)      //disable wdt reset
//hhd_wdt.c库函数
//设置常数寄存器TC
void WDT_SetIntervalinTick(uint32_t ticks)
{
	WDT->TC.bit.WDTC=ticks;
	return;
}
//喂狗
void WDT_Feed (void)
{
	WDT->FEED.bit.WDFEED  = 0xAA;
	WDT->FEED.bit.WDFEED  = 0x55;
	return;	
}

软件调用

void wdt_init(void)
{
    /* ----------- Initialize WatchDog-------------------------- ------------ */
    //WDT_Init();
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);
    wdt_clock_set(1, 10);        //wtdclk = 40/10/4 = 1MHz  4是看门狗固定分频
    /* ------------------- Set WachDog time out interval ---------------------*/
    WDT_SetIntervalinTick(2000000); //Reset Interval  time = 2000000/1MHz = 2s。
    WDT_Enable_RESET;
    WDT_Enable_Timer;
    WDT_Feed();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值