STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗
- 格式:doc
- 大小:66.50 KB
- 文档页数:15
STM32考试习题及答案一、填空题1.当STM32的I/O端口配置为输入时, 输出缓冲器被禁止,施密特触发输入被激活.根据输入配置(上拉,下拉或浮动)的不同,该引脚的弱上拉和下拉电阻被连接。
出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O状态。
2.STM32的所有端口都有外部中断能力。
当使用外部中断线时,相应的引脚必须配置成输入模式。
3.STM32具有单独的位设置或位清除能力。
这是通过GPIOx_BSRR 和GPIOx_BRR 寄存器来实现的。
4.ST公司还提供了完善的通用IO接口库函数,其位于stm32f10x_gpio.c ,对应的头文件为stm32f10x_gpio。
h 。
5.为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上.这时,复用功能不再映射到它们原始分配的引脚上。
在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR) 来实现引脚的重新映射。
二、选择题1.在APB2上的I/O脚的翻转速度为(A )。
A.18MHz B.50MHzC.36MHz D.72MHz4.当输出模式位MODE[1:0]=“10”时,最大输出速度为(B ).A.10MHz B.2MHzC.50MHz D.72MHz三、简答题1.简述不同复用功能的重映射.答:为了优化不同引脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。
这时,复用功能不再映射到它们原始分配的引脚上.在程序上,是通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)来实现引脚的重新映射.各个复用功能的重映射可以参阅正文的介绍,由于内容比较多,正文介绍非常详细,这里省略。
2.简述STM32的GPIO的一些主要特点(至少5个)。
答:主要特点如下:❑通用I/O,可以作为输出、输入等功能。
❑单独的位设置或位清除.❑外部中断/唤醒线.❑复用功能(AF)和重映射。
ST单片机:独立看门狗和窗口看门狗
STM32单片机中有两只看门狗,分别是独立看门狗和窗口看门狗。
这两只看门狗有什么区别,今天来看一下。
1. 时钟源的区别
▪独立看门狗使用的是内部低速时钟,其频率为40kHz,但是这个40KHz不是准确的,其大致的范围是(30-60)KHz。
该时钟与外设时钟无关,所以不受系统晶振影响。
▪窗口看门狗使用的是PCLK1的时钟,该时钟与晶振相关。
2. 喂狗时间不同
▪独立看门狗喂狗时只要下限大于0就可以,上限是0XFFF。
而窗口看门狗必须在一个区域内喂狗才可以,上限是0x7F,下限是0X40,
3. 计数器不同
▪独立看门狗的计数器是12位递减的,即最大值是0XFFF;
▪窗口看门狗的计数器是7位递减的,即最大值是0X7F;
4. 产生结果不同
▪独立看门狗时,如果超时不喂狗,则直接产生复位,程序从头执行;
▪独立看门狗会在计数器到达0X40时产生中断,在0X3F时产生复位,所以可以把独立看门狗看成是一种中断。
使用用途举例
▪独立看门狗可以用来防止程序跑飞,在程序中开启看门狗,定时喂狗,尤其在通讯中使用广泛,当逻辑处理不当,使程序一直处于发送或接收状态不退出时,这时独立看门狗可以使程序复位,程序从头执行。
▪窗口看门狗可以产生中断,利用这一特点可以用来进行数据保存,当产生窗口看门狗中断时,可以用来保存数据。
如何设计STM32单片机独立看门狗程序?[导读]今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O 引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。
即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。
即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
1.1独立看门狗简介看门狗定时器 (WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。
如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。
如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
独立看门狗由专用低速时钟(LSI)驱动,计时主时钟发生故障它也仍然有效。
看门狗主要是用于在发生系统软件故障时,将系统复位。
也可以用于将系统从休眠或空闲模式唤醒。
STM32 独立看门狗IWDG 与窗口看门狗WWDG2010年05月03日星期一21:54 独立看门狗Iwdg——有独立时钟(内部低速时钟LSI---40KHz),所以不受系统硬件影响的系统故障探测器。
主要用于监视硬件错误。
窗口看门狗wwdg——时钟与系统相同。
如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。
一,独立看门狗看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数1.STM32独立看门狗IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG timeout equal to 280 ms (the timeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 –0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。
STM32 单片机中的独立看门狗与窗口看门狗有哪些
不同之处
1.关于看门狗的解释不再说明,窗口看门狗简而言之即只能看某个窗口期即某段时间内才能够喂狗。
32 的独立看门狗是没有中断的,而窗口看门狗可根据需要配置中断
2.关于独立看门狗和窗口看门狗的应用,手册p316 即17.1 节讲的非常清楚。
首先独立看门狗和窗口看门狗都可用来监视软件程序是否正常运行,而
具体而言,因为独立看门狗独立于系统时钟单独运行,因此其可用来监视是
否发生了硬件错误,比如说系统时钟故障,看门狗仍然能够起到重启的作
用,但是独立看门狗的计时精度比较差,更多的应用在独立系统运行之外的
对计时要求低的地方。
而窗口看门狗是由系统时钟提供的,因此其计时也会
很准确,当然其也就只能用来检测软件故障,比如硬件故障系统时钟坏了,
自身也就不动了,也就没有检测硬件故障的作用,因此窗口看门狗是用在检
测应用软件是否准确运行时使用的。
当然我们用系统情况下其实完全可以不使用32 提供的看门狗,我们自己某个任务的一个变量即实现看门狗的功能了。
3.另外注意,看门狗只是解决软件异常,独立看门狗称为硬件看门狗是其。
stm32看门狗时间计算独立看门狗和窗口看门狗的特性是什么STM32看门狗时间计算(TWDG):1.STM32看门狗的例子IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG TImeout equal to 280 ms (the TImeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动; 因此,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。
可通过IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,通过以下方式喂狗:/* Reload IWDG counter */IWDG_ReloadCounter();3. 1.25KHz 即每周期为0.8ms共计时350 个周期,即350*0.8ms=280ms综合以上,STM32看门狗时间(时限)与频率计算公式为:看门狗定时时限= IWDG_SetReload()的值/ 看门狗时钟频率看门狗时钟频率=LSI(内部低速时钟)的频率(40KHz)/ 分频数stm32独立看门狗和窗口看门狗特性、区别:总结起来,两者大概有以下几点特性和区别:1)独立看门狗没有中断,窗口看门狗有中断2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制3)独立看门狗只有下限,窗口看门狗又下限和上限4)独立看门狗是12位递减的。
stm32看门狗时间计算独立看门狗和窗口看门狗的特性是什么STM32看门狗时间计算(TWDG):1.STM32看门狗的例子IWDG的时限定为280微秒。
这个时限可能会随着LSI(内部低速时钟)的频率漂移而产生微小的变化。
/* IWDG TImeout equal to 280 ms (the TImeout may varies due to LSI frequency dispersion) -------------------------------------------------------------*//* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 32 = 1.25 KHz */IWDG_SetPrescaler(IWDG_Prescaler_32);/* Set counter reload value to 349 */IWDG_SetReload(349);/*该参数允许取值范围为0 0x0FFF */* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();2.独立看门狗(IWDG)由专用的40kHz 的低速时钟为驱动; 因此,即使主时钟发生故障它也仍然有效。
窗口看门狗由从APB1 时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。
可通过IWDG_SetPrescaler(IWDG_Prescaler_32); 对其时钟进行分频,4-256,通过以下方式喂狗:/* Reload IWDG counter */IWDG_ReloadCounter();3. 1.25KHz 即每周期为0.8ms。
基于STM32单片机的“智能化”宠物看护装置摘要:近年来,随着独生子女家庭和丁克家庭日益增多,以及社会人口老龄化的脚步在加快,宠物也逐渐的成为人们的玩伴。
但随着人们工作与学业上的繁忙,导致他们有时无法按时喂养自己的宠物,设计智能化的宠物看护装置也就应运而生了。
宠物喂食与看护系统主要包括电源模块、显示模块、温湿度检测模块和电机驱动模块,精心设计了一款基于单片机的智能宠物看护系统,以适应现代家庭生活自动化的迅速发展。
关键词:宠物看护;智能化;嵌入式;单片机1引言2020年,中国智能养宠产品的数量较2019年增长136%,金额较2019年增长47%,用户数较2019年增长43%[1-2]。
根据Fior Markets发布报告,全球宠物护理市场预计将从2019年2250亿美元增长到2027年的3586.2亿美元,预计2020-2027年复合年增长率为6%。
新冠疫情因为隔离问题使得许多主人被迫与宠物分离,让许多宠物主意识到了对宠物陪伴的重要性[3]。
2基于32单片机智能看护装置的组成本智能看护装置设计以STM32F103C6T6为核心控制器,驱动其他模块一起组成基于STM32的智能宠物看护系统的整个系统,整个系统包含中控部分、输入部分和输出部分。
中控部分采用了STM32F103C6T6,其主要作用是获取输入的信号并进行处理,然后对外部各模块进行输出。
输入由六部分组成,分别是DHT11温湿度检测模块、水位传感器、称重模块、独立按键和供电电路;输出由七部分组成,分别是OLED显示模块、直流电机驱动、加热继电器、加湿继电器、舵机、LED灯和蜂鸣。
2.1直流电机驱动模块MX1508芯片具备较宽的工作电压范围(VM端供电从2V到8V),可覆盖2节干电池至5节干电池的应用。
同时,Mx1508[1]也具有较低的待机电流,低静态工作电流,能够集成H桥驱动电路,并且内置防共态导通电路,低导通内阻的功率MOSFET管等特点。
STM32F103系列单片机最实用看门狗的详细资料概述为什么使用看门狗事情很简单先前做的一款采集数据的产品不知道为何异常,陷入死循环然后“死机”,分析了很多次,没发现原因,但是每次重新上点后就能正常采集到数据。
后来找到了解决方法:看门狗!目的是当程序走入死循环或者硬件异常时,可以自动复位,这样就可以得到跟重新上电后差不多的效果了。
使用的平台:stm32f103系列单片机使用的烧写调试模式:Jlink SWD 模式。
使用STM32官方模板库。
ST系列单片机看门狗分为两种:1.独立看门狗,2.窗口看门狗。
独立看门狗:可参看RM(reference Manual)的Independent watchdog (IWDG)当然,只是简要查看下RM中的介绍(至于寄存器的操作,我们可以略过,因为我们使用库的开发,但是基本流程一定要了解!)。
在这里我们要抓住几个关键点:a、stm32f10x系列有两个看门狗,看门狗主要用于检测由于软件出错的问题,并触发系统自动复位,或者触发一个中断(窗口看门狗才有)。
b、独立看门狗的时钟源为LSI,尽管主时钟出错,它还是能保持激活状态。
窗口看门狗的时钟源为APB1时钟,并且可以修改分频值。
c、独立看门狗:有独立时钟(内部低速时钟LSI),所以不受系统硬件影响的系统故障探测器。
主要用于监视硬件错误。
精确度要求比较低。
d、窗口看门狗:时钟与系统相同。
如果系统时钟不走了,这个狗也就失去作用了,主要用于监视软件错误。
精确度要求更高。
看门狗原理简介:有某个寄存器按照时钟源不断的递减(有只狗,不断的消耗能量),当该。
基于STM32的宠物喂食系统设计随着人们生活水平的提高,越来越多的家庭选择养宠物来增添生活乐趣。
为了方便的主人,本文介绍了一款基于STM32单片机的宠物喂食系统。
该系统具备定时定量喂食、安全保护、远程控制等功能,可满足不同宠物的喂食需求。
定时喂食:主人可以设置喂食的时间和食量,系统会在指定时间自动喂食。
定量喂食:系统根据宠物的年龄、体重、活动量等因素,设定合适的喂食量。
安全保护:喂食器应具有防噎塞功能,确保宠物安全进食。
远程控制:主人可以通过手机APP实时查看宠物喂食情况,或远程控制喂食器。
声音和灯光提示:在喂食时,系统可以通过声音和灯光提示宠物进食。
为了满足性能需求,喂食系统应具有可靠性高、稳定性强、易于维护等特点。
本系统主要由STM32单片机、电机驱动模块、光电传感器模块、声音提示模块和LED灯显示模块等组成。
(1)主控制器:选用STM32F103C8T6单片机,具有丰富的外设接口和强大的处理能力。
(2)电机驱动:采用ULN2003电机驱动模块,驱动能力强,可轻松驱动步进电机。
(3)光电传感器:选用红外线光电传感器,检测喂食器出粮口的状态,确保宠物不会将粮食推出来。
(4)声音提示模块:运用压电陶瓷蜂鸣器,在喂食时发出声音提示。
(5)LED灯显示模块:通过LED灯显示喂食状态,如正在喂食、已喂食完成等。
(1)主程序模块:负责整个系统的调度和状态机切换。
(2)电机驱动模块:通过单片机控制电机驱动器,实现喂食器的出粮动作。
(3)光电传感器模块:实时监测喂食器出粮口状态,判断是否需要喂食。
(4)声音提示模块:在喂食时,通过控制压电陶瓷蜂鸣器发出声音提示。
(5)LED灯显示模块:根据当前系统状态,控制LED灯显示相应的信息。
为了实现远程控制和手机APP的接入,我们需要使用Wi-Fi模块和蓝牙模块,这里我们选用ESP8266和HC-05蓝牙模块。
通过这两个模块,可以实现手机APP与单片机的通信,从而进行远程控制和状态查看。
STM32单片机的独立看门狗和窗口看门狗的特点及用法解析1.看门狗介绍看门狗这东西虽然简单,但我相信绝大多程序员没有足够重视它。
使用看门狗保证系统正常地运行是非常有必要的。
我们在设计产品时,代码以及硬件设计缺陷或是外界电磁干扰都有可能使系统死机,如果不能正常对其进行复位,系统的可靠性将大打折扣。
看门狗分为软件看门狗和硬件看门狗两类,其原理都是使用一个独立定时器来计时,超出时间就会产生复位信号,主要区别看是否具有独立的硬件结构,如果有,就是硬件看门狗,如果是一个普通定时器实现的那么就是软件看门狗。
STM32F407片内有两个看门狗:独立看门狗IWDG以及窗口看门狗WWDG,下面来讨论各自的特点和用法。
2.IWDG的特点以及使用IWDG是一个独立看门狗,具有独立于系统的时钟,与片外看门狗更为相似,使用片内独立的阻容时钟发生电路计时,记录时间为=(时钟频率(40KHz)/ 分频数)*IWDG_SetReload (t),t《0xFFF.也就是说记录的最大设定的复位时间为(1/40K)*256*0xFFF = 26.2 S。
由于IWDG使用的时钟本身不准确,会因为漂移产生一定变化,喂狗时应该给出一定的裕量。
另外,这个时钟与系统时钟并无关联,所有也不能与系统进行同步产生中断,一旦定时时间到后就会产生复位信号,系统来不及存储当前运行状态就会重启,可以在要求不高的场合使用。
3.WWDG的特点以及使用WWDG具有一个独立的7位定时器,使用系统时钟,可以产生系统中断。
其定时最时间为(1/PCLK1)* 4096)* 分频系数(最大为8)*(0x7F –0x3F)= 58ms.其复位的条件是:(1)当计数器的数值从0x40减到0x3F(2)当刷新看门狗时计数器的数值大于窗口上限值时满足任何一条都可以产生复位信号。
通常情况下设置窗口上限值为0x7F,下限值默认为0x40,计数器向下数到0x40就会产生中断,下个910us后变为0x3F就会复位系统。
STM32看门狗配置(独立看门狗IWDG和窗口看门狗WWDG)stm32自带两个看门狗模块,独立看门狗IWDG和窗口看门狗WWDG。
看门狗的原理:单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。
看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU 已经挂了),便实现处理器的自动复位重启(发送复位信号)。
看门狗主要作用是可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
具体的实现步骤:开启看门狗,设置减计数的初始值,当计数值达到超时值时,产生MCU 复位,此时本来运行的程序终止重新启动单片机(发生了故障)。
在使用了看门狗之后,在正常运行的程序中加入喂狗的程序,即采用定时器的方式每隔一段时间进行一次喂狗重置计数装载值,这样,只要程序正常运行,没有出现故障或软件错误,就会不断的定时喂狗,从而不会使计数值达到超时值产生复位。
一、独立看门狗IWDG:1、IWDG主要性能1)自由运行的递减计数器2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作)3)看门狗被激活后,则在计数器计数至0x000时产生复位2、IWDG功能描述在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。
当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。
无论何时,只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。
void IWDG_ConfiguraTIon(void)。
RTC唤醒喂狗和重启那些事⼉刚开始做单⽚机项⽬时,主要以51和STM32F系列为主,并未涉及到RTC和看门狗这⼀块⼉,主要依靠程序的正常逻辑、代码加固和增加断⾔等⽅式加固程序,除了功能上的问题,倒也没出现其它奇葩的现象;这也使我养成了⼀个不好的习惯,那就是不喜欢使⽤看门狗,总觉得看门狗⽤处不是那么⼤,写程序还要考虑喂狗⽅式,防⽌看门狗溢出导致程序重启,或者频繁喂狗导致看门狗开了也起不到作⽤。
最近的⼏个项⽬都使⽤了低功耗MCU,并且需要长期休眠,依靠MCU的RTC⾃主唤醒等;也遇到了⼀些奇怪的问题,在此做⼀点记录。
1.RTC唤醒进⼊⼯作或者喂狗 在⼀些应⽤中,由于条件限制或者应⽤需要会使⽤电池进⾏供电,因此,需要产品长期在休眠状态下,只有外部有信号或者RTC设置的闹钟时间到了后时才进⼊正常⼯作状态,处理完后继续休眠。
RTC唤醒进⼊正常⼯作没啥可说的,⾛正常流程即可;这⾥主要是RTC周期唤醒进⾏喂狗然后继续休眠的情况,⽐如,RTC周期为5S,看门狗⼀出时间设置为10S,那么正常情况下每5S会唤醒喂⼀次狗,然后继续休眠(选择看门狗的中间时间喂狗,防⽌频率漂移引起提前溢出重启);那么问题来了,如果程序的⼤部分功能需要依靠RTC来实现,那么是可⽤的,能够增加程序的稳定性。
但是如果RTC只是⽤来作为喂狗的定时器,我觉得⽤处不是特别的⼤;如果我选择RTC来喂狗,那么⼀般我会选择如下结构:main(void){if(喂狗){喂狗();}}RTC_IRQHandler(void){//RTC部分的处理喂狗 = true;//设置喂狗标志} 这种结构如果程序中存在死等待,可能有⽤,其它情况有待考究;百度⾕歌了⼀下喂狗⽅式,也有推荐使⽤开定时器定时喂狗的,感觉与我这个⼤同⼩异;可能还是需要从驱动到功能详细的研究代码,严谨⼀点防⽌出错为上策。
2.程序重启维护系统的稳定性 曾⼏何时,做了⼀个⼩项⽬,客户需要低功耗并且RTC定时发送设备状态信息,可能⼀连好多天都是在休眠状态下,我也单纯的按照需求上写的⼀样,实现了全部功能并交付客户使⽤,⼏个⽉的测试并未出现异常情况。
科技创新与应用Technology Innovation and Application设计创新2021年10期基于STM32的宠物智能投喂装置的设计与实现张杰斌,谢泽奇(郑州西亚斯学院电子信息工程学院,河南郑州450000)1概述随着信息技术的不断发展,智能化装置进入人们的视野,智能化设备给人们带来很多便利,高效、可靠和方便的智能化装置在生产生活中的应用越来越广泛,同时其在军事、交通、家居、农业、经济等领域已经表现出巨大的发展潜力。
同时国家政策的大力扶持与5G时代的到来,AI和IoT两大技术落地,未来物联网发展将会突飞猛进。
并且在5G环境下网络速率、网络安全、网络便捷性能够促进物联网的发展。
尽管智能化设备已经渗透到生活的方方面面,并且在智能家居方面已经形成了相对完整的系统,市场上的智能家居设备大多都服务于人们的衣食住行,但是市场上针对宠物服务的设备却很少,目前市场上已有的宠物自动投喂装置已经难以满足宠物主人的需求。
宠物是人类忠实的朋友,同时也是人类精神的寄托。
研究与设计基于STM32的宠物智能投喂装置,其目的是为了更好的照顾到宠物的日常生活,本文研究与设计的基于STM32的宠物智能投喂装置是以STM32为核心,集温度传感器、光照传感器、WiFi模块、实时时钟模块等模块为一体,配以相对应的软件系统。
可以实现根据处于不同年龄段的宠物、每天进行定时定量的精准投喂一定量的食物和水,定时检测宠物的生活环境并且如果检测到高温环境并及时进行报警,宠物主人也可以通过智能设备随时随地的了解宠物在家生活情况、为宠物加餐等功能。
2系统设计STM32系列处理器是意法半导体ST公司生产的一种基于ARMv7架构的32位、支持实时仿真和跟踪的微控制器[1]。
本文所介绍的基于STM32的宠物智能投喂装置采用的是以STM32F103ZET6芯片为核心的单片机,由实时时钟模块、温度传感器、光敏传感器、WiFi模块、逻辑控制单元和动作执行单元等模块组成。
第1期2021年1月No.1January,20210 引言针对家中有宠物的家庭设计出一款智能助手,可以通过物联网接收远程端发送来的喂食信息,从而驱动电机进行喂食动作。
该智能助手可以通过控制电机动作时间控制喂食量来控制宠物的进食量[1~2]。
系统由红外感应系统检测出宠物是否处于进食状态,还能通过录音播放来呼唤宠物前来进食。
本系统可以通过温湿度传感器实时监控房间的温度和湿度,并通过云系统将数据传送给手机端。
可以设置一定的阈值,当温湿度超过设定的值会开启通风系统进行通风降温,用户可以通过登录OneNET 物联网随时查看剩余的食物重量,以免宠物因食物不足挨饿。
本系统引入了当前热门的物联网,并迎合了家居智能化的发展,为人们解决了麻烦。
本系统还具有安全、实用、便宜特点。
1 系统整体设计思想本喂食系统主要包括单片机控制模块、无线通信模块、OLED 显示模块、电机驱动模块、录音播放模块、红外检测模块和压力传感器模块,以及基于OneNET 平台编写的上位机操作页面。
系统可以将房间中的温湿度和时间实时显示到OLED 显示屏上;可以将房间温湿度、喂食盘中食物的重量和宠物是否处于吃食状态通过物联网显示到OneNET 平台的上位机页面中;可以通过OneNET 平台下发喂食命令和录音播放命令;驱动电机运转进行喂食动作和播放提前录制好的声音呼唤宠物前来进食。
2 系统硬件设计本系统的硬件设计包括STM32核心控制器核心电路、AM2302数字温湿度传感器、DS1302时钟芯片、esp8266无线模块、iSD1820录音模块、OLED 显示模块、ULN2003电机驱动模块、红外传感器模块和HX711压力传感器模块等模块的设计,如图1所示。
图1 系统整体设计2.1 主控模块主控模块为STM32F103C8T6最小系统,在整个系统中负责连接并控制其他模块,包括:无线通信模块、OLED 显示模块、电机驱动模块、录音播放模块、红外检测模块和压力传感器模块。
STM32独立看门狗和低功耗模式_RTC定时唤醒来喂狗
在STM32开发中经常会用到独立看门狗(IWDG)和低功耗模式,看门狗是为了检测和解决由软件错误引起的故障,低功耗模式是为了在CPU不需要继续运行时进入到休眠模式用以节省电能。
其中独立看门狗的时钟由独立的RC振荡器(STM32F10x 一般为40kHz)提供,即使在主时钟出现故障时,也仍然有效,因此可以在停止和待机模式下工作。
而且独立看门狗一旦启动,除了系统复位,它不能再被停止。
但这样引发的一个问题是当MCU进入到低功耗模式后由于CPU停止运行无法喂狗,会导致系统频繁复位。
那如何解决这个问题呢,难道独立看门狗和低功耗模式没法同时使用?
一个很好的方式是在休眠模式下通过RTC定时唤醒来喂狗,喂完够在进入继续进入到休眠模式。
比如看门狗复位的时间间隔为10s。
那么在进入休眠模式前设置RTC闹钟中断时间为5s。
这样每隔5s唤醒一次喂一次狗。
便可以很好的解决这个问题。
while(1)
{
// 执行任务
Task1();
Task2();
// ..
// 喂狗
dev_iwdg_feed();
// 进入待机模式开关
if(m_bEnterStandByMode)
{
// 使能外部中断,GPIOB3,用以MCU从待机模式唤醒
dev_exTI_enable(TRUE);
ENTERSTOPMODE:
// 设置RTC闹钟,5秒钟产生一次RTC闹钟中断*/
dev_rtc_setAlarm(5);。