我们在看STM32中文参考手册p316页IWDG独立看门狗时,看到“如果用户在选择字节中启用了“硬件看门狗”功能,在系统上电复位后,看门狗会自动开始运行;如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位 ”这样一段关于硬件看门狗的描述,那么什么是硬件看门狗,与软件看门狗什么区别呢,这里的选择字节说的是哪呢,我们接着往下说
1.硬件看门狗和软件看门狗的区别:
看门狗分为硬件看门狗和软件看门狗,硬件看门狗就是利用独立于处理器的定时器电路,当狗饿死后会产生复位信号并重启;而软件看门狗则是用处理器内部的某个定时器代替独立于处理器的定时器电路,显然后者不能摆脱处理器出现问题实现自动重启的功能,其意义也就大打折扣了。当然从硬件角度讲,这个软件看门狗也是“硬件”实现,而并非字面的“软件”意义了。
2.选择字节:
选择字节即我们32的flash中的选择字段,参看stm32闪存编程手册可看到,选择字段的作用主要用于我们选择是硬件模式的看门狗还是软件模式的看门狗以及设置进入停机或待机模式时系统是否复位的配置的。而选择字段的寄存器是通过选择字节寄存器(FLASH_OBR)来配置,由其复位值0x03ff fffc可知,我们的看门狗默认是硬件看门狗,而默认在进入待机模式和停机模式是不产生复位的。因此我们无须担心看门狗是否需要配置的问题,默认就是硬件看门狗
关键字:STM32 闪存 看门狗
引用地址:
STM32闪存选择字段和看门狗的关系
推荐阅读最新更新时间:2024-03-16 15:41
【菜鸟入门】stm32 之 USART
这是学习stm32的第四天了,怎么说呢?感触最大的是,细心最重要,为什么呢?昨天,一个二进制到十六进制换算出来问题,导致一个问题纠结了一下午,今天,在初始化时钟的时候,把9写成10,导致,串口到下午才调试好。 好吧,现在开始说串口。 在我的板子上,USART1对应的PIN是 PA10 --- RX INPUT Mode:0x8 PA9 ---TX OUTPUT Mode:0xb 其实串口初始化也就分下面几步: (1)PIN管脚时钟使能,特殊功能寄存器使能,即GPIOA和USART1时钟使能; (2)USART管脚配置,PA10配置成输入模式:0x8;PA9配置成输出模式;【前面讲过怎么配置】 (3)U
[单片机]
STM32单片机连接HC_SR04超声波模块测距
首先,先来看一下这个模块的基本功能和原理。 HC-SR04超声波测距模块可提供约2cm400厘米的非接触式距离感测功能,测距精度可达高到3毫米;模块包括超声波发射器,接收器与控制电路像智能小车的测距以及转向,或是一些项目中,常常会用到。智能小车测距可以及时发现前方的障碍物,使智能小车可以及时转向,避开障碍物。 注意是5v输入,但是我用stm32的3.3v输入也是没有问题的。 二,工作原理 1.给超声波模块接入电源和地 。2.给脉冲触发引脚(trig)输入一个长为20us的高电平方波 3.输入方波后,模块会自动发射8个40KHz的声波,与此同时回波引脚(echo)端的电平会由0变为1;( 当此时应
[单片机]
2020年之前闪存将成为存储领域的“王者”
艾利·哈拉里(由本刊在获得ISSCC 2012秘书处许可后拍摄)(点击放大) 闪存将成为存储领域的“王者”(点击放大) 全球最大的半导体电路国际会议“ISSCC 2012”于2012年2月20日(周一)在美国旧金山开幕。在主题演讲中美国晟碟(SanDisk)公司创始人、前CEO兼董事长艾利·哈拉里(Eli Harari)率先登台亮相,他以“Flash Memory—The Great Disruptor!”为题发表了演讲。 哈拉里在任期间一直专注于闪存领域,通过迅速削减成本,闪存陆续取代了现有的存储介质。哈拉里此次演讲题目中的Disruptor包含“破坏者”的意思。实际上,闪存“在从1991年到2012年的约2
[手机便携]
STM32之FSMC驱动LCD屏应用
首先,你得稍微了解一下FSMC的基本原理,就是说它是怎么用的,怎么配置,为什么能这么用。这个东西可以看看STM32F4的参考手册。这里不具体说了。 FSMC其实就是把芯片内部的数据总线和地址总线引出来了,其实51单片机也是有这个总线外接的。没有说把SRAM读到内部内存再读到CPU,SRAM就是内存,直接读到CPU的寄存器,通过内部的AHB总线传输的。 我使用的是野火开发板的屏,因为想用开发板提供的程序直接移植。(小白就只能干这种事)因为买的最小系统板是100脚封装的,所以在使用上有点小问题了。我在网上查了好多关于怎么在100引脚的板子上用FSMC上驱动LCD,没有找到合适的答案,既然自己运气好点,调出来了,那么就分享一下。
[单片机]
stm32 调试can总线丢帧的问题
问题出现的背景 需要写一个新的电机的驱动,使用can通讯,驱动比较简单,很快就写好了。自己单独测试一个电机的时候没有问题,正反转测什么的都很正常。本以为事情会很顺利,但是在测两个电机的时候,却发现很严重的问题,经常左电机不装或者是右电机不转。 问题的解决步骤 方案一: 1. 遇到这种问题通常都是加上一个延时,觉得可能就是发的太快了,时许上可能有问题,但是我们的系统是一个实时的系统延时的时间不能太长。 2. 经过测试发现加延时可能较小出现这种问题的概率,但是不能解决这个问题,最终车子还是无法正常运行,没办法这个方案不行。 分析: 既然加延时不行的话,只能去找为什么电机不装。使用can转usb将数据抓出来之后,发
[单片机]
stm32专题十九:FatFs文件系统简单读写
首先,我们需要向FatFs来提供一些硬件接口,包括储存设备的初始化,读 / 写函数,硬件参数等,这些在diskio.c中实现: diskio.c /*-----------------------------------------------------------------------*/ /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2014 */ /*-----------------------------------------------------------------------*/ /* If a working sto
[单片机]
关于一个STM32编译报错问题,变量声明不能在语句后面
先来看一段STM32外设初始化代码:代码内容为初始化两个外设,在这里把他们都写到同一个函数里面了 static void ADC1_Mode_Config(void) { ADC_InitTypeDef ADC_InitStructure; DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(DMA1_Channel1); //设置DMA源:内存地址&串口数据寄存器地址 DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; //内存地址(要传输的变量的指针) DMA_InitStructure.DMA_MemoryBa
[单片机]
stm32.cube(九)——HAL.DMA
一、前言 DMA会在不同的寄存器/ram/存储设备之间建立通道,自动传输数据,以达到解放CPU的目的。 比如你想用DAC模块去输出一段特定的波形,就要让CPU将预设的数值不断写入DAC的寄存器。这时CPU被DAC任务长期占用,系统处理其他任务和响应其他事件的能力被大幅降低。 在实际应用里,经常有一些繁重的读写操作。这些操作不需要经过计算,却依然占用了大量的CPU资源,遇到这种情况就要考虑使用DMA了。 我开发板上的stm芯片上共有7个dma通道,它可以建立7个DMA连接。但是DMA控制器只有一个,所以同时只能有一个DMA连接被相应。 二、DMA的初始化 针对每一个DMA频道,都要初始化它的控制寄存器,来看一下DMA的init结构
[单片机]