立即注册 找回密码

微雪课堂

搜索
微雪课堂 首页 STM8 STM8单片机内核剖析 查看内容

STM8 CPU

2015-7-13 11:05| 发布者: kaloha| 查看: 2471| 评论: 0

摘要: 简介STM8S是基于8位框架结构的微控制器,其CPU内核有6个内部寄存器,通过这些寄存器可高效 地进行数据处理。STM8S的指令集支持80条基本 20种寻址模式,而且CPU的6个内部寄 存器都拥有可寻址的地址。如果想了解全部ST ...

简介
STM8S是基于8位框架结构的微控制器,其CPU内核有6个内部寄存器,通过这些寄存器可高效 地进行数据处理。STM8S的指令集支持80条基本 20种寻址模式,而且CPU的6个内部寄 存器都拥有可寻址的地址。如果想了解全部STM8S指令集,请参考STM8 微控制器家族编程手册 (PM0044)。

CPU寄存器

在图1所示的编程模型中可以看到6个CPU寄存器。在一个中断发生后,寄存器以图2所示顺序入栈,它们以相反的顺序出栈。如果需要的话,中断服务程序可使用POP和PUSH指令来对之进行操作。

CPU寄存器描述

  • 累加器(A) 
    累加器是一个8位通用目的寄存器,用于保存算术运算、逻辑运算以及数据操作的操作数及结果。 

  • 索引寄存器(X和Y) 
    X和Y都是16位的寄存器,可实现高效率的寻址模式。它们也可用作数据操作的暂存器以及用于像乘除法这样的操作。在大多数情况下,交叉汇编器会在使用了Y寄存器的指令代码中生成PRECODE指令,用以和使用了X寄存器的指令相区别。 

  • 程序计数器(PC) 
    程序计数器是一个24位的寄存器,用于存储CPU下一条要执行指令的地址。其内容在每一次指令操作后被自动刷新。由于程序指针有24位,因此STM8的最大寻址范围可达16M字节。

  • STM8编程模型
    (图1)

  • 堆栈指针(SP) 
    堆栈指针是一个16位的寄存器,其内容为堆栈中下一个可自由分配的单元地址。根据不同的型号,堆栈指针的高位会有一个指定的预设值。 
    堆栈一般用于在中断调用或子程序调用时存储 CPU的上下文(程序计数器,关键寄存器,相关函数的参数及局部变量,等等)。用户也可以通过POP和PUSH指令直接对堆栈操作。 
    SP可以被C编译器的启动代码初始化,C语言应用程序会根据用户所使用的包含绝对地址信息的链接文件来进行初始化。如果用户使用了自己编写的链接文件和启动代码,请确认SP被恰当地初始化(具体地址信息请参考相应的数据手册)。在MCU复位后,或在执行了堆栈复位指令后(RSP),堆栈指针被设为其被允许的最大值。对于使用了汇编语言的应用程序,用户可使用ST提供的启动代码或编写自己的启动代码来对SP进行正确的初始化。
    入栈操作使堆栈指针值减小,出栈操作使堆栈指针值增加。当堆栈指针值为其被允许的最小值时,继续入栈会使堆栈指针值回卷至其最大值,从而会导致先前存储的数据被覆盖,但此时没有中断或硬件标志位来指示该事件发生。应用程序需确保堆栈被正确的操作,没有溢出。
    子程序调用会占用2或3字节空间。中断调用会占用9字节空间来存储内部寄存器(除SP之外)。请参考图2。 

    STM8入栈出栈顺序
    (图2)

    *注:WFI/HLAT指令会预先保存CPU上下文。如果CPU处于WFI或HALT状态下有中断发生,则进入中断所需的延时会相应减少。

  • 条件代码寄存器(CC) 
    条件代码寄存器是一个8位寄存器,用于指示刚刚被执行的指令结果及处理器的状态。寄存器的第7位(MSB)是保留位,这些位可以被用户的程序或代码单独地测试,测试的结果可用于指示程序或代码执行后的状态 。下面的段落将描述每一位的含义。
    • V:溢出 
      在上一次有符号数的算术操作中,如果结果的最高位有溢出发生,则当该位被置1。请参考INC,INCW,DEC,DECW,NEG,NEGW,ADD,ADDW,ADC,SUB,SUBW,SBC,CP,CPW等指令。
    • STM8中断级别
      (表1)

    • I1:中断屏蔽级别1 
      I1和I0共同用于指示当前状态下CPU的可中断性,请参考表1。通过执行RIM,SIM,HALT,WFI,IRET,TRAP和POP指令可对I1和I0置位或清零。I1和I0也会在CPU进入中断服务程序时被硬件自动设置为该中断对应的中断级别。
    • H:半进位 
      在执行ADD或ADC操作的过程中,当ALU的第3位和第4位间发生进位时,H位会被置1,这对于
      BCD码算术运算很有意义。
    • I0:中断屏蔽级别0 
      请参考表1。
    • N:负数 
      当上一次的算术、逻辑或数据操作的结果是负的情况下,N位被置1(例如结果的最高位是逻辑1)。
    • Z:零 
      当上一次的算术、逻辑或数据操作的结果是零时,Z位被置1。
    • C:进位 
      在上一次的算术操作中,如果结果的最高位发生进位或借位,则当该位被置1。当执行位测试,分支,移位,旋转和加载指令时,该位也会收到影响。请参考ADD,ADC,SUB, SBC等指令。 
      在除法操作中,C位用来指示在指令执行中是否有错误发生(商溢出或0作除数)。请参考DIV指令。 
      在位测试操作中,被测试的位被复制到C位;请参考BTJF,BTJT指令。在移位和旋转操作中,C位根据结果进行相应地更新;请参考RRC,RLC,SRL,SLL,SRA指令。 
      用户还可以通过SCF,RCF,CCF指令对C位进行置位,清除和取反。
      例子:加法操作

      STM8加法操作

以上资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!


177

顶一下

刚表态过的朋友 (177 人)

最新评论

所有教程
    01STM8 CPU
    简介STM8S是基于8位框架结构的微控制器,其CPU内核有6个内部寄存器,通过这些寄存器可
    02STM8 CPU寄存器映射
    CPU寄存器在STM8的地址空间映射如表2所示。只有CPU的调试模块才可以使用这些寄存器的
    03STM8 全局配置寄存器(CFG_GCR)
    激活级别用户可通过对CFG_GCR寄存器中的AL位编程来配置MCU的激活级别。如何使用该位请
    04STM8 用于系统启动的只读存储器
    在某些STM8型号中有2K字节的内部BOOT ROM,其中包含有用于启动的代码。这段代码的主
    05STM8 存储器和寄存器映射
    要了解关于STM8存储器映射、I/O端口硬件寄存器映射以及CPU/SWIM/调试模块/中断控制寄
    06STM8 FLASH主要特性
    STM8内部的FLASH程序存储器和数据EEPROM由一组通用寄存器来控制。用户可以使用这些寄
    07STM8 存储器组织结构
    STM8S的EEPROM以32位字长(每字4字节)为基础组织起来。根据不同的器件,存储器组织机
    08STM8 用户启动区域(UBC)
    用户启动区域(UBC)包含有复位和中断向量表,它可用于存储IAP及通讯程序。UBC有一个两
    09STM8 存储器保护
    读保护当选项字节中的ROP字节被编程为'0xAA'时,读保护就生效了。这种情况下,无论写
    010STM8 读同时写(RWW)
    RWW特性允许用户在执行程序和读程序存储器时对DATA EEPROM区域进行写操作,因此执行的
    011STM8 ICP和IAP
    在线编程(ICP)用于更新STM8整个存储器的内容。ICP使用SWIM接口把用户的程序装载到微控
    012STM8 FLASH寄存器
    FLASH控制寄存器1(FLASH_CR1)地址偏移值:0x00复位值:0x00位7:4保留位,必须保持为0
    013STM8 单线接口模块(SWIM)和调试模块(DM)
    介绍STM8在线调试模式或在应用编程模式由一个单线硬件接口来管理,该接口拥有对存储器
    014STM8 供电电源
    STM8 MCU有四种相对独立的供电电源:VDD/VSS:主电源(3V到5.5V)VDDIO/VSSIO:I/O口供
    015STM8 复位
    STM8S共有9个复位源:NRST引脚产生的外部复位上电复位(POR)掉电复位(BOR)独立看门狗复
    016STM8 复位(RST)寄存器
    复位状态寄存器(RST_SR)地址偏移值:0x00复位值:未定义位7:5保留位,必须保持为0位4E
    017STM8 复位寄存器地址映射
    复位状态寄存器(RST_SR)请参考对应的数据手册了解基地址信息。(表7:STM8复位寄存器地
    018STM8 时钟控制
    时钟控制器功能强大而且灵活易用。其目的在于使用户在获得最好性能的同时,亦能保证消
    019STM8 主时钟源
    下面4种时钟源可用做主时钟:1-24MHz高速外部晶体振荡器(HSE)最大24MHz高速外部时钟信
    020STM8 主时钟切换
    时钟切换功能为STM8用户提供了一种易用、快速、安全的从一个时钟源切换到另一个时钟源
    021STM8 外设时钟门控
    关闭未使用外设的时钟可使STM8降低功耗。外设的时钟门控(PCG)模式使用户可在运行模式
    022STM8 时钟安全系统(CSS)
    时钟安全系统用于监控HSE时钟源是否失效。当fMASTER使用HSE做为时钟源时,如果HSE时钟
    023STM8 时钟输出功能(CCO)
    可配置的时钟输出功能使STM8用户可在外部管脚CCO上输出指定的时钟。STM8S的用户可选择
    024STM8 时钟中断
    当下列事件发生时,时钟控制器可产生中断:主时钟源切换事件CSS事件这两个中断均可被
    025STM8 内/外部时钟寄存器
    STM8内部时钟寄存器(CLK_ICKR)地址偏移值:0x00复位值:0x01位7:6保留位,始终为0位5R
    026STM8 主时钟状态寄存器
    STM8主时钟状态寄存器(CLK_CMSR)地址偏移值:0x03复位值:0xE1位7:0CKM:主时钟状态位
    027STM8 时钟分频寄存器
    STM8时钟分频寄存器(CLK_CKDIVR)地址偏移值:0x06复位值:0x18位7:5保留。始终为0。位
    028STM8 外设时钟门控寄存器
    STM8外设时钟门控寄存器(CLK_PCKENR1)地址偏移值:0x07复位值:0xFF位7:0PCKEN1:外设
    029STM8 时钟安全系统寄存器
    STM8时钟安全系统寄存器(CLK_CSSR)地址偏移值:0x08复位值:0x00位7:4保留。始终为0。
    030STM8 可配置时钟输出寄存器
    STM8可配置时钟输出寄存器地址偏移值:0x09复位值:0x00位7保留。始终为0。位6CCOBSY
    031STM8 CAN外部时钟控制寄存器
    STM8 CAN外部时钟控制寄存器(CLK_CANCCR)地址偏移值:0x0B复位值:0x00位7:3保留。始
    032STM8 HSI时钟修正寄存器
    STM8 HSI时钟修正寄存器(CLK_HSITRIMR)地址偏移值:0x0C复位值:未定义位7:4保留。始
    033STM8 SWIM时钟控制寄存器
    STM8 SWIM时钟控制寄存器(CLK_SWIMCCR)地址偏移值:0x0D复位值:未定义位7:1保留。始
    034STM8 电源管理
    STM8电源管理默认情况下在系统或电源复位后,MCU处于运行模式。在这种模式下,CPU由fC
    035STM8 低功耗的时钟管理
    STM8降低系统时钟在运行模式,为了即能满足系统性能又能降低功耗,选择合适的系统时钟
    036STM8 低功耗模式
    四种STM8低功耗模式的主要特性如表12。(表12:STM8S低功耗模式管理)1.如果外设时钟未
    037STM8 模拟功耗控制
    STM8停机模式下的快速内存唤醒默认情况下,微控制器进入停机模式后FLASH是处于掉电状
    038STM8 中断控制器(ITC)
    STM8中断控制器简介中断控制器提供如下功能:硬件中断的管理所有I/O引脚都具有外部中
    039STM8 中断屏蔽和处理流程
    STM8 中断屏蔽和处理流程中断屏蔽是通过CC寄存器的位I1和位I0以及设置每个中断向量(表
    040STM8 中断源
    STM8 中断源STM8中断控制器处理2种类型的中断源:不可屏蔽的中断:RESET,TLI和TRAP可
    041STM8 中断和低功耗模式
    STM8 中断和低功耗模式所有的中断都可以使处理器从待机模式(Wait)退出。仅有外部中断
    042STM8 同时的和嵌套的中断管理
    STM8S提供2种中断管理模式:同时发生模式嵌套模式STM8同时发生中断管理模式在该模式下
    043STM8 中断指令
    STM8 中断指令表15列出了中断指令:(表15:STM8中断指令)
    044STM8 中断映射
    STM8中断映射下面表格列出了中断映射:(表16:STM8中断映射)
    045STM8 自动唤醒(AWU)
    简介AWU是用来当MCU进入低功耗的活跃停机(Active Halt)模式时提供一个内部的唤醒时间
    046STM8 AWU寄存器
    控制/状态寄存器(AWU_CSR)地址偏移值:0x00复位值:0x00位7:6保留位,必须保持为0位5W
    047STM8 蜂鸣器
    简介当LS时钟工作在128kHz时可产生频率为1kHz,2 kHz或者是4 kHz的蜂鸣信号。(图23:ST
    048STM8 独立看门狗(IWDG)
    STM8独立看门狗介绍独立看门狗模块可以用于解决处理器因为硬件或软件的故障所发生的错
    049STM8 通用输入输出口(GPIO)
    简介STM8的通用输入/输出口用于芯片和外部进行数据传输。一个IO端口可以包括多达8个引
    050STM8 窗口看门狗(WWDG)
    STM8窗口看门狗介绍窗口看门狗用于监测由于外部干扰或不可预知的逻辑条件所产生的软件
    051STM8 主时钟状态寄存器
    STM8主时钟状态寄存器(CLK_CMSR)STM8S提供三种类型的TIM定时器:高级控制型(TIM1)、通
    052STM8 16位高级控制定时器(TIM1)
    16位高级控制定时器(TIM1)简介STM8S的TIM1由一个16位的自动装载计数器组成,它由一个
    053STM8 时基单元
    STM8时基单元时基单元包含:16位向上/向下计数器16位自动重载寄存器重复计数器预分频
    054STM8 时钟/触发控制器
    STM8时钟/触发控制器时钟/触发控制器允许用户选择计数器的时钟源,输入触发信号和输出
    055STM8 触发同步
    STM8触发同步计数器允许四种触发输入ETRTI1TI2来自TIM5/TIM6的TRGOTIM1的计数器使用三
    056STM8 PWM模式
    STM8 PWM模式STM8的脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由T
    057STM8 针对马达控制的六步PWM输出
    STM8针对马达控制的六步PWM输出当在一个通道上需要互补输出时,预装载位有OCiM、CCiE
    058STM8 刹车功能 马达控制
    STM8 刹车功能STM8刹车功能常用于马达控制中。当使用刹车功能时,依据相应的控制位(TI
    059STM8 中断
    STM8 TIM1中断TIM1有8个中断请求源,分别映射到2个中断矢量上:刹车中断触发中断COM事
    060STM8 16位通用定时器(TIM2,TIM3,TIM5)
    介绍本章介绍了STM8通用定时器TIM2,TIM3和TIM5,其中TIM2有3个通道,TIM3有2个通道,
    061STM8 8位基本定时器(TIM4,TIM6)
    介绍该定时器由的8可位自动重载的向上计数器所组成,它可以用来作为时基发生器,具有
    062STM8 SPI简介 主要特征
    SPI简介串行外设接口(SPI)允许芯片与其他设备以半/全双工、同步、串行方式通信。此接
    063STM8 SPI从模式
    STM8 SPI从模式在从配置里,SCK引脚用于接收到从主设备来的串行时钟。SPI_CR1寄存器中
    064STM8 SPI主模式
    STM8 SPI主模式在主配置时,串行时钟在SCK脚产生。置配步骤1.通过SPI_CR1寄存器的BR位
    065STM8 单工通信
    STM8 单工通信SPI能够以两种配置工作于单工方式:1条时钟线和1条双向数据线1条时钟线
    066STM8 SPI状态标志
    STM8 SPI状态标志应用程序通过3个状态标志可以完全监控SPI总线的状态。总线忙(Busy)标
    067STM8 CRC计算
    STM8 CRC计算CRC校验仅用于保证通信的可靠性。数据发送和数据接收分别使用单独的CRC计
    068STM8 I2C接口主要特点
    STM8 I2C接口I2C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主功能,控制所
    069STM8 I2C从模式
    STM8 I2C从模式为了产生正确的时序,必须在I2C_FREQR寄存器中设定该模块的输入时钟。
    070STM8 I2C主模式
    STM8 I2C主模式在主模式时,I C接口启动数据传输并产生时钟信号。串行数据传输总是以
    071STM8 通用异步收发器(UART)
    STM8 UART介绍STM8S微控制器家族的通用同步异步收发器(UART1,UART2或UART3)提供了一
    072STM8 UART 发送器
    STM8 UART 发送器发送器根据M位的状态发送8位或9位的数据字。当M位置1,字长为9位,并
    073STM8 UART 接收器
    STM8 UART 接受器UART可以接收8位或9位的数据字。如果M位置1,字长为9位,其中MSB存放
    074STM8 多处理器通信
    STM8 多处理器通信通过UART可以实现多处理器通信(将几个UART连在一个网络里)。例如某
    075STM8 单线半双工通信
    STM8 单线半双工通信UART可以配置成遵循单线半双工协议。单线半双工模式通过设置UART_
    076STM8 智能卡
    STM8智能卡设置UART_CR5寄存器的SCEN位选择智能卡模式。在智能卡模式下,下列位必须保
    077STM8 IrDA红外功能
    STM8 IrDA红外功能通过设置UART_CR5寄存器的IREN位选择IrDA模式。UART_CR3寄存器的STO
    078STM8 LIN主模式
    STM8 LIN模式功能描述在LIN模式下,LIN标准要求的数据格式是8位数据位加1位停止位。完
    079STM8 控制器局域网(beCAN)
    STM8控制器局域网(beCAN)简介beCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持C
    080STM8 beCAN工作模式
    STM8 beCAN工作模式beCAN有3个主要的工作模式:初始化模式、正常模式和睡眠模式。 在
    081STM8 模拟/数字转换器(ADC)
    STM8模拟/数字转换器(ADC)简介ADC1和ADC2是10位的逐次比较型模拟数字转换器。提供多达
    082STM8 模拟/数字转换器(ADC) 转换模式
    STM8模拟/数字转换器(ADC)转换模式ADC支持5种转换模式:单次模式,连续模式,带缓存的
    083STM8 模拟看门狗
    STM8模拟看门狗在单次转换模式和不带缓存的连续模式中模拟看门狗可以通过置位ADC_CSR
    084STM8 ADC时序图
    STM8 ADC时序图如图149所示,在ADC上电后,在开始精确转换之前ADC需要一个稳定时间tST
STM8

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2019-10-24 07:13 , Processed in 0.021402 second(s), 18 queries .

Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc & Style Design

返回顶部