.h文件如下:
#ifndef __WWDG_H
#define __WWDG_H
#include "stm8s.h"
void Delay();
void WWDG_Configuration(void) ;
void Refresh_WWDG_Window(void);
#endif
.c文件如下:
#include "wwdg.h"
#include "stm8s_wwdg.h"
#define CounterInit 0x7f
#define window 0x77
void Delay() //延迟函数
{
int i,j;
for(i=0;i<100;i++)
{
for(j=0;j<1000;j++);
}
}
void WWDG_Configuration(void)
{
/* WWDG Configuration */
/* Watchdog Window= 0x7F step to 0x3F step
= (0x7F-0x3F) * 1 step
= 64 * 1 step
= 64 * (12288/2Mhz)
= 393.216ms
*/
/* Allowed Window = (0x7F-window) * 1 step
= (0x7F-0x77) * 1 step
= 7 * 1 step
= 7 * (12288/2Mhz)
= 43.008ms
*/
/* So the non allowed window starts from 0.0ms to 43.008ms
and the alowed window starts from 43.008ms to 393.216ms */
WWDG_Init(CounterInit,window);
}
void Refresh_WWDG_Window(void)//喂狗
{
u8 CounterValue;
CounterValue = (u8)(WWDG_GetCounter() & 0x7F);
if(CounterValue < window)
{
WWDG_SetCounter(CounterInit);
}
}
关键字:STM8S 窗口看门狗
引用地址:
【STM8S】 窗口看门狗
推荐阅读最新更新时间:2024-11-10 12:45
stm8s开发(五) TIMER的使用:定时!
STM8S提供三种类型的TIM 定时器:高级控制型(TIM1)、通用型(TIM2/TIM3/TIM5)和基本型定时器(TIM4/TIM6)。它们虽有不同功能但都基于共同的架构。此共同的架构使得采用各个定时器来设计应用变得非常容易与方便(相同的寄存器映射,相同的基本功能)。 使用定时可以确定一个时间片,方便控制发送速率,采样速率,等等一些对时间要求比较高的任务,而这些操作可以放入定时器中断里面执行。这次的例子,定时1s,让LED灯翻转一次,达到2s闪烁一次的效果。由于定时操作简单,我们使用基本定时器:TIMER4 void Init_Timer4(void) { //128分频 256计数,在16MHz下是2
[单片机]
stm8s_iwdg(独立看门狗)
//内部时钟源128Khz,硬件2分频=64khz 这里写代码片 IWDG_Initializes(); //初始化 IWDG_ReloadCounter(); //喂狗(重载计数值) 初始化流程: void IWDG_Initializes(void) { IWDG_Enable(); //使能看门狗 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //允许写分频值和重载值 IWDG_SetPrescaler(IWDG_Prescaler_256); //分频值 IWDG_SetReload(250);
[单片机]
stm8s开发(九) EEPROM的使用:使用EEPROM存储数据!
EEPROM是单片机应用系统中经常会用到的存储器,它主要用来保存一些掉电后需要保持不变的数据。在以前的单片机系统中,通常都是在单片机外面再扩充一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。现在,很多单片机的公司都推出了集成有小容量EEPROM的单片机,这样就方便了使用,降低了成本,提高了可靠性。 STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为特色的是,在STM8单片机中,对EEPROM的访问就象常规的RAM一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。 为了管理方便,定义EEPROM的地址 #define EP_H
[单片机]
STM8S UART串口使用中断收发数据
原来调过STM8L的串口,逻辑简单,中断清晰,换成STM8S105K4后,虽然也是用STD库,除去函数名、宏名等语言层面的差异以外,中断处理方面也有些不一样的地方,特此记之。 和此篇【STM8L USART串口使用】结构相同,也是中断异步模式,但为调用方便起见,在调用层面改为同步。 (STM8S105K的MCU下,RX为PD6,RX为PD5。) 使用方面,感觉主要困扰就是中断名、使用场合和时机不明确、不清晰,这一点不如STM8L的定义清晰。 举例而言,开关中断用UART2_IT_RXNE_OR,清中断则用UART2_IT_RXNE。不能开关时用UART2_IT_RXNE,也不能清中断时用UART2_IT_RXNE_OR,否则S
[单片机]
STM32F4的窗口看门狗WWDG
不管是开发指南,中英文参考手册,还是其他啥!讲来讲去就讲些废话,不就是下面这个东西嘛,理解了下面这个根本,其他的理解都是水到渠成…… Figure 214. Watchdog blockdiagram 把这个图看懂,其他一切都搞定! 喜欢原汁原味的,不喜欢把人家(所谓英语专业翻译家们)咀嚼的再拿来嚼一嚼,不光苍白无味,而且可能还会中毒(翻译者本人可能都没理解,误导人!),所以下面直接上English!! 研究思路: 上面是解决方案啊,就是问题的答案,那么这个答案的问题是什么?就是这个东西是怎么产生的?为什么要产生这个东西?咱们放一放,后来再讲! 1解决方案,答案,解说: 1.1理解两句话:《ST
[单片机]
stm8s开发(八) IIC的使用:IIC主机通信!
前面讲过两个常用的串口,UART和SPI,这次这次讲解一下另一个常用的串口:IIC(I2C)通信 科普IIC:一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。 通信过程: 主模式时,IIC接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。起始条件和停止条件都是在主模式下由软件控制产生。 从模式时,IIC接口能识别它自己的地址(7位或10位)和广播呼叫地址。软件能够控制开启或禁止广播呼叫地址的识别。 数据和地址按8位/字节进行传输,高位在前。跟在
[单片机]
STM8S单片机入门3(AD转换及锂电池管理)
锂电池以其容量大、充电性能好的优点,已经得到了广泛引用,特别在小型的需电池供电的电子设备上。但是锂电池的充电和使用条件比较严格,比如充电必须以恒流恒压方式,使用时电压不能低于3V等,所以用锂电池供电的系统一般都需要专门的锂电池管理功能,确保锂电池在正确的工作状态下。 这部分内容以讲述在STM8S单片机系统中,如何使用典型的锂电池充电管理芯片TP4056来实现锂电池的充电,以及如何使用单片机内置的AD转换功能测量电池电压,实现电池电量监控。 1、电路设计 电路图如下,使用TP4056做充电管理,TP4056是一款采用恒定电流/恒定电压线性锂电池充电管理IC,电路简单,只需要外接一个编程电容即可实现恒流恒压充电,
[单片机]
STM8S TIM1 PWM初始化设置
#define TIM1_DIV1 (uint16)(1-1) #define TIM1_DIV2 (uint16)(2-1) #define TIM1_DIV4 (uint16)(4-1) #define TIM1_DIV8 (uint16)(8-1) #define TIM1_DIV16 (uint16)(16-1) #define TIM1_DIV32 (uint16)(32-1) //timer1 PWM 输出到管脚使能 _Bool PWMAOUT_PINENBLE @TIM1_CCER1:0 ;//TIM1_CH1 -- PC6 _Bool PWMBOUT_PINE
[单片机]