使用这个功能是在IAP在线升级时需要用的。
最初使用在EEPROM或者FLASH存储一个标志位。程序跳转到BootLoader,BootLoader来判断是否需要升级。这样是可以用的,但是这样有个弊端:如果升级中出现问题,或者其他原因,导致主程序无法正常运行,看门狗咬死程序,程序复位。这样子的话,程序会一直在 引导--引导程序检测到不需要IAP--跳转到应用程序--看门狗咬死--复位--引导,进入死循环,程序判断不了应用程序已经坏掉。只能去现场来进行调试设备。
使用,禁止系统启动时的变量初始化。在BootLoader与应用程序,都在同一个地址定义相同的变量,在非断电初始化的时候,此变量是不会复位的。在BootLoader中,每初始化一次,对此变量+1,在应用程序当中赋值为0。当次变量大于一定的数值的时候,则认为应用程序有问题,重新进行IAP。当应用程序收到升级指令的时候,直接把这个变量赋值为相应的值。
STM32的开发环境有两种IAR与KEIL,这两种的禁止系统启动时的变量初始化的方式也是不同的。
方法如下:
IAR
直接定义变量: 在什么地址:
__no_init u16 Fg_Noinit@0x20000000;
如果不是IAP使用的话,可以这样:
_no_init u16 Fg_Noinit;
KEIL的方式略微复杂一些:
首先要在Target中对RAM做配置
NoInit某个地址范围
之后定义变量
__attribute__((at(0x20000000))) u8 Noinit;
关键字:STM32 单片机 系统启动 变量初始化
引用地址:
STM32单片机,禁止系统启动时的变量初始化
推荐阅读最新更新时间:2024-11-11 13:57
51单片机开发系列五_矩阵按键扫描
在嵌入式系统中,用的最多的输入设备就是按键,用户的应用需求可通过相应按键传递到系统软件中,软件转而完成用户请求,实现简单的人机交互。笔者此处就矩阵按键的实现作一个简单的介绍。 1. 按键输入概述 按键是一种常开型按钮开关,平时键的二个触点处于断开状态,按下键时它们才闭合。按键控制电路就是用来实时监视按键,当有键接下时,电路监控中的输入引脚电平发生变化,检测到这种变化后,控制电路进行按键扫描,定位按键的位置,并把相关的按键信息反馈回上一层应用中。常见的按键输入设计有独立式按键,矩阵式按键。独立式按键每个键占用一个IO口,电路配置灵活,软件简单,但按键较多时,IO口浪费大。矩阵式按键适用于按键数量较多的场合,由行线和列线组成,按键位
[单片机]
AVR单片机定时/计数器学习笔记(三)
定时/计数器1(16位)有普通模式、CTC模式、快速PWM模式、相位修正PWM模式等工作模式。 3.快速PWM模式(需要用到OC1A、OC1B两个引脚) 前提:由TCCR1B的bit4、bit3和TCCR1A的bit1、bit0组合来设置波形产生模式为模式15(快速PWM )。 (1)TCCR1A的bit7、bit6用于设置OC1A脚的比较输出模式,bit5、bit4用于设置OC1B脚的比较输出模式。(此处我们设为,OC1A比较匹配时取反;OC1B比较匹配时清零,TOP时置位) (2)TCCR1B的bit2、bit1、bit0设置时钟频率。 (3)OCR1A用来设置计数的上限值,OCR1B用来设置
[单片机]
基于STM32 I2C的TMP101温度传感器的C源码
搞这个历程差不多花了我一个周末的时间,一片小小的TMP101确实让我破费脑筋。最后甚至使用了示波器直接观察SDA SCL 的波形。不过示波器的使用确实纠正我一个严重且低级的错误。这期间也在网上搜过STM32 的I2C 应用 大多都是在说 STM32 的I2C固件库写的烂、STM32的硬件有问题、I2C接口没法用等等,最后解决方式都是用软件像51那样用IO口软件模拟IIC时序。但我看了STM32最新的勘误表,根本没有所谓STM32的IIC硬件设计缺陷。我可不想把STM32用的像8051一样。我要用高效的硬件I2C而且要用ST官方库来实现~! 心得: 函数 I2C_CheckEvent () 这个典型的用法是 while(!
[单片机]
全面直击MSP430微控制器全家族成员
德州仪器(TI)MSP430系列微控制器,凭借着它的超低功耗在电子行业中占据着举足轻重的行业地位,同时提供最低的功耗和集成外设已成了MSP430绑定的行业标签,将适用范围广的低功耗和便携式应用完美结合…… 同时TI提供的MSP微控制器强大的设计支持,包括技术文档,培训,如果你需要现在开始就可以运用硬件和软件工具…… 下面我们”沙场点兵”MSP430系列中全家族成员,把握机遇、参透技术、运用自如…… NO.1:MSP430F1系列产品 MSP430F1系列为超低功耗MCU系列16位微控制器(MCU),用于广泛的应用,包括消费电子,数据记录应用,便携式医疗仪器… 经典产品:MSP430F112--16 位超低功耗微控制器,具
[单片机]
STM32 ADC采样时间、采样周期、采样频率计算方法
ADC转换就是输入模拟的信号量,单片机转换成数字量。读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期。采样周期一般来说=转换时间+读取时间 。而转换时间=采样时间+12.5个时钟周期。采样时间是你通过寄存器告诉 STM32 采样模拟量的时间,设置越长越精确 一 STM32 ADC采样频率的确定 1. :先看一些资料,确定一下ADC的时钟: (1),由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。CLK控制器为ADC时钟提供一个专用的可编程预分频器。 (2) 一般情况下在程序 中将 PCLK2 时钟设为 与系统时钟 相同 RCC_HCLKConfig(RCC_SYSCLK_Div1); RC
[单片机]
意法半导体:MCU品类丰富,全面满足家电企业多样化需求
MCU是家电行业应用较为广泛的芯片 。近日,2020~2021年MCU因供应紧缺导致的涨价潮如今遭遇了价格腰斩。其中,小家电的MCU价格下降幅度较为明显。 究其原因,一方面下游需求放缓,另一方面此前厂商扩产,如今产能开始释放,MCU的供应紧张局面已经得到有效改善。在此背景下,《电器》记者采访了意法半导体大中华暨南亚区通用微处理器部门市场部区域经理熊红辉,了解了意法半导体在家电MCU供应领域的独特地位以及今后的布局思路。 产品范围广,精准满足家电行业需求 家电产品种类众多,对MCU的功能、封装需求各异,意法半导体的MCU覆盖各种嵌入式应用,大到冰箱、空调、洗衣机,小到吸尘器、扫地机、电动牙刷、自动洗手液、遥控器等。
[单片机]
单片机学习的四个阶段
第一阶段 是先浏览教科书里的硬件部分,大至了解单片机的硬件结构。如 ROM、RAM、地址、I/O口等,以及看一些厂家的MCU资料(Data Sheet),来加强MCU所提供各项资源的印象。 第二阶段 就是了解二进位数字、十六进位数和软件方面的内容。尽管有很多 高级语言可用于单片机的编程,但我觉得初学还是以汇编语言为好,更有利于和硬件结合,掌握硬件结构。知道汇编语言、机器语言、 指令、 程序等概念后,就从MOV指令开始,学习汇编语言和编程,在此如51的MCU汇编语言系统有 111条指令,简单又好理解它们怎 样和硬件联系,更有助于一般学习单片机的指令整合与运用.因此其方法可先了 解几条基本的MOV指令和它
[单片机]
单片机的常见输入输出电路介绍(一)
针时电气控制产品的特点,讨论了几种单片机常用输入/ 输出电路 的设计方法,对合理地设计电气控制系统,提高电路的接口能力,增强系统稳定性和抗干扰能力有实际指导意义。 引 言 传统电气设备采用的各种控制信号,必须转换到与单片机输入/输出口相匹配的数字信号。用户设备须输入到单片机的各种控制信号,如限位开关,操作按钮、选择开关、行程开关以及其他一些传感器输出的开关量等,通过输入电路转换成单片机能够接收和处理的信号。输出电路则应将单片机送出的弱电控制信号转换、放大到现场需要的强输出信号,以驱动功率管、电磁阀和继电器、接触器、电动机等被控制设备的执行元件,能方便实际控制系统使用。 1 输入电路设计 一般输入信号最终会以
[模拟电子]