4指令集和时钟讲解课件

上传人:尘*** 文档编号:242938370 上传时间:2024-09-12 格式:PPT 页数:21 大小:162KB
返回 下载 相关 举报
4指令集和时钟讲解课件_第1页
第1页 / 共21页
4指令集和时钟讲解课件_第2页
第2页 / 共21页
4指令集和时钟讲解课件_第3页
第3页 / 共21页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第4章,指令集和时钟,目录,4.1 Thumb-2指令集介绍,4.2 指令格式,4.3 Cortex-M3时钟控制,目录,4.1 Thumb-2指令集介绍,4.2 指令格式,4.3 Cortex-M3时钟控制,4.1 Thumb-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.1 Thumb-2指令集介绍,4.2 指令格式,4.3 Cortex-M3时钟控制,4.2 指令格式,详细的,ARM,、,Thumb,和,Cortex-M3,指令见,word,文档,指令集,大多数工程应用使用,C,语言进行开发,很少使用汇编语言,只要大概了解汇编指令即可。,汇编语言用于阅读和编写启动代码,操作系统移植、,C,与汇编混合编程等场合。,ARM,数值处理指令的格式:, S ,其中,号内的项是必须的,,号内的项是可选的。各项的说明如下:,opcode,:操作码,指令助记符,如,LDR,、,MOV,等;,cond,:执行条件,如,EQ,,,HI,等,共,4,位,对应,15,种条件(,1111,系统保留);,S,:是否影响,CPSR,寄存器的值;但当目的寄存器为,PC,时,,S,后缀表示将,SPSR,的内容恢复到,CPSR,中,此种用法多用于异常处理返回。,Rd,:目标寄存器;,Rn,:第,1,个操作数的寄存器;,operand2,:第,2,个操作数;,举例:,ADDS R0,R1,R2,LSL #3;R0=R1+R2*8,影响条件标志位,STM32,启动代码阅读示例“,startup_stm32f10x_hd.s”,目录,4.1 Thumb-2指令集介绍,4.2 指令格式,4.3 Cortex-M3时钟控制,4.3 Cortex-M3时钟控制,1. STM32时钟系统概述,1)系统时钟源,有3种来源:,HSI(内部高速RC时钟) 8MHz,HSE(外接高速时钟) 416MHz,典型值8MHz,PLL(锁相环时钟) 最大72MHz,若未进行时钟设置,系统时钟默认使用HSI 8MHz时钟。,还有以下2种二级时钟源:,40kHz低速内部RC LSI,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。,32.768kHz低速外部晶体LSE,也可用来通过程序选择驱动RTC(RTCCLK)。,当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。,STM32时钟树,参考,STM32中文参考手册,V10P56,2)总线时钟,HCLK(高速时钟,AHB时钟)最大72MHz,FCLK(自由时钟,Cortex自由运行时钟)最大72MHz,PCLK1(APB1时钟,低速APB时钟)最大36MHz,PCLK2( APB2时钟,高速APB时钟)最大72MHz,3)各外设使用的时钟,系统时钟定时器STK:可设置为HCLK或HCLK的8分频,ADC:PCLK2(APB2时钟)经2/4/6/8分频,定时器:可设置为与所在APB总线时钟一致或是2倍,RTC: 可使用LSE(32.768kHz外部低速时钟)、HSE/128或LSI,IIS:系统时钟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_CFGR,APB2外设复位寄存器RCC_APB2RSTR,APB1外设复位寄存器RCC_APB1RSTR,AHB外设时钟使能寄存器RCC_AHBENR,APB2外设时钟使能寄存器RCC_APB2ENR,APB1外设时钟使能寄存器RCC_APB1ENR,另外3个寄存器(时钟中断寄存器RCC_CIR、备份域控制寄存器 RCC_BDCR、控制/状态寄存器 RCC_CSR)不常用,详见STM32中文参考手册V10第6章复位和时钟控制,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(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 ,/复位SW1:0,HPRE3:0,PPRE12:0,PPRE22:0,ADCPRE1:0,MCO2:0,RCC-CR /复位HSEON,CSSON,PLLON,RCC-CR /复位HSEBYP,RCC-CFGR ,/复位PLLSRC, PLLXTPRE, PLLMUL3:0 and USBPRE,RCC-CIR = 0x00000000; /关闭所有中断,/以上代码确保RCC复位,可省略,RCC-CR|=0x00010000; /外部高速时钟使能HSEON,while(!(RCC-CR17); /等待外部时钟就绪,RCC-CFGR=0X00000400; /APB1=DIV2;APB2=DIV1;AHB=DIV1;,RCC-CFGR|=7CFGR|=1ACR|=0x32; /FLASH 2个延时周期,RCC-CR|=0x01000000; /PLLON,while(!(RCC-CR25);/等待PLL锁定,RCC-CFGR|=0x00000002;/PLL作为系统时钟,while(temp!=0x02) /等待PLL作为系统时钟设置成功, temp=RCC-CFGR2;,temp,RCC-APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(1APB2ENR|=(18); /使能PORTG时钟,阅读提示:,#define _IO volatile,typedef unsigned int uint32_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),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!