历史上的今天
返回首页

历史上的今天

今天是:2025年03月09日(星期日)

正在发生

2019年03月09日 | stm32 看门狗 BKP(HAL库)

2019-03-09 来源: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);

}

}

}

 

推荐阅读

史海拾趣

G24 Innovations公司的发展小趣事

在快速发展的同时,远阳公司始终不忘履行社会责任。公司积极参与公益事业,通过捐款捐物、志愿服务等方式,回馈社会、关爱弱势群体。此外,远阳还注重环境保护和可持续发展,积极推广绿色生产、节能减排等环保理念。公司建立了完善的环境管理体系和能源管理体系,通过技术创新和管理优化,不断降低生产过程中的能耗和排放。这些举措不仅提升了远阳的企业形象和社会声誉,也为企业的长远发展奠定了坚实基础。

Analogic Corporation公司的发展小趣事

远阳(FLYOUNG)公司创立于21世纪初,正值中国电子行业快速发展的黄金时期。公司创始人李先生,凭借在电子行业多年的技术积累和敏锐的市场洞察力,决定创立一家专注于数据工程电缆研发与生产的公司。初期,远阳面临着资金短缺和技术瓶颈的双重挑战。但李先生带领团队夜以继日地研发,终于成功推出了首款高性能HDMI线,其卓越的品质迅速赢得了市场的认可。这一技术创新不仅为公司赢得了第一批忠实客户,也为远阳后续的技术发展奠定了坚实基础。

AnalogicTech公司的发展小趣事

为了进一步扩大市场份额,AnalogicTech积极寻求与全球范围内的合作伙伴建立战略合作关系。公司通过参加国际电子展会、建立海外销售网络等方式,成功将产品推向全球市场。同时,AnalogicTech还加大了对亚洲市场的投入,在香港等地设立了分支机构,进一步提升了公司在全球市场的竞争力。

Concord Semiconductor Corp公司的发展小趣事

Concord Semiconductor Corp深知人才是企业发展的根本。因此,公司高度重视人才培养和引进工作。公司建立了一套完善的人才培养机制,通过内部培训、外部引进等方式,不断提升员工的技能水平和综合素质。同时,公司还积极营造良好的工作氛围和企业文化,吸引更多优秀人才加入。这些人才的加入为公司的持续发展提供了有力保障。

APLUS Products公司的发展小趣事

APLUS Products公司始终重视品牌建设和文化传播。公司不仅注重产品的质量和性能,还积极参与各类行业展会和公益活动,提升品牌知名度和美誉度。同时,公司还通过社交媒体等渠道与消费者进行互动,传递公司的价值观和企业文化。这些举措不仅增强了消费者对品牌的认同感和忠诚度,也为公司的长期发展奠定了坚实的基础。


这些故事虽然是根据一般情况构建的,但它们反映了企业在发展过程中可能遇到的挑战和机遇,以及如何通过技术创新、市场布局、合作共赢、品牌建设和文化传播等手段来实现企业的发展目标。希望这些故事能够为您提供一些启示和参考。如果您需要更具体的信息,建议您查阅APLUS Products公司的官方网站或相关新闻报道。

国芯佳品公司的发展小趣事

APLUS Products公司始终重视品牌建设和文化传播。公司不仅注重产品的质量和性能,还积极参与各类行业展会和公益活动,提升品牌知名度和美誉度。同时,公司还通过社交媒体等渠道与消费者进行互动,传递公司的价值观和企业文化。这些举措不仅增强了消费者对品牌的认同感和忠诚度,也为公司的长期发展奠定了坚实的基础。


这些故事虽然是根据一般情况构建的,但它们反映了企业在发展过程中可能遇到的挑战和机遇,以及如何通过技术创新、市场布局、合作共赢、品牌建设和文化传播等手段来实现企业的发展目标。希望这些故事能够为您提供一些启示和参考。如果您需要更具体的信息,建议您查阅APLUS Products公司的官方网站或相关新闻报道。

问答坊 | AI 解惑

LED芯片发光简点介绍

LED是T型和N型半导体,三价有电洞,五价提供电子,两者结合中间有空乏区,能够产生能量,光就发出来。由于它是半导体,有能隙,随著参杂元素的不同而产生不同能隙,从氮化镓的3.4eV到磷化铟的1.35eV,波长亦随著改变,而产生出不同的颜色,从紫外光 ...…

查看全部问答>

再次请教wince程序访问pc上数据库的问题

一直想通过wince上的程序连接pc上的数据库如sql server,mysql等,一直没搞定。不知有没有大侠能够指导一下啊?    这几天看了下sqlite数据库的东西,简单小程序能写了,但是发现sqlite有个问题就是好像不支持c/s结构,只能在本地进行sq ...…

查看全部问答>

求爱之后,她终于来到了我身边(STM32)

终于收到力源申请的套件了,哈哈哈哈还以为与她无缘,现在开始,晚上的"夜生活"开始丰富了也开始倒塌STM32~~~~~~~~~~~~~~~~~~~…

查看全部问答>

WWDG进不了中断

我用一个灯监视WWG中断,正常的话每进20次中断改一次灯的状态,(主要是因为看门狗58.25MS喂一次狗,想让LED大约1S闪一次),但是不知哪里出现问题,灯从没闪烁过,说明WWDG中断没有进入,我将断点设在WWDG中断程序中,结果也没有跑到中断程序 ...…

查看全部问答>

Stm32之寄存器汇总

很全的stm32寄存器表格,借以了解分析库函数。。。。。。 [ 本帖最后由 xinjitmzy 于 2012-4-17 21:26 编辑 ]…

查看全部问答>

低版本IAR简易开发LaunchPad的歪道

    (写得很认真,先留着,等板子来了就可以耍了!感谢作者)    故事的起因是这样滴。。。LaunchPad包装盒中并没有附带资料光盘(至少我收到的是这样的),只有一张纸的简单介绍,即TI网站上的文档MSP-EXP430G2 LaunchPa ...…

查看全部问答>

为什么我的 INA CMRR 不随增益变化?

转自:deyisupport 前面有两篇关于仪表放大器 (INA) 电源及共模抑制比 (PSRR & CMRR) 的极好博客文章。(参见“处理抑制问题:仪表放大器 PSRR 与 CMRR”第 I 部分 和 第 II 部分)。 准确指出了大多数 INA 器件的 CMRR 与 PSRR 性能会随增益变化 ...…

查看全部问答>

模数转换器中的混叠:并不是所有的信号都像其看上去那样

转自deyisupport 你看没看到过汽车向前行驶,而车的轮子实际上是向后转呢?如果不是在表演高难度特技的话,我打赌你一定在汽车广告中看到过。你想没想过这是为什么呢?真实的生活如流水般不可中断,而视频摄像头每秒钟只记录了有限数量的画面。每 ...…

查看全部问答>