STM32看门狗总结

STM32入门--看门狗 STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 阅读详情

转自:http://www.openedv.com/thread-56260-1-1.html

 

STM32看门狗总结

调原子哥的开发板一年多,基本上能用,但是对于STM32某些基本外设的工作机理还不甚明了。借此暑假的机会对各个外设的功能做一个简短的总结,在提高自己基础知识的同时,也给其他同学提供一些参考。

先来看门狗部分的内容。

看门狗部分内容当中较难理解的是窗口看门狗,其中窗口值设置以及如何引发复位更是很难搞懂,因此从根本上分析一下窗口看门狗的工作原理,而与其有关的中断则略过。

stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。独立看门狗有自己独立的40Khz时钟,不存在使能问题;而窗口看门狗使用的是PCLK1时钟,需要先使能时钟。以下是关于看门狗的具体说明:

①、独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。

②、窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。

显而易见的是,独立看门狗比较简单,容易理解。

这里,主要对窗口看门狗的详细含义作具体说明。

看门狗的上窗口就是配置寄存器WWDG->CFR里设定的W[6:0];下窗口是0x40;当窗口看门狗的计数器在上窗口之外,或是低于下窗口值都会产生复位。如上图所讲,当计数器的值递减到0x3f的计数时间内未进行喂狗操作,则会触发复位;其次,如果在计数器值递减到配置寄存器WWDG->CFR里设定的W[6:0]之前进行喂狗操作,也会触发复位。所以,在使用窗口看门狗时,要设定两个值,一个就是窗口看门狗的上窗口值,即配置寄存器WWDG->CFR里设定的W[6:0],另一个就是递减计数器的计数初值。

再结合上图中的逻辑关系分析一下:

如图中所示标号,①③表示与门,②表示非或门;

1、当T[6:0]>W[6:0]时,比较器输出的值是1,如果此时重装载WWDG_CR,所以③就会输出1,②的输出也肯定是1,又因为使能了窗口看门狗,所以WWDG_CR的第7位WDGA也为1,即与门①的输出是1,此时会触发复位。简单的概括来说,就是当递减计数器的值在递减到上窗口值W[6:0]之前进行喂狗操作(即重装载WWDG_CR),会触发看门狗复位。

2、当T[6:0]的第6位变为0时,即T[6:0]的值变为0x3f,此时②的输出肯定为1,而WDGA也为1,因此①的输出是1,会触发看门狗复位。简单的概括来说,就是当递减计数器的值在到达0x3f时仍未进行喂狗操作(即重装载WWDG_CR),同样会触发看门狗复位。

  

上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7f),最小又必须大于其下窗口的0x40,所以其取值范围为64~127(0x40~0x7f),否则不能保证窗口。

配置寄存器WWDG->CFR寄存器中的[8:7]两个位的设置为计数器设定时钟分频系数,确定这个计数器可以定时的时间范围,从而确定窗口的时间范围。

窗口看门狗的时钟来自于PCLK1,在时钟配置中,其频率为外部时钟经倍频器后的二分频时钟,即为36Mhz,如上图STM32时钟树所示。

窗口看门狗的超时公式如下:

36M时钟下窗口看门狗的最小最大超时表:

表中数据的具体计算如下所示:

①、当T[5:0]全部取0时,7位计数器的值是0x40,此时距离复位值只能计数一次,在此时间之内必须执行喂狗操作,否则触发复位。

从而可知各个WDGTB值下的最小超时时间,如WDGTB=0时,

Twwdg=4096×2^0×1/36 (us)=113 us,依次可计算出其他WDGTB值下的最小超时时间。

②、当T[5:0]全部取1时,7位计数器的值是0x7f,此时距离复位值递减计数0x40次(0x3f+1),在此时间之内执行喂狗操作可避免复位。

从而可知各个WDGTB值下的最大超时时间,如WDGTB=0时,

Twwdg=4096×2^0×64/36 (us)=7281.7 us,依次可计算出其他WDGTB值下的最大超时时间。

 

 

 

 

STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。

通用定时器的定义:STM32的通用定时器是一个通过可编程预分频器(PSC)驱动的16位自动装载计数器(CNT)构成。

功用:STM32的通用定时器可以被用于测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。

分频系数:决定定时器的时基,即最小定时时间。

定时器的时钟来源:

从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器。当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。

 

举一个例子说明。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;

当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);

当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。

由于APB1不仅给通用定时器提供时钟,还给其他外设提供时钟,因此也体现了APB1 rescaler设计的灵活性。

 

对自动重装载寄存器赋值,TIM_Period的大小实际上表示的是需要经过TIM_Period次计数后才会发生一次更新或中断。对TIM_Prescaler的设置,直接决定定时器的时钟频率。通俗点说,就是一秒钟能计数多少次。比如算出来的时钟频率是2000,也就是一秒钟会计数2000次,而此时如果TIM_Period设置为4000,即4000次计数后就会中断一次。由于时钟频率是一秒钟计数2000次,因此只要2秒钟,就会中断一次。发生中断时间=(TIM_Prescaler+1)* (TIM_Period+1)/FLK。

同样需要注意的,一进入中断服务程序,第一步要做的,就是清除掉中断标志位。以便下次中断服务函数的顺利执行。

注意:APB1 rescaler后得到的是通用定时器的时钟源,再次基础上进行TIM_Prescaler的设置就得到通用定时器具体的时钟频率啦。所以小伙伴们千万不要把文中定时器中经常提到的76MHz时钟以及由(TIM_Prescaler+1)*/FLK计算得到的时钟频率搞混淆啦。

当然,计数器的计数模式比较简单,这里没有就其进行详细的说明。

 

 

今天有同学问我PWM到底咋工作的?为啥这样啊?为啥啊?直接把我问蒙了。所以今天就来总结一些通用定时器产生PWM输出。

①、PWM主要就是控制频率和占空比的:这两个因素分别通过两个寄存器控制:TIMX_ARR和TIMX_CCRX。ARR寄存器就是自动重装寄存器,也就是计数器记到这个数以后清零再开始计,这样PWM的频率就是tim_frequency/(TIMX_ARR-1)。在计数时会不停的和CCRX寄存器中的数据进行比较,如果小于的话是高电平或者低电平,计数值大于CCRX值的话电平极性反相。所以这也就控制了占空比。

②、TIM3-CNT中的数据从0计数到ARR中的值,当计数到TIM3_CCRx接收到的数据大小时,由高电平变为低电平,当CNT中的数值增加到ARR寄存器设定的值时就自动清零,从0重新开始计数,并产生一个计数溢出事件,从0计数到ARR值的这段时间是PWM的周期。设置CCRx的值用来改变PWM的占空比。

③、TIM3-CNT的值与TIM3_CCRx中的数据是自动比较,TIM3-CNT的值与TIM3_CCRx中的数据相等时,PWM是自动产生跳变的,此过程是硬件实现的,在原子开发板的例程中找不到有关二者进行比较的代码,所以不要问在软件中是如何实现的,因为我找了很长时间没找到。

④端口重映射

为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。(注意:重定义的引脚是固定的,不是想重定义到哪个引脚就可以到哪个引脚的!重映像一般只适用于100和144脚的封装!(具体看哪个外设))。

STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等 ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。但这些重映射并不是任意的,只有有些引脚可以重映射.具体哪些引脚stm32参考手册上的GPIO与AFIO章节上有。一般是定时器,通信接口等数字系统的引脚可以重映射,adc,dac,时钟这种与模拟量有关的不可以。

简单的说STM32的IO有3个功能一个是默认的,一个是复用,一个是重映射功能(这个其实也属于复用),如果配置成复用,则将使用第2个功能,如果配置成复用,同时相应的重映射也配置了,则将使用第3个功能。

STM32的部分重映射实例:

 

 

输入捕获实验

捕获是如何实现的?与定时器有什么关系?它为什么就能够捕获到呢?

先入为主:可以利用定时器捕获某些IO口的高电平脉宽,脉宽时间可以通过串口打印得到。

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32定时器除了TIM6和TIM7,其他的都具有输入捕获功能。STM32的输入捕获,简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。

捕获模式与比较模式的理解:

捕获模式的原理是选定的输入引脚发生选定的脉冲出发沿的时候,则该时刻定时器的计数值TIMx_CNT将被保存,同时产生中断(TIMx_CNT的值不会与任何东西进行比较)。该功能最常用的的就是测量一个外来脉冲的脉宽。

比较模式的原理是当CCRx寄存器中设定的值与定时器计数器值相等的时候,相关引脚发生电平跳变,同时产生中断。该功能常应用于产生一个一定脉宽的PWM波形。

数字滤波器由一个事件计数器组成,它记录到N个事件后会产生一个输出的跳变: 这个N可以取值具体参考中文手册,意思是说:我采样高电平,只有连续采样到N个电平是高电平的话我才认为是有效的高电平,低于N个我就认为是无效的。

PWM输入捕获模式是输入捕获模式的特例,自己理解如下

1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1 IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。

2. 同一个TIx输入映射了两个ICx信号。

3. 这两个ICx信号分别在相反的极性边沿有效。

4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。

5. 当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获“一个PWM周期(即连续的两个上升沿或下降沿)”,它等于包含TIM时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。

6. 同样另一个捕获通道捕获触发信号和下一个相反极性的边沿信号的计数个数m,即(即高电平的周期或低电平的周期)

7. 由此可以计算出PWM的时钟周期和占空比了

    frequency=f(TIM时钟频率)/n。

    duty cycle=(高电平计数个数/n),

    若m为高电平计数个数,则duty cycle=m/n

    若m为低电平计数个数,则duty cycle=(n-m)/n

注:因为计数器为16位,所以一个周期最多计数65535个,所以测得的 最小频率= TIM时钟频率/65535。

测量脉宽的理解:

输入捕获的原理是,定时器正常计数运行,当外部脉冲到来时,将定时器计数值存起来,当下次脉冲到来时,求出这两次计数值差值,即为这两段脉冲的周期。例如,定时器计数到10,外部脉冲到来,使用last_time_CH1存储10,下次脉冲到来,此时定时器计数值运行到110,使用this_time_CH1存储110,之后做差,tmp16_CH1存储差值100,由于定时器运行于100KHZ,10us计数值增加一次,所以脉冲周期为100*10=1000us=1ms,即为1KHZ。当然,定时器会溢出重装,此时需要将差值补偿运算,tmp16_CH1 = ((0xFFFF - last_time_CH1) + this_time_CH1);可测量的范围取决于定时器运行的频率,如果外部频率慢到当定时器整个计数一周后也没有触发两次,会发生溢出,此时计数值已不准确。所以定时器时钟配置取决于外部脉冲频率,应配置得当使得脉冲频率范围不致溢出。由于每次外部脉冲都会触发中断,尤其是四通道时,所以使用中断方式会略微占用CPU资源,使用DMA可以解决这一问题。

得到脉冲周期后,即可通过运算获得外部频率,进而测速。

 

 

STM32的ADC采样(翻看网上内容总结)

难点:如何确定采样周期?如何配置相关寄存器?转换时间里的12.5是怎么来的?

一、基本概念:ADC转换就是输入模拟的信号量,单片机转换成数字量。读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期。采样周期一般来说=转换时间+读取时间。而转换时间=采样时间+12.5个时钟周期。采样时间是你通过寄存器告诉stm32采样模拟量的时间,设置越长越精确。

 

STM32的ADC模块各个通道对应的IO

(注意:STM32F103系列最少都拥有2个ADC,STM32F103ZET6包含有3个ADC,STM32F103ZET6内部集成了12位的逐次逼近型模拟数字转换器,它有多大18个通道,可测量16个外部和2个内部信号源。)

二、规则组和注入组

STM32的ADC通道分为规则组和注入组。因为ADC转换模块只有一个ADC功能核心,它能够支持这么多通道的数据转换,用的是分时复用的方法。分组的目的是为了赋予特定的ADC通道优先权。

比如,ADCx_IN2被分配到规则组,ADCx_IN3被分配到注入组,在IN2通道进行数据转换的过程中,外部信号触发了IN3通道的转换,则ADC功能核心将暂停IN2的转换,转去执行IN3的转换,完成转换后在回来执行IN2的转换。由此可知,注入组的通道具有优先转换权,可以打断规则组通道正在进行的转换。

 

三、STM32 ADC 采样 频率的确定

①、可编程的通道采样时间

ADC 使用若干个ADC_CLK 周期对输入电压采样,采样周期数目可以通过

ADC_SMPR1 和ADC_SMPR2 寄存器中的SMP[2:0]位而更改。每个通道可以以

不同的时间采样。

总转换时间如下 计算:

TCONV = 采样时间+ 12.5 个周期

例如:

当ADCCLK=14MHz 和1.5 周期的采样时间

TCONV = 1.5 + 12.5 = 14 周期 = 1μs

 

转换时间里的12.5是怎么来的?

原子哥告诉我,ST固定死了的,咱们不用关心。

 

②、具体分析如下:

(1)我们的输入信号是50Hz (周期为20ms),初步定为1周期200个采样点,(注:一周期最少采20个点,即采样率最少为1k) ,每2个采样点间隔为 20ms /200 = 100 us

ADC可编程的通道采样时间我们选最小的 1.5 周期,则 ADC采样周期一周期大小为

100us /1.5=66us 。 ADC 时钟频率为 1/66us =15 KHz。

  ADC可编程的通道采样时间我们选71.5 周期,则 ADC采样周期一周期大小为

(100us /71.5) 。 ADC 时钟频率为 7.15MHz。

 

(2)接下来我们要确定系统时钟:我们 用的是 8M Hz 的外部晶振做时钟源(HSE),估计得 经过 LL倍频 LL 倍频系数分别为2的整数倍,最大72 MHz。为了 提高数据计算效率,我们把系统时钟定为72MHz,(PLL 9倍 频)。则PCLK2=72MHz,PCLK1=36MHz;

 

我们通过设置时钟配置寄存器(RCC_CFGR) 中 有 为ADC 时钟提供一个专用的可编程预分器,将PCLK2 8 分频后作为ADC 的时钟,则可 知ADC 时钟频率为 9MHz

        从手册可知: ADC 转换时间:

STM32F103xx 增强型产品:ADC 时钟为56MHz 时为1μs(ADC 时钟为72MHz 为1.17μs)

 (3)由以上分析可知:不太对应,我们重新对以上内容调整,提出如下两套方案:

 

方案一:我们的输入信号是50Hz (周期为20ms),初步定为1周期2500个采样点,(注:一周期最少采20个点,即采样率最少为1k) ,每2个采样点间隔为 20ms /2500 = 8 us

ADC可编程的通道采样时间我们选71.5 周期,则 ADC采样周期一周期大小为

8us /71.5 。 ADC 时钟频率约为 9 MHz。

将PCLK2 8 分频后作为ADC 的时钟,则可知ADC 时钟频率为 9MHz

 

方案二:我们的输入信号是50Hz (周期为20ms),初步定为1周期1000个采样点,(注:一周期最少采20个点,即采样率最少为1k) ,每2个采样点间隔为 20ms /1000= 20 us

ADC可编程的通道采样时间我们选239.5周期,则 ADC采样周期一周期大小为

20us /239.5 。 ADC 时钟频率约为 12 MHz。

 

 

STM32 DAC实验

基本原理:12位的DAC模块将测量用的基准电压(3.3V)分为4095份(3.3/4095),通过设定寄存器DAC_DHR12Rx(设定不同的对齐方式对应的寄存器有所不同)的值,可以得到输出电压的大小,其值为寄存器内值的大小乘以每一份的值(3.3/4095),结果就是希望输出的电压值大小。然后我们通过ADC采样,就可以把输出电压的值检测出来,并显示在LCD上。注意,这里参考电压的设置,VREF+接到3.3V,VREF-接到0V。

另外,DAC输出是受DORx寄存器直接控制的,但是不能直接往DORx寄存器写入数据,而是通过DHRx间接的传给DORx寄存器,实现对DAC输出的控制。


 

一、 GPIO模式配置   
   

1、输入/输出模式(参考stm32手册)  

2、GPIO输出模式下,几种速度的区别:  

(1). GPIO 引脚速度: GPIO_Speed_2MHz     (10MHz, 50MHz) ;  

    又称输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。)  

    可理解为: 输出驱动电路的带宽:即一个驱动电路可以不失真地通过信号的最大频率。  

(如果一个信号的频率超过了驱动电路的响应速度,就有可能信号失真。失真因素?)  

如果信号频率为10MHz,而你配置了2MHz的带宽,则10MHz的方波很可能就变成了正弦波。就好比是公路的设计时速,汽车速度低于设计时速时,可以平稳地运行,如果超过设计时速就会颠簸,甚至翻车。  

关键是: GPIO的引脚速度跟应用相匹配,速度配置越高,噪声越大,功耗越大。  

带宽速度高的驱动器耗电大、噪声也大,带宽低的驱动器耗电小、噪声也小。使用合适的驱动器可以降低功耗和噪声  

比如:高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。  

比如:  

① USART串口,若最大波特率只需115.2k,那用2M的速度就够了,既省电也噪声小。  

② I2C接口,若使用400k波特率,若想把余量留大些,可以选用10M的GPIO引脚速度。  

③ SPI接口,若使用18M或9M波特率,需要选用50M的GPIO的引脚速度。  

(2). GPIO的翻转速度指:输入/输出寄存器的0 ,1 值反映到外部引脚(APB2上)高低电平的速度.手册上指出GPIO最大翻转速度可达18MHz。  

@通过简单的程序测试,用示波器观察到的翻转时间:  是综合的时间,包括取指令的时间、指令执行的时间、指令执行后信号传递到寄存器的时间(这其中可能经过很多环节,比如AHB、APB、总线仲裁等),最后才是信号从寄存器传输到引脚所经历的时间。    

如:有上拉电阻,其阻值越大,RC延时越大,即逻辑电平转换的速度越慢,功耗越大。  

(3).GPIO 输出速度:与程序有关,(程序中写的多久输出一个信号)。  

2、GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。  

3、在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。  

4、所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。  

5、GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。  

 一般应用:  

模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电。  

浮空输入_IN_FLOATING ——可以做KEY识别,RX1  

开漏输出_Out_OD——应用于I2C总线; (STM32开漏输出若外部不接上拉电阻只能输出0)  

二. 管脚的复用功能 重映射  

1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)  

STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。  

2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功   能的引出脚位是可通过程序改变到其他的引脚上!  

直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。  

如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。  

(参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值]  

【注】 下述复用功能的引出脚具有重映射功能:  

  - 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口  

  - CAN模块; - JTAG调试接口;- 大部分定时器的引出接口; - 大部分USART引出接口  

  - I2C1的引出接口;  - SPI1的引出接口;  

举例:对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和 USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。  

(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。  

(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚.

STM32—独立看门狗(IWDG) STM32 有两个看门狗,一个是独立看门狗另外一个是窗口看门狗,独立看门狗号称宠物狗,窗口看门狗号称警犬。**如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。**看门狗功能由 VDD 电压域供电,在停止模式和待机模式下仍能工作。 阅读详情

相关推荐

STM32——看门狗(独立看门狗,窗口看门狗,附代码)

看门狗(独立看门狗、窗口看门狗)的原理及代码实现。

m0_60503814的博客 6349

单片机STM32看门狗详解(嵌入式学习)

单片机STM32的看门狗(Watchdog)是一种硬件定时器,用于监控系统的运行状态并在出现故障或死锁时采取措施以恢复正常操作。看门狗的主要功能是定期检查系统是否正常运行,并在系统出现问题时触发复位操作。STM32系列单片机通常配备了内置的看门狗定时器(通常称为独立看门狗,IWDG)和窗口看门狗定时器(WWDG),以提供更可靠的系统保护。独立看门狗(IWDG)是STM32中常用的看门狗,它是一个独立的硬件模块,可以在系统内部独立运行。通过配置IWDG定时器的计数器和预分频器,可以设置看门狗的定时时间。

1万+

STM32 看门狗

窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器达到窗口寄存器数值之前,

sinat_36070482的博客 4122

stm32之看门狗

STM32 有两个看门狗,和,独立看门狗又称宠物狗,窗口看门狗又称警犬。可用来检测和解决由软件错误引起的故障。两个看门狗的原理都是当计数器达到给定的超时值时,产生系统复位,对于窗口型看门狗同时会产生一个中断。独立看门狗(IWDG)由专用的内部低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。窗口看门狗由从APB1时钟分频后得到的时钟驱动。

TSC1235的专栏 3462

初学STM32之看门狗

初学STM32之看门狗 一、看门狗概述 1.什么是看门狗 单片机在工作中常常会受到来自外界电磁场的干扰,造成程序跑飞,而陷入死循环,程序的正常运行被打断,使得系统无法正常工作,造成整个系统陷入停滞状态。所以为了对单片运行状态进行实时监测,便产生了一种专门用于检测单片机程序运行状态的模块或者芯片,俗称看门狗(watchdog) 看门狗的作用就是在程序跑飞的情况下,系统复位,程序重新执行。 2.看门狗分类 在STM32中内置两个看门狗,一个是独立看门狗,另一个是窗口看门狗。二者都可以用来检测和解决由软件错误引起

MRVENJSR的博客 5398

STM32——看门狗WDG

看门狗全称:WatchDog,简称WDG,本质作用是是自动复位电路;键寄存器本质是控制寄存器,用于控制硬件电路,,一般来说通过写入控制寄存器的某一位来实现对硬件电路的控制,但是在可能存在干扰的情况下键寄存器通过写入特定的数据来代替控制寄存器中的某一位的功能,降低了硬件电路受到干扰的概率;什么是WDG看门狗;看门狗在STM32内执行什么功能;看门狗的本质是什么;WDDG和WDG区别是什么;WDG程序框图,WDG执行逻辑是什么;WDG的结构与定时中断的区别;

2201_75735537的博客 2776

第6章 STM32—看门狗

独立看门狗(IWDG)由其专用低速时钟(LSI)驱动,因此即便在主时钟发生故障时仍然保持工作状态IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。独立看门狗时钟源:低速内部时钟LSILSI:RC振荡器产生LSI提供频率不太稳定:偏频 30Khz - 60Khz用于对时间精度要求较低的场合。

weixin_48095700的博客 2278

STM32—窗口看门狗(WWDG)

STM32 有两个看门狗,一个是独立看门狗,一个是窗口看门狗。我们知道独立看门狗的工作原理就是一个递减计数器不断的往下递减计数,当减到 0 之前如果没有喂狗的话,产生复位。窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下递减计数,当减到一个固定值 0X40 时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。这个是跟独立看门狗类似的地方,不同的地方是窗口看门狗的计数器的值在减到某一个数之前喂狗的话也会产生 复位,这个值叫窗口的上限,上限值由用户独立设置。

安赫' 的博客 5619

【STM32】看门狗模块

介绍了STM32中独立看门狗和窗口看门狗的工作原理以及使用方法。

weixin_63726869的博客 4520

STM32硬件看门狗的使用

本文使用STM32 STLink Utility和STM32CUBELDE 1.手动添加库文件 由于使用硬件看门狗,在STM32CUBELDE内的图形界面设置时不使能看门狗。 由于STM32CUBELDE图形界面设置时未使能看门狗,因此不会自动包含库文件(与工程设置相关),需要手动添加相关文件。 我的文件是从使用看门狗的工程里拷贝出来的,放到我们要使用的工程相应的文件夹下。以STM32G0系列为例,文件包含stm32g0xx_hal_iwdg.h和stm32g0xx_hal_iwdg.c,分别位于工程文.

xiaoxiaoxiaoali的博客 4029

STM32独立看门狗IWDG

STM32内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。(1)看门狗分为两类:独立看门狗(IWDG):独立工作,对时间精度要求较低;窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。(2)区别在于:窗口看门狗:假如没有定时喂狗,则触发一个中断或产生系统复位。独立看门狗:假如没有定时喂狗,会产生系统复位。

ddidi111的博客 1322

【STM32】HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)

前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库STM32CubeMX的独立看门狗,窗口看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片:STM32F407ZET6 2、STM32CubeMx软件 3...

Z小旋 6万+

别再死磕U-Net了!用PyTorch手把手教你搭建ResUnet,搞定医学图像分割(附完整代码)

本文详细介绍了如何利用PyTorch搭建ResUnet模型,通过引入残差连接解决医学图像分割中的梯度消失、特征退化和细节丢失问题。与传统U-Net相比,ResUnet在Dice系数和收敛速度上均有显著提升,特别适合处理脑部MRI等复杂医学图像。文章还提供了完整的代码实现和关键训练技巧,帮助开发者快速掌握这一先进技术。

weixin_42552637的博客 326

基于STM32CUBEMX工具的STM32的独立看门狗与窗口看门狗的使用

基于hal库的stm32的看门狗的使用 (独立看门狗、窗口看门狗)

tmk1234567890的博客 2237

RAG在医药行业为什么80%都翻车了?

这篇文章不是要劝你别做RAG,而是把坑说清楚。医药行业有它的特殊性——监管压力、专业术语密度、多语言混排、文档结构复杂——这些因素叠加在一起,让标准RAG教程里的那套方法论几乎直接失效

qq_31808385的博客 635

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 868

STM32 看门狗详解

目录 1、IWDG 1.1 独立看门狗简介 1.2 独立看门狗的特点 1.3 独立看门狗功能描述 1.4 硬件看门狗 1.5 寄存器访问保护 1.6 调试模式 2、WWDG 2.1 简介 2.2 窗口看门狗主要特点 2.3 窗口看门狗功能说明 2.4 如何设置看门狗超时 2.5 调试模式 3、区别 1、IWDG 1.1 独立看门狗简介 IWDG(Independent watchdog)独立看门狗,可以用来检测并解决由于软件错误导致的故障,当计数器到达给定的超时值时,会触发

人生一路,点滴记录 1万+

SPAD 单光子雪崩二极管

SPAD,全称为,是一种高灵敏度的光电探测器件,能够在非常低的光照水平下检测单个光子。SPAD在工作时,当一个光子被探测器吸收后,能够触发一个雪崩效应,产生一个可以被检测到的电信号。

qq_42786033的博客 1万+

【STM32笔记】STM32的看门狗详解(独立看门狗和窗口看门狗)

首先,它不是真的狗。看门狗(Watchdog)是一种硬件定时器,用于监测程序执行是否正常,并在系统出现故障或死锁时重启系统。

Macy~的博客 1万+

不用FFmpeg!纯前端实现RTSP直播的3种现代方案对比(WebSocket/Wasm/WebCodecs)

本文深入探讨了纯前端实现RTSP直播的三种现代技术方案:WebSocket代理转发、Wasm解码和WebCodecs硬解。通过详细的架构设计、性能实测数据和兼容性分析,帮助开发者在安防监控、智慧城市等场景中选择最佳方案,实现低延迟、高效率的视频流处理。

lilh34434的博客 231

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

STM32的看门狗

本文章主要介绍,定时器中的独立看门狗(IWDG)和窗口看门狗(WWDG),讲解两个的工作原理,函数,寄存器,以及溢出时间的计算和相关的配置步骤。通过两个小实验,来进一步加深对两个定时器的理解。最后总结了两个

2403_90063112的博客 2159

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

STM32CubeIDE看门狗

看门狗,独立看门狗,窗口看门狗

weixin_74114554的博客 2511

在 SAP Fiori 中正确配置 Group 角色:从 PFCG 分配到首页呈现的完整链路

摘要:SAP Fiori项目中,用户登录后能否看到应用往往取决于角色配置而非前端开发。关键在于通过PFCG角色将launchpad designer中创建的tile group关联到用户角色。Catalog是应用池,group是用户首页可见的工作区。正确配置后,用户会看到角色对应的默认分组,同时保留个性化调整能力。项目实施中常见问题是应用开发完成但未正确配置group与角色关联,导致业务用户无法在首页看到应用入口。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

STM32 CubeMX 看门狗

文章目录看门狗STM32的内置看门狗WWDG-窗口看门狗CubeMX操作步骤1)使能 WWDG时钟2)设置窗口值 ,分频数 和计数器初始值3)开启 WWDG4)使能中断通道并配置优先级(如果开启了 WWDG中断)5) 编写中断服务函数6) 重写窗口看门狗唤醒中断处理回调函数 HAL_WWDG_WakeupCallback结果 看门狗 在由单片机构成的微型计算机系统中单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环;或者因为用户配置代码出现BUG,导致芯片无法正常工作,出于对单片机运行

“逛丢一只鞋”的博客 4094

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: 浅析GPU计算——cuda编程
下一篇: STM32之独立看门狗与窗口看门狗总结
csshuke
博客等级 码龄16年 1517粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值