历史上的今天
返回首页

历史上的今天

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

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

2019-11-16 来源:eefocus

(一)概述


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);

}

}

}

推荐阅读

史海拾趣

Anatech Electronics Inc公司的发展小趣事

Anatech Electronics Inc是一家专注于射频(RF)和微波滤波器的设计、制造和销售的公司。以下是关于该公司发展的相关故事:

  1. 公司成立与初期阶段:Anatech Electronics Inc成立于1990年,总部位于美国新泽西州Garfield市。公司成立之初,专注于为通信、航空航天、国防等领域提供射频和微波滤波器解决方案。公司的创始人兼首席执行官Jiangsu Wang博士在微波滤波器领域拥有丰富的经验和专业知识。

  2. 技术创新与产品开发:Anatech Electronics Inc在其成立初期即开始致力于技术创新和产品开发。公司拥有一支技术精湛的研发团队,不断推出高性能、高可靠性的射频和微波滤波器产品。这些产品涵盖了各种类型的滤波器,包括带通滤波器、带阻滤波器、高通滤波器和低通滤波器等,广泛应用于无线通信、雷达系统、卫星通信等领域。

  3. 市场拓展与全球业务:随着公司业务的不断发展壮大,Anatech Electronics Inc开始加大对全球市场的拓展力度。公司与国际知名的电信运营商、设备制造商和系统集成商建立了稳固的合作关系,产品销售遍布北美、欧洲、亚洲等地区。公司在全球设立了销售办事处和代理商网络,为客户提供定制化的滤波器解决方案和技术支持服务。

  4. 质量管理与认证:Anatech Electronics Inc致力于确保产品质量和性能的稳定和可靠。公司采用先进的生产工艺和严格的质量管理体系,保证产品符合国际标准和客户要求。公司取得了ISO 9001质量管理体系认证,并不断进行产品认证和性能测试,确保产品在市场上的竞争优势和声誉。

  5. 持续发展与未来展望:作为一家在射频和微波滤波器领域具有影响力的公司,Anatech Electronics Inc将继续致力于技术创新和市场拓展。公司将继续加大研发投入,推出更多性能优越、功能丰富的滤波器产品,满足客户不断增长的需求。在未来,Anatech Electronics Inc将继续秉承“质量第一、客户至上”的经营理念,与客户共同发展,实现双赢。

Euvis Inc公司的发展小趣事

为了进一步提升竞争力,Euvis Inc公司积极开展跨界合作,与互联网、通信、汽车等领域的企业建立战略合作关系。通过资源整合和优势互补,公司实现了在多个领域的快速发展,进一步巩固了其在电子行业中的领先地位。

CANDD公司的发展小趣事

随着全球环保意识的提高,CANDD公司积极响应号召,开始践行绿色环保理念。公司投入大量资金研发环保型电子产品,并采用了更加环保的生产工艺和材料。同时,公司还加强了废弃电子产品的回收和处理工作,努力减少对环境的污染。这些举措不仅提升了公司的社会形象,还为公司赢得了更多消费者的支持。

德丰(DEFOND)公司的发展小趣事

德丰智能科技有限公司(简称“德丰智能”)是一家专注于智能科技产品研发和生产的企业。随着人工智能、物联网等技术的快速发展,德丰智能敏锐地捕捉到了这一市场机遇。公司加大了对智能科技产品的研发力度,成功推出了一系列具有自主知识产权的智能科技产品。这些产品不仅具有高度的智能化和自动化水平,还能够为用户带来更加便捷、高效的使用体验。通过不断的创新和市场拓展,德丰智能逐渐在智能科技领域崭露头角,成为了一家备受关注的新兴企业。

请注意,以上故事均为模拟内容,可能并不完全符合任何一家实际存在的“德丰(DEFOND)”公司的发展历程。如有需要,请查阅相关公司的官方资料以获取更准确的信息。

国炬(GOOGLL)公司的发展小趣事
可能是由于元器件参数不对称、中点电压偏离或静态工作点设置不当等原因引起。解决方法包括调整元器件参数、调整中点电压或重新设置静态工作点。
Densitron公司的发展小趣事

在全球环保意识日益增强的背景下,Densitron公司积极响应环保号召,将绿色可持续发展作为公司的重要战略之一。公司投入大量资源研发环保型产品和技术,减少生产过程中的能源消耗和污染排放。同时,公司还积极参与环保公益活动,推动整个行业的绿色发展。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上即为基于电子行业背景为Densitron公司虚构的5个发展故事。这些故事虽然并非基于真实事件,但反映了电子行业普遍关注的技术创新、市场拓展、行业变革、人才培养和绿色发展等关键要素。

问答坊 | AI 解惑

LQFP和SQFP封装

LQFP和SQFP封装的PCB封装图区别在哪里?名字是四角扁平,怎么基本都是第一个角扁平啊。。。。。    求高手帮看看。…

查看全部问答>

ARM程序中,如果不用延时,就没法运行,但又不是硬件延时的奇怪问题。[

    问题出在在现有的LCD汉字显示驱动的基础上继续开发时。     有个一个搜索函数,代码如下,功能是在一个给定的地址开始,连续搜索一个汉字编码(2byte),找到编码就返回位置,函数很简单。     现在的问题 ...…

查看全部问答>

驱动开发入门发现的几个问题,请高手赐教

1:有啥网站网络资源推荐? 2:我不明白为什么新的设备插到电脑上,电脑能够调用相应的驱动程序的。 3:我想知道从外不设备上电后,直到能正常工作的时候,发生的一系列过程,请帮忙    粗略概要。…

查看全部问答>

防雷击浪涌的开关电源电路设计

中心议题: 雷击浪涌分析防雷击浪涌电路的设计 解决方案: 应用将压敏电阻和陶瓷气体放电管的单相并联使用线绕电阻断开电路 随着城市经济的发展,感应雷和雷电波侵入造成的危害却大大增加。一般建筑物上的避雷针只能预防直击雷,而强大的电磁场 ...…

查看全部问答>

免费试用LM3S8962 评估套件

免费试用LM3S8962 评估套件…

查看全部问答>

关于待机问题~不解之处~请求帮助

我最近要做stm32的微功耗~在看过一些资料后,人们介绍说:stm32的待机模式,功耗是最低的,这样我就看是了解待机模式,我在手册中发现,待机模式下的单片机是不工作的,也不能保持待机前的状态,所以待机后,所有的管教都处于高阻态(不知道这 ...…

查看全部问答>

谁有12864的详细资料!?

哪位有LCD 12864的详细资料传我一下,谢谢!!!! 812150818@qq.com…

查看全部问答>

求助ARM程序

大家好,我在用AT91SAM3U做一个U盘开发,现在遇到一个很怪异的问题,盘在低温和常温下都没有问题,但是在70度的时候程序就跑死了,查了很多天,开始怀疑是硬件问题,但是昨天晚上发现一个问题,在片选(ENABLECE)函数前加个延迟或者加个串口输出, ...…

查看全部问答>

STM32F103RBT6的调试口PA14PA15能否用作普通的IO口

是否如下关闭SWJ后,就可按普通IO口配置PA14,PA15就可以了?     // SWJ 禁止    GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);…

查看全部问答>

4.99$的M4终于发货了

苦等了2个月,终于发货了…

查看全部问答>