历史上的今天

今天是:2024年11月16日(星期六)

2019年11月16日 | stm32 看门狗 BKP(HAL库)

发布者:玄幻剑客 来源: eefocus关键字:stm32  看门狗  BKP  HAL库 手机看文章 扫描二维码
随时随地手机看文章

(一)概述


stm32有两个看门狗:硬件看门狗(LSI 40KHz,时间精度不高)和窗口看门狗(APB1)。


(二)硬件看门狗实现代码


IWDG_HandleTypeDef hiwdg;

 

// 硬件看门狗初始化

static void MX_IWDG_Init(IWDG_HandleTypeDef *pHiwdg)

{

    pHiwdg->Instance = IWDG;

    pHiwdg->Init.Prescaler = IWDG_PRESCALER_4;

    pHiwdg->Init.Reload = 0xFFF; // Tout = ((4 * 2^prer) * rlr) / 40 = 409ms,看门狗溢出时间

 

    if (HAL_IWDG_Init(pHiwdg) != HAL_OK)

    {

        Error_Handler();

    }

}

 

int main(void)

{

     ........

     MX_IWDG_Init(&hiwdg);

     ........

     HAL_IWDG_Start(&hiwdg);

 

    while (1)

    {

        ........

        HAL_IWDG_Refresh(&hiwdg);

    }

    

}

(三)初始上电获取硬件看门狗复位状态


if (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET)

{

    

}/* 硬件看门狗复位 */

 

__HAL_RCC_CLEAR_RESET_FLAGS();

(四)看门狗复位后IO状态的保持方法


法一:硬件方式,锁存器


法二:软件方式,当需要关注的IO状态改变时,立马存在Flash中,初始上电判断复位类型是硬件看门狗,就进行Flash读取和IO操作。该方式的缺点:由于stm32的Flash写操作是页写,每次写之前,都要先擦除,而且Flash的写次数有限,故经常写,Flash经常写的区域有可能被写坏。


法三:软件方式,BKP+初始判断处理(stm32F103RC大容量,备份寄存器是42个16位的寄存器)。


// BKP

#define BKP_DATA_LEN               16   

#define BKP_MAX_DATA_LEN           42

#define BKP_INTERVAL_POINT         10

 

// 写备份寄存器

void BKP_Write(uint8_t *pSourcedata, uint32_t num)

{

assert_param(num <= BKP_MAX_DATA_LEN);

volatile uint32_t *pDestData;

RCC->APB1ENR |= (1 << 27 | 1 << 28); // 电源接口时钟/备份时钟开启

PWR->CR |= 1 << 8; // 允许写入后备寄存器

if (num > BKP_INTERVAL_POINT)

{

pDestData = &(BKP->DR1);

for (uint32_t i = 0; i < BKP_INTERVAL_POINT; i++)

{

*(pDestData + i) = *(pSourcedata + i);

}

pDestData = &(BKP->DR11);

for (uint32_t i = 0; i < (num - BKP_INTERVAL_POINT); i++)

{

*(pDestData + i) = *(pSourcedata + i + BKP_INTERVAL_POINT);

}

}

else

{

pDestData = &(BKP->DR1);

for (uint32_t i = 0; i < num; i++)

{

*(pDestData + i) = *(pSourcedata + i);

}

}

}

 

// 读备份寄存器

void BKP_Read(uint8_t *pReadData, uint32_t num)

{

assert_param(num <= BKP_MAX_DATA_LEN);

volatile uint32_t *pSourceData;

if (num > BKP_INTERVAL_POINT)

{

pSourceData = &(BKP->DR1);

for (uint32_t i = 0; i < BKP_INTERVAL_POINT; i++)

{

*(pReadData + i) = *(pSourceData + i);

}

pSourceData = &(BKP->DR11);

for (uint32_t i = 0; i < (num - BKP_INTERVAL_POINT); i++)

{

*(pReadData + i + BKP_INTERVAL_POINT) = *(pSourceData + i);

}

}

else

{

pSourceData = &(BKP->DR1);

for (uint32_t i = 0; i < num; i++)

{

*(pReadData + i) = *(pSourceData + i);

}

}

}

关键字:stm32  看门狗  BKP  HAL库 引用地址:stm32 看门狗 BKP(HAL库)

上一篇:[HAL库学习之路]5.IWDG-独立看门狗
下一篇:最后一页

推荐阅读

从2015年左右开始发展,国内仓储机器人行业的热度从来没有真正降温过。无论是新入场的仓储机器人数量,还是资本市场给予这个赛道的筹码,都在屡创新高,刷新人们对行业原有的认知和预期。据不完全统计,目前国内以提供仓储机器人为主业的公司多达30家,仅2017年度,整体行业的融资金额就超过了10亿人民币,是2016年的数倍。 一个行业真实的面貌,或许只...
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,靠窗看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片: STM32F407ZET62、STM32CubeMx软件3、IDE: ...
11月16日讯,据悉,极飞科技宣布已于近日完成新一轮12亿元融资,由百度资本和软银愿景基金二期领投,创新工场、越秀产业基金和广州新兴基金跟投,原有投资人成为资本也继续加码,华兴资本担任独家财务顾问。这是迄今为止,中国农业科技领域最大的一笔商业融资。极飞CEO彭斌表示,公司当前的目标是构建无人化的农业生态系统,以更高效的生产方式解决农业劳...
今年的高通骁龙峰会已经定在11月30日开幕,算上时差,万众期待的新一代处理器应该会在12月1日发布。  此前,外界多用“骁龙898”来指代新一代骁龙旗舰U,和去年的骁龙888“一路发发发”对应。不过,按照三位数的命名习惯,骁龙8系眼看也到了尽头,那么高通到底如何想呢?  知名博主@数码闲聊站 给出消息“sm8450正式命名可能大概也许是新一...

史海拾趣

问答坊 | AI 解惑

资料下载---如何用ZIGBEE进行"定位"开发

GPS只能在室外定位,但若需要在室内实现定位功能怎么办呢?利用ZIGBEE技术实现定位就是一种不错的解决方案,同时该技术也可在室外实现定位。 资料下载-- http://www.wxlsoc.com/download/shows.aspx?id=28…

查看全部问答∨

传输线和反射的经典文章

传输线和反射的经典文章…

查看全部问答∨

请教:WINCE里如何预设WIFI IP和WIFI的相关登录设置?

比如要预设IP、网关、DNS, 还有WIFI的加密方式、密码。 我想应该是修改注册表,但是我不知道在哪改,请指教。 全部的总数奉上!…

查看全部问答∨

有谁能提供USB鼠标键盘驱动,模拟鼠标键盘自动按键,以前用了wion.vxd,但是USB不可以

有谁能提供USB鼠标键盘驱动,模拟鼠标键盘自动按键,以前用了wion.vxd驱动,PS/2接口可以模拟按键盘, 但是USB接口不可以模拟按键 如果人能提供这样的驱动程序,本人不胜感激,大大给分,给分... …

查看全部问答∨

请教windows mobile 中文开发环境搭建步骤

如题,我用的是vs 2005, 请教高手们如何搭建中文的 mobile开发环境,多谢指教。…

查看全部问答∨

求教:如何查看skype for ppc 依赖哪些库文件啊

求教各位高手,我现在想让skype在wince 5.0 上跑起来 ,我在网上看到说要找到skype for ppc 依赖哪些库文件  ,请问如何察看阿  , 我用vc下depends 和evc下depends 察看的  ,怎么出来的都是windows XP 下的库文件 ...…

查看全部问答∨

退出程序,不能关闭进程

WINCE 6.0, VS2005 程序是一个任务管理器,几个对话框,主要操作是CTabCtrl加载几个对话框,(对话框由dialog create),在几个dialog中分别做的是1.每隔一段时间获得CPU和内存的状态,画图 2.获得当前运行的进程,显示于列表中 3.获得当前可见的 ...…

查看全部问答∨

电磁场屏蔽的机理 续

与前面已讲述的电场屏蔽及磁场屏蔽的机理不同,电磁屏 蔽对于电磁波的衰减有三种不同的机理: x 当电磁波在到达屏蔽体表面时,由于空气与金属的交界面上 阻抗的不连续,对入射波产生的反射。这种反射不要求屏蔽 材料必须有一定厚度,只要求交界 ...…

查看全部问答∨

介绍一下KEIL C51所支持的C语言和汇编语言混合编程的方法!

     51单片机是最早的单片机,也是在国内应用最广泛的单片机,为大家所喜爱!但执行速度较其它单片机较慢。因此在编程时更加要注重程序的执行效率及编程上的技巧处理,最大限度的发挥其性能,满足项目开发的实际需要。在嵌入 ...…

查看全部问答∨

认真贯彻MSP430学习方针

团购MSP-EXP430FR5739,将MSP学习进行到底。  …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved