4指令集和时钟讲解课件

上传人:ni****g 文档编号:588131622 上传时间:2024-09-07 格式:PPT 页数:21 大小:162KB
返回 下载 相关 举报
4指令集和时钟讲解课件_第1页
第1页 / 共21页
4指令集和时钟讲解课件_第2页
第2页 / 共21页
4指令集和时钟讲解课件_第3页
第3页 / 共21页
4指令集和时钟讲解课件_第4页
第4页 / 共21页
4指令集和时钟讲解课件_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《4指令集和时钟讲解课件》由会员分享,可在线阅读,更多相关《4指令集和时钟讲解课件(21页珍藏版)》请在金锄头文库上搜索。

1、第4章指令集和时钟目录目录v4.1 Thumb-2指令集介绍指令集介绍v4.2 指令格式指令格式v4.3 Cortex-M3时钟控制时钟控制目录目录v4.1 Thumb-2指令集介绍指令集介绍v4.2 指令格式指令格式v4.3 Cortex-M3时钟控制时钟控制4.1 Thumb-2指令集介绍vCortex-M3处理器支持Thumb-2指令集,与采用传统的Thumb指令集的ARM7相比,避免了ARM状态与Thumb状态来回切换所带来的额外开销,所有工作都可以在单一的Thumb状态下进行处理,包括中断异常处理。vCortex-M3处理器支持的Thumb-2指令集基于精简指令集计算机(RISC)原

2、理设计,是16位Thumb指令集的一个超集,同时支持16位和32位指令,指令集和相关译码机制较为简单,在一定程度上降低了软件开发难度。ARM与与Thumb指令集的关系:指令集的关系:Thumb指令集是指令集是ARM指令集的压缩子集指令集的压缩子集Thumb指令集(16位)ARM指令集(32位)Thumb与与Thumb-2和和Cortex-M3指令集的关系指令集的关系Cortex-M3指令集(16位和32位)Thumb指令集(16位)Thumb-2指令集(16位和32位)目录目录v4.1 Thumb-2指令集介绍指令集介绍v4.2 指令格式指令格式v4.3 Cortex-M3时钟控制时钟控制4.

3、2 指令格式详细的详细的ARM、Thumb和和Cortex-M3指令见指令见word文档文档指令集指令集大多数工程应用使用大多数工程应用使用C语言进行开发,很少使语言进行开发,很少使用汇编语言,只要大概了解汇编指令即可。用汇编语言,只要大概了解汇编指令即可。汇编语言用于阅读和编写启动代码,操作系汇编语言用于阅读和编写启动代码,操作系统移植、统移植、C与汇编混合编程等场合。与汇编混合编程等场合。ARM数值处理指令的格式:数值处理指令的格式: S , 其中其中号内的项是必须的,号内的项是必须的,号内的项是可选的。各项的说明号内的项是可选的。各项的说明如下:如下:vopcode:操作码,指令助记符,

4、如:操作码,指令助记符,如LDR、MOV等;等;vcond:执行条件,如:执行条件,如EQ,HI等,共等,共4位,对应位,对应15种条件种条件(1111系统保留);系统保留);vS:是否影响:是否影响CPSR寄存器的值;但当目的寄存器为寄存器的值;但当目的寄存器为PC时,时,S后缀表示将后缀表示将SPSR的内容恢复到的内容恢复到CPSR中,此种用法多用于异中,此种用法多用于异常处理返回。常处理返回。vRd:目标寄存器;:目标寄存器;vRn:第:第1个操作数的寄存器;个操作数的寄存器;voperand2:第:第2个操作数;个操作数;举例:举例:ADDS R0,R1,R2,LSL #3;R0=R1

5、+R2*8,影响条件标志位影响条件标志位STM32启动代码阅读示例启动代码阅读示例“startup_stm32f10x_hd.s”目录目录v4.1 Thumb-2指令集介绍指令集介绍v4.2 指令格式指令格式v4.3 Cortex-M3时钟控制时钟控制4.3 Cortex-M3时钟控制1. STM32时钟系统概述时钟系统概述1)系统时钟源)系统时钟源有3种来源:vHSI(内部高速RC时钟) 8MHzvHSE(外接高速时钟) 416MHz,典型值8MHzvPLL(锁相环时钟) 最大72MHz若未进行时钟设置,系统时钟默认使用HSI 8MHz时钟。还有以下2种二级时钟源: v 40kHz低速内部R

6、C LSI,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。 v32.768kHz低速外部晶体LSE,也可用来通过程序选择驱动RTC(RTCCLK)。 当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。 vSTM32时钟树参考 STM32中文中文参考手册参考手册V10P562)总线时钟)总线时钟vHCLK(高速时钟,AHB时钟)最大72MHzvFCLK(自由时钟,Cortex自由运行时钟)最大72MHzvPCLK1(APB1时钟,低速APB时钟)最大36MHzvPCLK2( APB2时钟,高速APB时钟)最大72MHz3)各外设使用的

7、时钟)各外设使用的时钟v系统时钟定时器STK:可设置为HCLK或HCLK的8分频vADC:PCLK2(APB2时钟)经2/4/6/8分频v定时器:可设置为与所在APB总线时钟一致或是2倍vRTC: 可使用LSE(32.768kHz外部低速时钟)、HSE/128或LSIvIIS:系统时钟SYSCLKv独立看门狗:LSI(40KHz低速内部时钟)时钟vUSB:PLLCLK的1/1.5分频得到的48MHz时钟v4)系统时钟(SYSCLK)选择 v系统复位后,HSI振荡器被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。 只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或

8、PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。在被选择时钟源没有就绪时,系统时钟的切换不会发生。直至目标时钟源就绪,才发生切换。在时钟控制寄存器(RCC_CR)里的状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。v当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大频率是64MHz。5)时钟输出 v微控制器允许输出时钟信号到外部MCO引脚。相应的GPIO端口寄存器必须被配置为相应功能。以下四个时钟信号可被选作MCO时钟: v SYSCLK v HSI v HSE v PLLCLKv时钟控制寄存器时钟控制寄存器RCC_CRv时钟配置寄存器时钟配置寄存器RCC_CFGR

9、vAPB2外设复位寄存器外设复位寄存器RCC_APB2RSTRvAPB1外设复位寄存器外设复位寄存器RCC_APB1RSTRvAHB外设时钟使能寄存器外设时钟使能寄存器RCC_AHBENRvAPB2外设时钟使能寄存器外设时钟使能寄存器RCC_APB2ENRvAPB1外设时钟使能寄存器外设时钟使能寄存器RCC_APB1ENR另外另外3个寄存器(时钟中断寄存器个寄存器(时钟中断寄存器RCC_CIR、备份域控制寄存、备份域控制寄存器器 RCC_BDCR、控制、控制/状态寄存器状态寄存器 RCC_CSR)不常用,)不常用,详见详见STM32中文参考手册中文参考手册V10第第6章复位和时钟控制章复位和时

10、钟控制2. 时钟系统相关寄存器时钟系统相关寄存器3. 时钟系统编程示例时钟系统编程示例 复位后系统时钟默认使用复位后系统时钟默认使用8MHz HSI,若要设置使用,若要设置使用HSE经经PLL倍频输出倍频输出72MHz,则时钟系统设置的一般步骤如下:,则时钟系统设置的一般步骤如下:1)复位时钟)复位时钟2)打开外部高速时钟)打开外部高速时钟HSE(RCC_CR)3)等待外部高速时钟)等待外部高速时钟HSE就绪(就绪(RCC_CR)4)设置)设置PLL倍频系数和总线预分频系数(倍频系数和总线预分频系数(RCC_CFGR)5)选择)选择PLL源(源( RCC_CFGR )6)使能)使能PLL(RC

11、C_CR)7)等待)等待PLL锁定(锁定(RCC_CR)8)选择)选择PLL输出为系统时钟(输出为系统时钟(RCC_CFGR)9)等待)等待PLL输出为系统时钟成功(输出为系统时钟成功(RCC_CR)10)打开各外设时钟()打开各外设时钟(RCC_AHBENR、RCC_APB2ENR、RCC_APB1ENR )v本本STM32开发平台使用开发平台使用8MHz外部时钟,经外部时钟,经PLL倍频(倍频(9倍)倍)后系统时钟后系统时钟SysCLK=72MHz,FCLK=HCLK=72MHz,PCLK1=36MHz, PCLK2=72MHz。RCC-APB1RSTR = 0x00000000;/复位结

12、束 RCC-APB2RSTR = 0x00000000; RCC-AHBENR = 0x00000014; /睡眠模式闪存和SRAM时钟使能.其他关闭. RCC-APB2ENR = 0x00000000; /外设时钟关闭. RCC-APB1ENR = 0x00000000;RCC-CR |= 0x00000001; /使能内部高速时钟HSION RCC-CFGR &= 0xF8FF0000; /复位SW1:0,HPRE3:0,PPRE12:0,PPRE22:0,ADCPRE1:0,MCO2:0 RCC-CR &= 0xFEF6FFFF; /复位HSEON,CSSON,PLLONRCC-CR &

13、= 0xFFFBFFFF; /复位HSEBYP RCC-CFGR &= 0xFF80FFFF; /复位PLLSRC, PLLXTPRE, PLLMUL3:0 and USBPRE RCC-CIR = 0x00000000; /关闭所有中断 /以上代码确保RCC复位,可省略RCC-CR|=0x00010000; /外部高速时钟使能HSEONwhile(!(RCC-CR17); /等待外部时钟就绪RCC-CFGR=0X00000400; /APB1=DIV2;APB2=DIV1;AHB=DIV1;RCC-CFGR|=7CFGR|=1ACR|=0x32; /FLASH 2个延时周期RCC-CR|=0

14、x01000000; /PLLONwhile(!(RCC-CR25);/等待PLL锁定RCC-CFGR|=0x00000002;/PLL作为系统时钟 while(temp!=0x02) /等待PLL作为系统时钟设置成功 temp=RCC-CFGR2;temp&=0x03; RCC-APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(18); /使能PORTG时钟阅读提示:阅读提示:#define _IO volatiletypedef unsigned int uint32

15、_t;typedef struct _IO uint32_t CR; _IO uint32_t CFGR; _IO uint32_t CIR; _IO uint32_t APB2RSTR; _IO uint32_t APB1RSTR; _IO uint32_t AHBENR; _IO uint32_t APB2ENR; _IO uint32_t APB1ENR; _IO uint32_t BDCR; _IO uint32_t CSR;uint32_t RESERVED0; _IO uint32_t CFGR2; RCC_TypeDef;#define RCC (RCC_TypeDef *) RCC_BASE)#define RCC_BASE (AHBPERIPH_BASE + 0x9000)#define AHBPERIPH_BASE (PERIPH_BASE + 0x18000)#define PERIPH_BASE (uint32_t)0x40000000)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号