电子_精灵

  • 2019-06-25
  • 发表了主题帖: STM32中断优先级讲解

    STM32中断优先级彻底讲解 一、综述       STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最多可以有四位数)。 二、优先级判断       STM32(Cortex-M3)中有两个优先级的概念——抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级。       具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。       当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。 三、优先级分组       既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位在NVIC应用中断与复位控制寄丛器(AIRCR)的中断优先级分组域中,可以有8种分配方式,如下: 所有8位用于指定响应优先级 最高1位用于指定抢占式优先级,最低7位用于指定响应优先级 最高2位用于指定抢占式优先级,最低6位用于指定响应优先级 最高3位用于指定抢占式优先级,最低5位用于指定响应优先级 最高4位用于指定抢占式优先级,最低4位用于指定响应优先级 最高5位用于指定抢占式优先级,最低3位用于指定响应优先级 最高6位用于指定抢占式优先级,最低2位用于指定响应优先级 最高7位用于指定抢占式优先级,最低1位用于指定响应优先级       这就是优先级分组的概念。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------       Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位(AIRCR高四位),这4个寄存器位的分组方式如下: 第0组:所有4位用于指定响应优先级 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级 第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级 第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级 第4组:所有4位用于指定抢占式优先级       可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种: NVIC_PriorityGroup_0 => 选择第0组 NVIC_PriorityGroup_1 => 选择第1组 NVIC_PriorityGroup_2 => 选择第2组 NVIC_PriorityGroup_3 => 选择第3组 NVIC_PriorityGroup_4 => 选择第4组       中断优先级分组是为了给抢占式优先级和响应优先级在中断优先级寄丛器的高四位分配各个优先级数字所占的位数。在一个程序中只能设定一次 四、中断源的优先级       接下来就是指定中断源的优先级,中断源优先级是在中断优先级寄存器中设置的,只能设置及高四位,必须根据中断优先级分组中设置好的位数来在该寄存器中设置相应的数值。假如你选择中断优先级分组的第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级,那么抢占式优先级就有000-111共八种数据选择,也就是有八个中断嵌套,而响应优先级中有0和1两种,总共有8*2=16种优先级。 中断源优先级具体的设置了该中断源的优先级别       在一个程序中可以设定多个(最多16个)优先级,每个中断源只能设定的一个。       每写一个关于中断优先级的程序必须包含下列两个函数: (1)void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)中断分组设置 (2)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)中断优先级设置

  • 2019-05-24
  • 上传了资料: TTP223-BAT触摸按键控制芯片

  • 2019-05-17
  • 发表了主题帖: TTL电平、CMOS电平、RS232电平的介绍

    本帖最后由 电子_精灵 于 2019-5-17 16:51 编辑         本文主要介绍了一下关于TTL电平、CMOS电平、RS232电平的知识要点,希望对你的学习有所帮助。        一、TTL电平:        TTL 电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑“1”,0V等价于逻辑“0”,这被称做TTL(Transistor- Transistor Logic 晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。        TTL 电平信号对于计算机处理器控制的设备内部的数据传输是很理想的,首先计算机处理器控制的设备内部的数据传输对于电源的要求不高以及热损耗也较低,另外 TTL电平信号直接与集成电路连接而不需要价格昂贵的线路驱动器以及接收器电路;再者,计算机处理器控制的设备内部的数据传输是在高速下进行的,而TTL 接口的操作恰能满足这个要求。TTL型通信大多数情况下,是采用并行数据传输方式,而并行数据传输对于超过10英尺的距离就不适合了。这是由于可靠性和成本两面的原因。因为在并行接口中存在着偏相和不对称的问题,这些问题对可靠性均有影响。        TTL输出高电平》2.4V,输出低电平=2.0V,输入低电平2.4V。        输入 L: 2.0V        TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。        二、CMOS电平:        “1”逻辑电平电压接近于电源电压,“0”逻辑电平接近于 0V。而且具有很宽的噪声容限。Vcc:5V;VOH>=4.45V;VOL=3.5V;VIL=3.2V;VOL=2.0V;VIL=2V;VOL=1.7V;VIL

  • 发表了日志: TTL电平、CMOS电平、RS232电平的介绍

  • 2019-05-15
  • 发表了主题帖: arm汇编指令WFI和WFE

    1. 前言很早以前就知道有WFI和WFE这两个指令存在,但一直似懂非懂。最近准备研究CPU idle framework,由于WFI是让CPU进入idle状态的一种方法,就下决心把它们弄清楚。WFI(Wait for interrupt)和WFE(Wait for event)是两个让ARM核进入low-power standby模式的指令,由ARM architecture定义,由ARM core实现。听着挺简单,但怎么会有两个指令?它们的区别是什么?使用场景是什么?深究起来,还挺有意思,例如:能想象WFE和spinlock的关系吗?2. WFI和WFE1)共同点WFI和WFE的功能非常类似,以ARMv8-A为例(参考DDI0487A_d_armv8_arm.pdf的描述),主要是“将ARMv8-A PE(Processing Element, 处理单元)设置为low-power standby state”。需要说明的是,ARM architecture并没有规定“low-power standby state”的具体形式,因而可以由ARM core自行发挥,根据ARM的建议,一般可以实现为standby(关闭clock、保持供电)、dormant、shutdown等等。但有个原则,不能造成内存一致性的问题。以 Cortex-A57 ARM core为例,它把WFI和WFE实现为“put the core in a low-power state by disabling the clocks in the core while keeping the core powered up”,即我们通常所说的standby模式,保持供电,关闭clock。2)不同点那它们的区别体现在哪呢?主要体现进入和退出的方式上。对WFI来说,执行WFI指令后,ARM core会立即进入low-power standby state,直到有WFI Wakeup events发生。而WFE则稍微不同,执行WFE指令后,根据Event Register(一个单bit的寄存器,每个PE一个)的状态,有两种情况:如果Event Register为1,该指令会把它清零,然后执行完成(不会standby);如果Event Register为0,和WFI类似,进入low-power standby state,直到有WFE Wakeup events发生。WFI wakeup event和WFE wakeup event可以分别让Core从WFI和WFE状态唤醒,这两类Event大部分相同,如任何的IRQ中断、FIQ中断等等,一些细微的差别,可以参考“DDI0487A_d_armv8_arm.pdf“的描述。而最大的不同是,WFE可以被任何PE上执行的SEV指令唤醒。所谓的SEV指令,就是一个用来改变Event Register的指令,有两个:SEV会修改所有PE上的寄存器;SEVL,只修改本PE的寄存器值。下面让我们看看WFE这种特殊设计的使用场景。3. 使用场景1)WFIWFI一般用于cpuidle。2)WFEWFE的一个典型使用场景,是用在spinlock中(可参考arch_spin_lock,对arm64来说,位于arm64/include/asm/spinlock.h中)。spinlock的功能,是在不同CPU core之间,保护共享资源。使用WFE的流程是: a)资源空闲b)Core1访问资源,acquire lock,获得资源c)Core2访问资源,此时资源不空闲,执行WFE指令,让core进入low-power stated)Core1释放资源,release lock,释放资源,同时执行SEV指令,唤醒Core2e)Core2获得资源 以往的spinlock,在获得不到资源时,让Core进入busy loop,而通过插入WFE指令,可以节省功耗,也算是因祸(损失了性能)得福(降低了功耗)吧。

  • 2019-05-14
  • 发表了主题帖: STM32 中 BIT_BAND(位段/位带)和别名区使用入门

    一、 什么是位段和别名区 是这样的,记得MCS51吗? MCS51就是有位操作,以一位(BIT)为数据对象的操作,MCS51可以简单的将P1口的第2位独立操作: P1.2=0;P1.2=1 ;这样就把P1口的第三个脚(BIT2)置0置1。而现在STM32的位段、位带别名区就为了实现这样的功能。 它的对象可以是SRAM、I/O和外设空间。要实现对这些地方的某一位的操作。它是这样做的:在寻址空间(32位对应的地址空间为 4GB )的另一地方,取个别名区空间,从这个地址开始处,每一个字(32BIT)对应SRAM或I/O的一位。 这样,1MB SRAM 就可以有 32MB 的对应别名区空间,就是1位膨胀到32位(1 BIT 变为1个字节)。我们对这个别名区空间内的某一字操作(置0或置1),就等于它映射的 SRAM 或 I/O 相应的某地址的某一位的操作。 二、 使用位段的好处 简单来说,可以把代码缩小, 速度更快,效率更高,更安全。 一般操作要6条指令,而使用位带别名区只要4条指令。一般操作是 读-改-写 的方式, 而位带别名区是 写 操作。防止中断对 读-改-写 的方式的影响。 三、应用说明 支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个 32 位的字。 每个比特膨胀成一个32 位的字,就是把 1M 扩展为 32M 。 于是,位于 RAM 地址 0X200000000 的一个字节扩展为8个32 位的字,扩展后每位相对应的的地址是:0X220000000,0X220000004,0X220000008,0X22000000C,0X220000010,0X220000014, 0X220000018,0X22000001C 支持位带操作的两个内存区的范围是: 0x2000 0000‐0x200F FFFF(SRAM 区中的最低1MB) 0x4000 0000‐0x400F FFFF(片上外设区中的最低1MB) 对 SRAM 位带区的某个比特,记该比特所在字节的地址为A,位序号为 n (0

  • 2019-05-13
  • 发表了主题帖: STM32学习笔记之GPIO口的使用

                    一、GPIO口简介 1、   GPIO口输入输出模式 1.1 一般来说STM32的输入输出管脚有以下8种配置方式: 输入 ① 浮空输入_IN_FLOATING  ——浮空输入,可以做KEY识别 ② 带上拉输入_IPU          ——IO内部上拉电阻输入   ③ 带下拉输入_IPD              ——IO内部下拉电阻输入 ④ 模拟输入_AIN            ——应用ADC模拟输入,或者低功耗下省电 输出 ⑤ 开漏输出_OUT_OD        ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。 ⑥ 推挽输出_OUT_PP       ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的。 复用输出 ⑦ 复用功能的推挽输出_AF_PP   ——片内外设功能(I2C的SCL,SDA) ⑧ 复用功能的开漏输出_AF_OD  ——片内外设功能(TX1,MOSI,MISO,SCK,SS) 2、输入输出模式详解 一般我们平时用的最多的也就是推挽输出、开漏输出、上拉输入,介绍如下: 2.1推挽输出: 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 2.2开漏输出: 输出端相当于三极管的集电极。 要得到高电平状态需要上拉电阻才行。 适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内) 开漏形式的电路有以下几个特点: 1、 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很小的栅极驱动电流。 2、 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。) 3、 OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。 4、可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。 补充:什么是“线与”?:在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上。 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS), 晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑。 如果这个结点后面加一个反相器, 就是或 OR 逻辑。 其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。 关于推挽输出和开漏输出,最后概括一下: 推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。开漏输出形式,需要接上拉。 2.3浮空输入 :对于浮空输入,一直没找到很权威的解释。2.4  上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。 2.5  复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用) 二、GPIO口配置 1、根据具体应用配置为输入或输出 ① 作为普通GPIO输入: 根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。 ② 作为普通GPIO输出: 根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。 ③ 作为普通模拟输入: 配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。 ④ 作为内置外设的输入: 根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。 ⑤ 作为内置外设的输出: 根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。 2、输出模式下,配置速度I/O口输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配。 2.1     对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速就够 了,既省电也噪声小。 2.2    对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的 GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。 2.3    对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。 3、GPIO口初始化 ①使能GPIO口的时钟 ②配置模式设置(8种模式)     STM32的GPIO的时钟统一挂接在APB2上,具体的使能寄存器为RCC_APB2ENR该寄存器的第2位到第8位分别控制GPIOx(x=A,B,C,D,E,F,G)端口的时钟使能。 如打开PORTA时钟  RCC->APB2ENR|=1

  • 发表了日志: STM32学习笔记之GPIO口的使用

  • 回复了主题帖: PID控制算法的C语言实现

    后续资料见:http://download.eeworld.com.cn/d ... %BE%E7%81%B5/601269

  • 2019-05-10
  • 上传了资料: PID控制算法详解

  • 上传了资料: PID控制算法的C语言实现

  • 发表了主题帖: PID控制算法的C语言实现

    本帖最后由 电子_精灵 于 2019-5-10 15:50 编辑    在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,想想牛顿的力学三大定律吧,想想爱因斯坦的质能方程吧,何等的简单!简单的不是原始的,简单的也不是落后的,简单到了美的程度。先看看PID算法的一般形式:  PID的流程简单到了不能再简单的程度,通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在t时刻):   1.输入量为rin(t);   2.输出量为rout(t);   3.偏差量为err(t)=rin(t)-rout(t);   pid的控制规律为   理解一下这个公式,主要从下面几个问题着手,为了便于理解,把控制环境具体一下:   1.规定这个流程是用来为直流电机调速的;   2.输入量rin(t)为电机转速预定值;   3.输出量rout(t)为电机转速实际值;   4.执行器为直流电机;   5.传感器为光电码盘,假设码盘为10线;   6.直流电机采用PWM调速 转速用单位 转/min 表示;  不难看出以下结论:   1.输入量rin(t)为电机转速预定值(转/min);   2. 输出量rout(t)为电机转速实际值(转/min);   3.偏差量为预定值和实际值之差(转/min);   那么以下几个问题需要弄清楚:   1.通过PID环节之后的U(t)是什么值呢?   2.控制执行器(直流电机)转动转速应该为电压值(也就是PWM占空比)。   3.那么U(t)与PWM之间存在怎样的联系呢?这篇文章上给出了一种方法,即,每个电压对应一个转速,电压和转速之间呈现线性关系。但是我考虑这种方法的前提是把直流电机的特性理解为线性了,而实际情况下,直流电机的特性绝对不是线性的,或者说在局部上是趋于线性的,这就是为什么说PID调速有个范围的问题。所以在正式进行调速设计之前,需要现有开环系统,测试电机和转速之间的特性曲线(或者查阅电机的资料说明),然后再进行闭环参数整定。这篇先写到这,下一篇说明连续系统的离散化问题。并根据离散化后的特点讲述位置型PID和增量型PID的用法和C语言实现过程。

  • 发表了日志: PID控制算法的C语言实现

  • 回复了主题帖: 使用STVP对STM8进行加密和解除写保护

    自己回复一下

  • 2019-05-09
  • 回复了主题帖: SWIM引脚是用来给STM8单片机下载程序的

    给自己回复一下

  • 发表了主题帖: SWIM引脚是用来给STM8单片机下载程序的

    什么是SWIMSWIM的全称是:Serial Wire Interface Module,即单总线接口模块。ST意法半导体的单片机中STM32支持串口下载程序、JLINK接口、SWD等接口。STM8用SWIM来下载程序。SWIM只需要一根线就可以,大大节省IO口。 SWIM下载口设计SWIM下载时有三线制或者四线制。三线制的线序为:VCC,GND,SWIM,四线制的线序为:VCC,GND,RST,SWIM。下图是四线制的下载口电路图。 下图是三线制的SWIM接口,比四线制少了RST复位信号。 https://ask-fd.zol-img.com.cn/t_s800x800/g5/M00/0D/03/ChMkJlwl0HCIXcCiAABOBRlZHpYAAuC1wOJgcgAAE4d025.jpg SWIM如何当作GPIO使用SWIM下载口,也可以当做普通GPIO口来使用,但是在设计电路时要注意,如果硬件上不做处理,烧写后该口就被锁死了,烧写一次后就再也无法烧写了,这时候一般用跳线或者按键配合程序来实现。 SWIM使用什么工具SWIM接口是ST意法半导体的单片机才有的,只能使用STLINK来烧写程序,STLINK目前的版本是V2

  • 发表了日志: SWIM引脚是用来给STM8单片机下载程序的

  • 上传了资料: 如何将程序拷贝在 RAM 中运行

  • 上传了资料: stm8s触摸按键

  • 发表了主题帖: 使用STVP对STM8进行加密和解除写保护

    1. 下载和安装 ST-LINK 驱动和 STVP 软件 - STVP 和 STVD 都在 sttoolset 里面: http://www.st.com/st-web-ui/stat ... /resource/technical /software/sw_development_suite/sttoolset.zip - ST-LINK 驱动好像 sttoolset 里面也有了。 2. 板子上电,连接好 ST-LINK。 3. 打开 STVP: 运行“开始”->ST Toolset->Development Tools -> ST Visual Programmer 4. 连接配置:运行 Configure -> Configure ST Visual Programmer 选择 ST-LINK, USB, SWIM, STM8S003F3 5. 选择程序:运行 File->Open,选择要下载的.hex 或者.srec 文件。 6. 下载程序:运行 Program -> All tabs ,执行下载。 Hardware: 烧录工具。 Port: USB。 Programming mode: SWIM。 Device: 选择要烧录的型号。 打开要烧录的目标文件 “File -> Open…”。 DATA MEMORY: EEPROM 数据区。 配置 OPTION BYTE 选项的界面如图 2-67 所示。 图 2-67 配置 OPTION BYTE Value: 可直接在此框内直接输入配置好的 OPTION BYTE 值,OPTION BYTE 内容根据 Value 的值自动配置好。 以 STM8S105S4 为例说明 OPTION BYTE 的配置。如图 2-68 所示。 图 2-68 OPTION BYTE 配置举例 ROP:读出保护设置。若设置了 ON,那么程序是就无法读出。 UBC [7:0]:用户启动代码区。一般用户在做 IAP 时,需要保护的代码部分设置。 AFR[7:0]: 备选功能重映射选项。通过此来设置需要的功能。比如同一个引脚会有不同的 功能。可通过此选项来设置需要的功能。 HSITRIM:高速内部时钟调节寄存器大小。 LSI_EN: 低速内部时钟使能。 IWDG_HW: 独立看门狗。 WWDG_HW: 窗口看门狗激活。 WWDG_HALT: 当芯片进入停机模式时窗口看门狗的复位动作。 EXT_CLK: 外部时钟选择。 CKAWUSEL: 自动唤醒单元/时钟。 PRSC[1:0]: AWU 时钟预分频。 HSECNT[7:0]: HSE 晶体振荡器稳定时间。 BOOTLOADER ENABLE: 如果用户使用 UART 来下载程序,可通过此选项位来设置。 更多的信息,可参考 STM8S105S4 的数据手册。 选择“Program>All tabs(on action sectors if any)”。 此选项可将“PROGRAMM MEMORY,DATA MEMORY 和 OPTION BYTE”一起烧录到 STM8 里面去。如图 2-69 所示。 编程的三个区域: 程序区 数据区 选项区,点击三个中的任意一个,出现黑体表示被激活 程序区:写程序的 FLASH 区域 数据区: 保存数据的 EEPROM 区域 选项区:加密等功能 加密设置 第一步,点击进入选项区,将 ROP 项设为 Read Out Pretection ON 第二步,执行当前窗口中中间红色的,就把加密位写进去了,这样芯片就加密了,再也不能 读出其中的内容了。 解除芯片加密 如果芯片已经加密,想重新写程序进去,必须先擦除保密位 第一步,点击激活选项区,ROP 设为 Read Out Pretection OFF 第二部 执行所有窗口中中间红色的,芯片加密位擦除,可以重新写程序,但是里面的内容 全部清除了

最近访客

< 1/1 >

统计信息

已有8人来访过

  • 芯币:97
  • 好友:--
  • 主题:8
  • 回复:3
  • 课时:--
  • 资源:6

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言