4指令集和时钟分析_第1页
4指令集和时钟分析_第2页
4指令集和时钟分析_第3页
4指令集和时钟分析_第4页
4指令集和时钟分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章指令集和时钟书目4.1Thumb-2指令集介绍4.2指令格式4.3Cortex-M3时钟限制书目4.1Thumb-2指令集介绍4.2指令格式4.3Cortex-M3时钟限制4.1Thumb-2指令集介绍Cortex-M3处理器支持Thumb-2指令集,与接受传统的Thumb指令集的ARM7相比,避开了ARM状态与Thumb状态来回切换所带来的额外开销,全部工作都可以在单一的Thumb状态下进行处理,包括中断异样处理。Cortex-M3处理器支持的Thumb-2指令集基于精简指令集计算机(RISC)原理设计,是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位)书目4.1Thumb-2指令集介绍4.2指令格式4.3Cortex-M3时钟限制4.2指令格式具体的ARM、Thumb和Cortex-M3指令见word文档《指令集》大多数工程应用运用C语言进行开发,很少运用汇编语言,只要或许了解汇编指令即可。汇编语言用于阅读和编写启动代码,操作系统移植、C与汇编混合编程等场合。ARM数值处理指令的格式:<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}其中<>号内的项是必需的,{}号内的项是可选的。各项的说明如下:opcode:操作码,指令助记符,如LDR、MOV等;cond:执行条件,如EQ,HI等,共4位,对应15种条件(1111系统保留);S:是否影响CPSR寄存器的值;但当目的寄存器为PC时,S后缀表示将SPSR的内容复原到CPSR中,此种用法多用于异样处理返回。Rd:目标寄存器;Rn:第1个操作数的寄存器;operand2:第2个操作数;举例:ADDSR0,R1,R2,LSL#3;R0=R1+R2*8,影响条件标记位STM32启动代码阅读示例“startup_stm32f10x_hd.s”书目4.1Thumb-2指令集介绍4.2指令格式4.3Cortex-M3时钟限制4.3Cortex-M3时钟限制1.STM32时钟系统概述1)系统时钟源有3种来源:HSI(内部高速RC时钟)8MHzHSE(外接高速时钟)4~16MHz,典型值8MHzPLL(锁相环时钟)最大72MHz若未进行时钟设置,系统时钟默认运用HSI8MHz时钟。还有以下2种二级时钟源:40kHz低速内部RCLSI,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。32.768kHz低速外部晶体LSE,也可用来通过程序选择驱动RTC(RTCCLK)。当不被运用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。STM32时钟树参考《STM32中文参考手册V10》P562)总线时钟HCLK(高速时钟,AHB时钟)最大72MHzFCLK(自由时钟,Cortex自由运行时钟)最大72MHzPCLK1(APB1时钟,低速APB时钟)最大36MHzPCLK2(APB2时钟,高速APB时钟)最大72MHz3)各外设运用的时钟系统时钟定时器STK:可设置为HCLK或HCLK的8分频ADC:PCLK2(APB2时钟)经2/4/6/8分频定时器:可设置为与所在APB总线时钟一样或是2倍RTC:可运用LSE(32.768kHz外部低速时钟)、HSE/128或LSIIIS:系统时钟SYSCLK独立看门狗:LSI(40KHz低速内部时钟)时钟USB:PLLCLK的1/1.5分频得到的48MHz时钟…4)系统时钟(SYSCLK)选择系统复位后,HSI振荡器被选为系统时钟。当时钟源被干脆或通过PLL间接作为系统时钟时,它将不能被停止。只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。在被选择时钟源没有就绪时,系统时钟的切换不会发生。直至目标时钟源就绪,才发生切换。在时钟限制寄存器(RCC_CR)里的状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大频率是64MHz。5)时钟输出微限制器允许输出时钟信号到外部MCO引脚。相应的GPIO端口寄存器必需被配置为相应功能。以下四个时钟信号可被选作MCO时钟:●SYSCLK●HSI●HSE●PLLCLK时钟限制寄存器RCC_CR时钟配置寄存器RCC_CFGRAPB2外设复位寄存器RCC_APB2RSTRAPB1外设复位寄存器RCC_APB1RSTRAHB外设时钟使能寄存器RCC_AHBENRAPB2外设时钟使能寄存器RCC_APB2ENRAPB1外设时钟使能寄存器RCC_APB1ENR另外3个寄存器(时钟中断寄存器RCC_CIR、备份域限制寄存器RCC_BDCR、限制/状态寄存器RCC_CSR)不常用,详见《STM32中文参考手册V10》第6章复位和时钟限制2.时钟系统相关寄存器3.时钟系统编程示例复位后系统时钟默认运用8MHzHSI,若要设置运用HSE经PLL倍频输出72MHz,则时钟系统设置的一般步骤如下:1)复位时钟2)打开外部高速时钟HSE(RCC_CR)3)等待外部高速时钟HSE就绪(RCC_CR)4)设置PLL倍频系数和总线预分频系数(RCC_CFGR)5)选择PLL源(RCC_CFGR)6)使能PLL(RCC_CR)7)等待PLL锁定(RCC_CR)8)选择PLL输出为系统时钟(RCC_CFGR)9)等待PLL输出为系统时钟成功(RCC_CR)10)打开各外设时钟(RCC_AHBENR、RCC_APB2ENR、RCC_APB1ENR)本STM32开发平台运用8MHz外部时钟,经PLL倍频(9倍)后系统时钟SysCLK=72MHz,FCLK=HCLK=72MHz,PCLK1=36MHz,PCLK2=72MHz。RCC->APB1RSTR=0x00000000;//复位结束 RCC->APB2RSTR=0x00000000; RCC->AHBENR=0x00000014;//睡眠模式闪存和SRAM时钟使能.其他关闭.RCC->APB2ENR=0x00000000;//外设时钟关闭. RCC->APB1ENR=0x00000000;RCC->CR|=0x00000001;//使能内部高速时钟HSION RCC->CFGR&=0xF8FF0000;//复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]RCC->CR&=0xFEF6FFFF;//复位HSEON,CSSON,PLLONRCC->CR&=0xFFFBFFFF;//复位HSEBYP RCC->CFGR&=0xFF80FFFF;//复位PLLSRC,PLLXTPRE,PLLMUL[3:0]andUSBPRERCC->CIR=0x00000000;//关闭全部中断//以上代码确保RCC复位,可省略RCC->CR|=0x00010000;//外部高速时钟使能HSEONwhile(!(RCC->CR>>17));//等待外部时钟就绪RCC->CFGR=0X00000400;//APB1=DIV2;APB2=DIV1;AHB=DIV1;RCC->CFGR|=7<<18;//设置PLL值2~16,111B表示9倍RCC->CFGR|=1<<16; //PLLSRCONFLASH->ACR|=0x32; //FLASH2个延时周期 RCC->CR|=0x01000000;//PLLONwhile(!(RCC->CR>>25));//等待PLL锁定RCC->CFGR|=0x00000002;//PLL作为系统时钟 while(temp!=0x02)//等待PLL作为系统时钟设置成功{ temp=RCC->CFGR>>2; temp&=0x03;}RCC->APB2ENR|=(1<<0);//使能AFIO时钟RCC->APB2ENR|=(1<<2);//使能PORTA时钟RCC->APB2ENR|=(1<<3);//使能PORTB时钟RCC->APB2ENR|=(1<<4);//使能PORTC时钟RCC->APB2ENR|=(1<<5);//使能PORTD时钟 RCC->APB2ENR|=(1<<6);//使能PORTE时钟RCC->APB2ENR|=(1<<7);//使能PORTF时钟RCC->APB2ENR|=(1<<8);//使能PORTG时钟阅读提示:#define__IOvolatiletypedefunsignedintuint32_t;typedefstruct{ __IOuint32_tCR; __IOuint32_tCFGR; __IOuint32_tCIR; __IOuint32_tAPB2RSTR; __IOuint32_tAPB1RSTR; __IOuint32_tAHBENR; __IOuint32_tAPB2ENR; __IOuint32_tAPB1ENR; __IOuint32_tBDCR; __IOuint32_tCSR; uint32_tRE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论