ARM硬件结构应用1~3课件_第1页
ARM硬件结构应用1~3课件_第2页
ARM硬件结构应用1~3课件_第3页
ARM硬件结构应用1~3课件_第4页
ARM硬件结构应用1~3课件_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

1.LPC和STM32简介2.STM32固件库3.系统控制模块4.引脚连接模块5.GPIO操作6.向量中断控制器7.外中断输入LPC和STM32系列ARM硬件结构与应用8.定时器原理及应用9.SPI接口及应用10.UART接口及应用11.A/D转换器及应用12.看门狗13.PWM原理与应用14.实时时钟1.LPC和STM32简介LPC和STM32系列ARM硬件11LPC和STM32系列简介LPC2000系列微控制器基于ARM7TDMI-SCPU内核。支持ARM和Thumb指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。简介1LPC和STM32系列简介LPC2002LPC2000系列ARM产品LPC2100系列LPC2200系列LPC2300系列LPC2400系列LPC2800系列LPC2000系列ARM产品LPC2100系列3器件信息器件引脚数片内RAM片内Flash10位AD通道数备注LPC21146416KB128KB4-LPC21246416KB256KB4-LPC221014416KB-8带外部存储器接口LPC222014464KB-8LPC221214416KB128KB8LPC221414416KB256KB8关于LPC2000其它器件的介绍请登录“LPC2000系列ARM”专栏器件信息器件引脚数片内RAM片内Flash10位AD通道数备4ARM7TDMI-SCPUAHBToVPB桥EMCVICI2C串行接口SPI串行接口UART0&1看门狗定时器系统控制外部中断TIMER0/1ADC通用I/OPWM0实时时钟SRAMFlashAHB总线ARM7局部总线系统功能VPB总线芯片内部结构LPC2000系列微控制器包含4大部分:

支持仿真的ARM7TDMI-SCPU1

与片内存储器控制器接口的ARM7局部总线2

与中断控制器接口的AMBA高性能总线(AHB)3

连接片内外设功能的VLSI外设总线(VPB)4ARM7TDMI-SAHBToEMCVICI2C串行接口5STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。按性能分成两个不同的系列:

STM32F103“增强型”系列STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到512K的闪存,不同的是SRAM的最大容量和外设接口的组合。STM32系列ARM产品STM32系列基于专为要求高性能、低6市面流通的型号有:基本型:

STM32F101R6STM32F101C8STM32F101R8STM32F101V8STM32F101RBSTM32F101VB增强型:STM32F103C8STM32F103R8STM32F103V8STM32F103RBSTM32F103VBSTM32F103VESTM32F103ZE市面流通的型号有:7第4章ARM硬件结构应用1~3课件8LPC引脚描述LPC2000系列芯片外形LPC2210/2220/2212/2214LPC2114/2124LPC引脚描述LPC2000系列芯片外形LPC2210/29STM32引脚描述STM32系列芯片外形STM32F103C8STM32F103VCSTM32引脚描述STM32系列芯片外形STM32F103102.STM32固件库STM32的固件库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。2.STM32固件库STM32112.STM32固件库每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。所有的驱动源代码都符合“StrictANSI-C”标准。由于整个固态函数库按照“StrictANSI-C”标准编写,它不受不同开发环境的影响。仅对话启动文件取决于开发环境。2.STM32固件库每个外设122.STM32固件库STM32的固件库对STM32的所有资源ADC、GPIO、SPI、IWDG、USART等都进行了封装,当需要使用其资源时,只需要先在固件库的基础上进行编程。这样就大大提高了产品的研发效率。2.STM32固件库STM3132.STM32固件库2.STM32固件库142.STM32固件库2.STM32固件库152.STM32固件库例子2.STM32固件库例子163系统控制模块1.系统控制模块功能汇总2.系统时钟概述3.时钟部件-晶体振荡器4.复位5.时钟部件-唤醒定时器6.时钟部件-PLL(锁相环)7.时钟部件-VPB分频器8.存储器映射控制9.功率控制3系统控制模块1.系统控制模块功能汇总6.时钟部件173.1系统控制模块功能汇总概述一个ARM芯片中通常有很多功能部件,有一些部件是全局性的,它们状态的改变可能引起整个系统运行状态的改变,这些部件我们统一称之为系统控制模块。部件名称功能简介晶体振荡器通过外接晶振或时钟源为系统提供时钟信号复位复位使ARM内核与外设部件进入一个确定的初始状态存储器映射控制控制异常向量表的重新设方式锁相环(PLL)将晶体振荡器输入的时钟倍频到一个合适的时钟频率VPB分频器将内核时钟与外设时钟分开的部件功率控制使处理器空闲或者掉电,还能关闭指定的功能部件,以降低芯片功耗唤醒定时器系统上电或掉电唤醒后,保证晶体振荡器能输出稳定的时钟信号在这些系统控制模块中,有些部件需要外部引脚的配合,如晶体振荡器、外部复位输入。引脚名称引脚方向引脚描述X1输入晶振输入振荡器和内部时钟发生器电路的输入,使用外部时钟源时,该引脚为时钟输入。X2输出晶振输出振荡器放大器的输出。RESET输入外部复位输入该引脚上的低电平将使芯片复位,使I/O口和外设恢复其默认状态,并使处理器从地址0开始执行程序。3.1系统控制模块功能汇总概述一个ARM18名称描述访问存储器映射控制MEMMAP存储器映射控制R/W锁相环PLLCONPLL控制寄存器R/WPLLCFGPLL配置寄存器R/WPLLSTATPLL状态寄存器ROPLLFEEDPLL馈送寄存器WO功率控制PCON功率控制寄存器R/WPCONP外设功率控制R/WVPB分频器VPBDIVVPB分频器控制R/W3.1系统控制模块功能汇总在系统控制模块中,有些部件需要在进行寄存器配置后才能正常工作,如存储器映射控制、锁相环、功率控制、VPB分频器。名称描述访问存储器映射控制MEMMAP存储器映射控制R/W锁193.2时钟系统概述时钟是计算机系统的脉搏,处理器核在一拍接一拍的时钟驱动下完成指令执行、状态变换等动作。外设部件在时钟的驱动下进行着各种工作,比如串口数据的收发、A/D转换、定时器计数等。所以时钟对于一个计算机系统是至关重要的,通常时钟系统出现问题也是最致命的,比如振荡器不起振、振荡不稳、停振等。3.2时钟系统概述时钟是计算机系统的脉搏203.2时钟系统时钟系统结构ARM微控制器的时钟系统包括四个部分:晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。外接晶体或外接时钟源产生稳定的时钟信号将Fosc提升到合适的频率PLL晶体振荡器VPB分频器FCCLKFPCLKfOSCFOSCCPU内核芯片外设唤醒定时器ON/OFF1342为系统提供基本的时钟信号(Fosc)。1在复位或处理器从掉电模式被唤醒时,为输入的时钟信号做计数延时,使芯片内部部件有时间进行初始化。2把Fosc信号提高到一个符合用户需要的频率(Fcclk)其中Fcclk用于CPU内核。3用于把Fcclk信号降低到一个合适的Fpclk值(也可以不降低),该信号用于外设部件。43.2时钟系统时钟系统结构ARM微控制器213.3时钟部件-晶体振荡器概述LPC2000系列微控制器的晶体振荡器可以使用外部时钟源(从属模式),也可以使用外接晶体和片内振荡电路(振荡模式)产生时钟。LPC2114/2124LPC2212/2214X1X2ClockCC从属模式LPC2114/2124LPC2212/2214X1X2CX1CX2XTAL振荡模式3.3时钟部件-晶体振荡器概述LPC20223.3时钟部件-晶体振荡器从属模式使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:1~50(MHz),其幅度范围为:200mV~1.8V。LPC2114/2124LPC2212/2214X1X2ClockCC从属模式3.3时钟部件-晶体振荡器从属模式使用从233.3时钟部件-晶体振荡器振荡模式使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:1~30(MHz)。LPC2114/2124LPC2212/2214X1X2CX1CX2XTAL振荡模式3.3时钟部件-晶体振荡器振荡模式使用振243.3时钟部件-晶体振荡器LPC2114/2124LPC2212/2214X1X2ClockCC从属模式LPC2114/2124LPC2212/2214X1X2CX1CX2XTAL振荡模式注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在10~25(MHz)之间。3.3时钟部件-晶体振荡器LPC2114/2124X1X253.4复位概述复位指将计算机系统中的硬件逻辑归位到一个初始的状态,比如让寄存器恢复默认值、让处理器从第一条指令开始执行程序等。LPC2000系列芯片有两个复位源:1、外部复位—把nRESET引脚拉为低电平,并保持一个最小时间,引发复位2、看门狗复位—通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位3.4复位概述复位指将计算机系统中的硬件263.4复位硬件复位流程OSC0V0V处理器状态1.65V3.0V复位时间唤醒定时器计数4096个时钟Boot代码执行时间执行用户代码VDD3.3VVDD1.8V3.3V1.8V稳定时钟0.5msT0T1T2T3(振荡模式,12MHz晶振)两个电源的上电顺序没有限制复位信号要保持一段时间晶振开始起振(系统上电)3.4复位硬件复位流程OSC0V0V处理器状态1.65V27LPC2xxxnRESETPOWERX1X2UX1t振荡器稳定所需时间芯片时钟输入信号在芯片未上电时,芯片振荡器没有工作;1芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持10ms;2在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于300ns。3>=10ms>=300ns振荡器处于稳定工作状态3.4复位外部复位LPC2xxxnRESETPOWERX1X2UX1t振荡器稳283.4复位复位与电源上电次序V18:数字1.8V供电电源V18A:模拟1.8V供电电源V3:数字3.3V供电电源V3A:模拟3.3V供电电源CPU内核片内外设电源管理1.8V为内核供电,因此1.8V电源必须正常上电。3.4复位复位与电源上电次序V18:数字1.8V供293.4复位复位及复位芯片配置一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。阻容式复位电路:3.3VVct电容两端电压不能突变产生低电平脉冲复位电源消失提供迅速放电回路对电容充电电容两端电压稳定为电源电压这个电路成本低廉,但不能保证任何情况产生稳定可靠的复位信号,所以一般场合需要使用CAT809、SP708和CAT1025等专门的复位芯片。3.4复位复位及复位芯片配置一些微控制器30唤醒定时器启动时钟CPU时钟信号复位或掉电唤醒激活唤醒定时器3.5时钟部件-唤醒定时器概述唤醒定时器能够确保振荡器和芯片内部硬件电路在处理器开始执行指令之前有足够的时间初始化。工作原理如图:对输入时钟计数计数满4096个周期后,控制开关闭合为CPU提供时钟唤醒定时器启动时钟CPU时复位或掉电唤醒激活唤醒定时器3.5313.5时钟部件-唤醒定时器概述当给芯片加电或某个事件使芯片退出掉电模式后,振荡器就开始工作,但是需要一段时间来产生足够振幅的信号驱动时钟逻辑。振荡的波形大致如下:从第一个有效时钟开始,计数4096个时钟,在此期间内部部件完成初始化振荡开始CPU开始执行指令时间(t)振幅(V)

注:唤醒定时器就通过监测晶振状态来判断是否能开始可靠的执行代码。3.5时钟部件-唤醒定时器概述当给芯片加323.5时钟部件-唤醒定时器唤醒定时器与时钟的关系唤醒定时器检测到有效时钟信号后,计数4096个时钟脉冲,并在这段时间里初始化系统硬件。如芯片满足运行条件(Flash初始化完成、外部复位信号已撤除等),接通系统时钟,处理器开始执行指令。总之,唤醒定时器是根据晶振的情况来执行最短时间的复位,它在处理器从掉电模式中唤醒或发生了任何复位时激活。3.5时钟部件-唤醒定时器唤醒定时器与时钟的关系333.6时钟部件-PLL(锁相环)概述ARM芯片内部均具有PLL电路,振荡器产生的时钟Fosc通过PLL升频,可以获得更高的系统时钟(Fcclk)。输入范围10~25MHz将FOSC提升到10~60MHzPLL晶体振荡器VPB分频器FCCLKFPCLKfOSCFOSCCPU内核芯片外设3.6时钟部件-PLL(锁相环)概述AR34FOSC相位频率检测流控振荡器CCO2P分频M分频FCCLKPLL10~25MHz156~320MHz10~60MHz调整M值,实现Fosc到Fcclk的倍频检测两路输入信号的相位频率,并根据误差,输出不同大小的电流信号由输入电流大小来控制其振荡频率调整P值,使CCO振荡在规定频率范围内PLL连接开关,在PLL锁定前,系统使用Fosc时钟PLL内部结构框图FOSC相位频率流控2PM分频FCCLKPLL10~25MH353.6时钟部件-PLL(锁相环)PLL的锁定过程CCO的输出频率受到“相位频率检测”部件的控制,输出所需频率的过程不是一蹴而就的,而是一个拉锯反复的过程。时间(t)输出频率(f)预期频率锁定CCO的输出频率在高低起伏一段时间后渐渐稳定在了预期的频率值输出频率稳定后即“锁定”成功3.6时钟部件-PLL(锁相环)PLL的锁定过程363.6时钟部件-PLL(锁相环)寄存器描述与PLL相关的寄存器有四个,其中三个为控制寄存器,还有一个是状态寄存器。地址名称描述访问0xE01FC080PLLCONPLL控制寄存器。最新的PLL控制位的保持寄存器。写入该寄存器的值在有效的PLL馈送序列执行之前不起作用。R/W0xE01FC084PLLCFGPLL配置寄存器。最新的PLL配置值的保持寄存器。写入该寄存器的值在有效的PLL馈送序列执行之前不起作用。R/W0xE01FC088PLLSTATPLL状态寄存器。PLL控制和配置信息的读回寄存器。如果曾对PLLCON或PLLCFG执行了写操作,但没有产生PLL馈送序列,这些值将不会反映PLL的当前状态。读取该寄存器提供了控制PLL和PLL状态的真实值。RO0xE01FC08CPLLFEEDPLL馈送寄存器。该寄存器使能装载PLL控制和配置信息,该配置信息从PLLCON和PLLCFG寄存器装入实际影响PLL操作的映像寄存器。WO3.6时钟部件-PLL(锁相环)寄存器描述37寄存器描述FOSC相位频率检测流控振荡器CCO2P分频M分频FCCLKPLLPLLCFG.MSEL[4:0]PLLCON.PLLEPLLCFG.PSEL[1:0]PLLCON.PLLC控制寄存器PLLCON——PLLCPLLE7:210PLL控制寄存器(PLLCON):PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。控制寄存器PLLCFG——PSEL1:0MSEL4:076:54:0PLL配置寄存器(PLLCFG):MSEL[4:0]:PLL倍频器值,在PLL频率计算中其值为(M-1);PSEL[1:0]:PLL分频器值,在PLL频率计算中其值为P。PLL状态寄存器(PLLSTAT):状态寄存器PLLSTAT——PLOCKPLLCPLLE——PSEL[1:0]MSEL[4:0]15:11109876:54:0MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。PLLCPLLEPLL功能00PLL被关闭,并断开连接。01PLL被激活但是尚未连接。可以在PLOCK置位后连接。10与00组合相同。避免PLL已连接,当还没有使能的情况。11PLL已经使能,并连接到处理器作为系统时钟源。PLL控制位组合:寄存器描述FOSC相位频率流控2PM分频FCCLKPLLPL38寄存器描述馈送寄存器PLLFEEDPLLFEED[7:0]7:0PLL馈送寄存器(PLLFEED):PLLFEED[7:0]:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效。馈送序列分两步进行,如下所示:step1.将值0xAA写入PLLFEEDstep2.将值0x55写入PLLFEED操作示例DISABLE_IRQ(); //关闭中断,防止馈送序列操作被打断PLLFEED=0xAA; //馈送序列第一步PLLFEED=0x55; //馈送序列第二步ENABLE_IRQ(); //馈送序列操作结束,打开中断注:这两个写操作的顺序必须正确,且必须是连续的VPB总线周期。寄存器描述馈送寄存器PLLFEED[7:0]7:0393.6时钟部件-PLL(锁相环)PLL和掉电模式掉电模式会自动关闭并断开PLL。从掉电模式唤醒不会自动恢复PLL的设定,PLL的恢复必须由软件来完成。通常,首先将PLL激活并等待锁定,然后再将PLL连接。注:不要试图在掉电唤醒之后简单地执行馈送序列来重新启动PLL,因为这会在PLL锁定建立之前同时使能并连接PLL。3.6时钟部件-PLL(锁相环)PLL和掉电模式403.6时钟部件-PLL(锁相环)PLL频率计算Fosc为晶体振荡器的输出频率,即PLL的输入频率相位频率检测流控振荡器CCO2P分频M分频PLLFOSCFCCOFCCO/(2×p)FCCO/(2×p×M)123锁定之后这两个频率相等FOSC=FCCO/(2×p×M)

连接PLL之后FCCLK=FCCO/(2×p)

Fcco为PLL电流控制振荡器的输出频率Fcclk为PLL最终的输出频率(也是处理器的时钟频率)Fcco经过“2P分频”部件后得到Fcco/(2×p)的频率Fcco/(2×p)信号经过“M分频”部件,得到Fcco/(2×p×M)的频率PLL锁定后相位频率检测的两输入端信号的频率相等3.6时钟部件-PLL(锁相环)PLL频率计算413.6时钟部件-PLL(锁相环)PLL频率计算可以得出以下几个等式:Fosc=Fcco/(2×p×M)Fcco=Fosc×(2×p×M)Fcclk=Fcco/(2×p)Fcco=Fcclk×(2×p)最后得出PLL的输出频率(当PLL激活并连接时)为:Fcclk=M×Fosc 或Fcclk=Fcco/(2×P)CCO输出频率为:Fcco=Fcclk×2×P或Fcco=Fosc×M×2×P3.6时钟部件-PLL(锁相环)PLL频率计算可以得出以42相位频率检测流控振荡器CCO2P分频M分频FCCLKPLLFOSC3.6时钟部件-PLL(锁相环)确定PLL设定的过程2.选择合适的晶振频率3.计算M值4.计算P值1.确定处理器时钟频率选择处理器的操作频率(Fcclk)。这可以根据处理器的整体要求、UART波特率的支持等因素来决定。1选择振荡器频率(Fosc)。Fcclk一定要是Fosc的整数倍。2计算M值以配置MSEL位。M=Fcclk/Fosc,M的取值范围为1~32。实际写入MSEL位的值为M-1的整数倍。3选择P值以配置PSEL位。通过设置P值,使Fcco在定义的频率限制范围内。P必须是1,2,4或8其中的一个。4相位频率流控2PM分频FCCLKPLLFOSC3.6时钟43PLL设置举例系统要求Fosc=10MHz,Fcclk=60MHz。根据这些要求:确定Fcclk=60MHz;选择Fosc=10MHz;计算M=Fcclk/Fosc=60MHz/10MHz=6。M-1=5,所以写入PLLCFG[4:0]=00101;计算P=Fcco/(Fcclk*2),其中Fcco为156~320MHz。当Fcco=156MHz时,P=156MHz/(2*60MHz)=1.3当Fcco=320MHz时,P=2.67 P取整数2,所以写入PLLCFG[6:5]=01。PLL设置举例系统要求Fosc=10MHz,Fcclk=6044PLL设置举例PLL配置过程:uint8PLLSet(uint32Fcclk,uint32Fosc,uint32Fcco){uint8i;uint32plldat;i=(Fcco/Fcclk);switch(i) {case2:plldat=((Fcclk/Fosc)-1)|(0<<5);break;case4:plldat=((Fcclk/Fosc)-1)|(1<<5);break;case8:plldat=((Fcclk/Fosc)-1)|(2<<5);break;case16:plldat=((Fcclk/Fosc)-1)|(3<<5);break;default:return(FALSE);break;}PLLCON=1;PLLCFG=plldat; PLLFEED=0xaa; PLLFEED=0x55;while((PLLSTAT&(1<<10))==0); PLLCON=3; PLLFEED=0xaa;PLLFEED=0x55;return(TRUE); }计算PLL分频值参数是否合法使能PLL设置PLL分频值PLL馈送序列等待PLL锁定连接PLLPLL馈送序列正确返回错误返回计算PLL分频值参数是否合法使能PLL设置PLL分频值等待PLL锁定连接PLLPLL馈送序列正确返回错误返回PLL馈送序列NYPLL设置举例PLL配置过程:uint8PLLSet(ui45

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。

①、HSI是高速内部时钟,RC振荡器,频率为8MHz。

②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

③、LSI是低速内部时钟,RC振荡器,频率为40kHz。

④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

STM32时钟在STM32中,有五个时钟源,为HSI、HSE、463.7时钟部件-VPB分频器概述VPB总线是芯片的内部总线,上面挂接着绝大部分的外设,而这些外设的工作速度相对于ARM内核来说都要慢一些,VPB分频器决定了处理器时钟(cclk)与外设器件所使用的时钟(pclk)之间的关系。VPB分频器PLL晶体振荡器FCCLKFPCLKfOSCCPU内核芯片外设VPB分频器主要有两个用途:将处理器时钟(cclk)分频,以便外设在合适的速度下工作。降低系统功耗。3.7时钟部件-VPB分频器概述VPB总473.7STM32时钟部件-VPB分频器系统时钟SYSCLK,它是提供STM32中绝大部分部件工作的时钟源。系统时钟可以选择为PLL输出、HSI、HSE。系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各个模块使用,AHB分频器可以选择1、2、4、8、16、64、128、256、512分频,其分频器输出的时钟送给5大模块使用:

3.7STM32时钟部件-VPB分频器48(1)送给AHB总线、内核、内存和DMA使用的HCLK时钟(2)通过8分频后送给Cortex的系统定时器时钟;(3)直接送给Cortex的空闲运行时钟FCLK;(4)送给APB1分频器。APB1分频器可以选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)2、3、4倍频器使用。该倍频器可以选择1或者2倍频,时钟输出供定时器2、3、4使用。

(1)送给AHB总线、内核、内存和DMA使用的HCLK49(5)送给APB2分频器。APB2分频器可以选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另外一路送给定时器(Timer)1倍频使用。该倍频器可以选择1或2倍频,时钟输出供定时器1使用。另外APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。

(5)送给APB2分频器。50连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。连接在APB2(高速外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。

第4章ARM硬件结构应用1~3课件51

52STM32时钟的初始化

(1)将RCC寄存器重新设置为默认值:RCC_DeInit;

(2)打开外部高速时钟晶振HSE:RCC_HSEConfig(RCC_HSE_ON);

(3)等待外部高速时钟晶振工作:RCC_WaitForHSEStartUp();

(4)设置AHB时钟(HCLK):

RCC_HCLKConfig;

(5)设置高速AHB时钟(APB2):RCC_PCLK2Config;

(6)设置低速AHB时钟(APB1):RCC_PCLK1Config;

(7)设置PLL:

RCC_PLLConfig;

(8)打开PLL:

RCC_PLLCmd(ENABLE);

(9)等待PLL工作:RCC_GetFlagStatus(RCC_FLAG_PLLRDY);

(10)设置系统时钟:

RCC_SYSCLKConfig;

(11)判断PLL是否是系统时钟:

RCC_GetSYSCLKSource();

(12)打开要使用的外设时钟:

RCC_APB1PerphClockCmd()….

STM32时钟的初始化

(1)将RCC寄存器重新设置为默认53STM32时钟的初始化举例

STM32时钟的初始化举例

54STM32时钟的初始化举例

STM32时钟的初始化举例

55STM32时钟的初始化举例

STM32时钟的初始化举例

563.8功率控制概述

注:ARM芯片还允许程序对某个外设进行关闭控制。外设的功率控制特性允许独立关闭应用中不需要的外设,这样进一步降低了功耗。节电模式处理器系统时钟外设空闲模式停止执行指令有效正常工作掉电模式停止执行指令无效无需时钟支持的外设能够正常工作3.8功率控制概述注:ARM芯片还允许57CPU核定时器0定时器1时钟系统...A/D转换FCCLKFVPBPOWER……控制寄存器PCON——IDL7:20PD1控制寄存器PCONP———31:130PCTIM01PCTIM12……11:3PCAD12系统掉电寄存器描述功率控制寄存器(PCON):置位IDL位,将会进入空闲模式。置位PD位,将会进入掉电模式。

注:如果两位都置位,则进入掉电模式。CPU空闲PCON寄存器包含两个位。外部功率控制寄存器(PCONP):该寄存器允许将所选的外设功能关闭以实现节电的目的。

注:有少数外设功能不能被关闭(看门狗定时器、GPIO、引脚连接模块和系统控制模块)。PCONP中的每个位都控制一个外设,清除对应位关闭功能。如清除PCTIM0位,关闭定时器0功能。CPU核定时器0定时器1时钟系统...A/D转换FCCLKF583.8功率控制功率控制注意事项外部复位后,PCONP的值已经设置成使能所有接口和外围功能,所以用户不再需要去打开某个外设。在需要控制功率的系统中,只要将应用中用到的外围功能的对应在PCONP寄存器的位置1,寄存器的其它“保留”位或当前不需使用的外围功能对应在寄存器中的位都必须清零。3.8功率控制功率控制注意事项外部复位后591.LPC和STM32简介2.STM32固件库3.系统控制模块4.引脚连接模块5.GPIO操作6.向量中断控制器7.外中断输入LPC和STM32系列ARM硬件结构与应用8.定时器原理及应用9.SPI接口及应用10.UART接口及应用11.A/D转换器及应用12.看门狗13.PWM原理与应用14.实时时钟1.LPC和STM32简介LPC和STM32系列ARM硬件601LPC和STM32系列简介LPC2000系列微控制器基于ARM7TDMI-SCPU内核。支持ARM和Thumb指令集,芯片内集成丰富外设,而且具有非常低的功率消耗。使该系列微控制器特别适用于工业控制、医疗系统、访问控制和POS机等场合。简介1LPC和STM32系列简介LPC20061LPC2000系列ARM产品LPC2100系列LPC2200系列LPC2300系列LPC2400系列LPC2800系列LPC2000系列ARM产品LPC2100系列62器件信息器件引脚数片内RAM片内Flash10位AD通道数备注LPC21146416KB128KB4-LPC21246416KB256KB4-LPC221014416KB-8带外部存储器接口LPC222014464KB-8LPC221214416KB128KB8LPC221414416KB256KB8关于LPC2000其它器件的介绍请登录“LPC2000系列ARM”专栏器件信息器件引脚数片内RAM片内Flash10位AD通道数备63ARM7TDMI-SCPUAHBToVPB桥EMCVICI2C串行接口SPI串行接口UART0&1看门狗定时器系统控制外部中断TIMER0/1ADC通用I/OPWM0实时时钟SRAMFlashAHB总线ARM7局部总线系统功能VPB总线芯片内部结构LPC2000系列微控制器包含4大部分:

支持仿真的ARM7TDMI-SCPU1

与片内存储器控制器接口的ARM7局部总线2

与中断控制器接口的AMBA高性能总线(AHB)3

连接片内外设功能的VLSI外设总线(VPB)4ARM7TDMI-SAHBToEMCVICI2C串行接口64STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。按性能分成两个不同的系列:

STM32F103“增强型”系列STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到512K的闪存,不同的是SRAM的最大容量和外设接口的组合。STM32系列ARM产品STM32系列基于专为要求高性能、低65市面流通的型号有:基本型:

STM32F101R6STM32F101C8STM32F101R8STM32F101V8STM32F101RBSTM32F101VB增强型:STM32F103C8STM32F103R8STM32F103V8STM32F103RBSTM32F103VBSTM32F103VESTM32F103ZE市面流通的型号有:66第4章ARM硬件结构应用1~3课件67LPC引脚描述LPC2000系列芯片外形LPC2210/2220/2212/2214LPC2114/2124LPC引脚描述LPC2000系列芯片外形LPC2210/268STM32引脚描述STM32系列芯片外形STM32F103C8STM32F103VCSTM32引脚描述STM32系列芯片外形STM32F103692.STM32固件库STM32的固件库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。2.STM32固件库STM32702.STM32固件库每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。所有的驱动源代码都符合“StrictANSI-C”标准。由于整个固态函数库按照“StrictANSI-C”标准编写,它不受不同开发环境的影响。仅对话启动文件取决于开发环境。2.STM32固件库每个外设712.STM32固件库STM32的固件库对STM32的所有资源ADC、GPIO、SPI、IWDG、USART等都进行了封装,当需要使用其资源时,只需要先在固件库的基础上进行编程。这样就大大提高了产品的研发效率。2.STM32固件库STM3722.STM32固件库2.STM32固件库732.STM32固件库2.STM32固件库742.STM32固件库例子2.STM32固件库例子753系统控制模块1.系统控制模块功能汇总2.系统时钟概述3.时钟部件-晶体振荡器4.复位5.时钟部件-唤醒定时器6.时钟部件-PLL(锁相环)7.时钟部件-VPB分频器8.存储器映射控制9.功率控制3系统控制模块1.系统控制模块功能汇总6.时钟部件763.1系统控制模块功能汇总概述一个ARM芯片中通常有很多功能部件,有一些部件是全局性的,它们状态的改变可能引起整个系统运行状态的改变,这些部件我们统一称之为系统控制模块。部件名称功能简介晶体振荡器通过外接晶振或时钟源为系统提供时钟信号复位复位使ARM内核与外设部件进入一个确定的初始状态存储器映射控制控制异常向量表的重新设方式锁相环(PLL)将晶体振荡器输入的时钟倍频到一个合适的时钟频率VPB分频器将内核时钟与外设时钟分开的部件功率控制使处理器空闲或者掉电,还能关闭指定的功能部件,以降低芯片功耗唤醒定时器系统上电或掉电唤醒后,保证晶体振荡器能输出稳定的时钟信号在这些系统控制模块中,有些部件需要外部引脚的配合,如晶体振荡器、外部复位输入。引脚名称引脚方向引脚描述X1输入晶振输入振荡器和内部时钟发生器电路的输入,使用外部时钟源时,该引脚为时钟输入。X2输出晶振输出振荡器放大器的输出。RESET输入外部复位输入该引脚上的低电平将使芯片复位,使I/O口和外设恢复其默认状态,并使处理器从地址0开始执行程序。3.1系统控制模块功能汇总概述一个ARM77名称描述访问存储器映射控制MEMMAP存储器映射控制R/W锁相环PLLCONPLL控制寄存器R/WPLLCFGPLL配置寄存器R/WPLLSTATPLL状态寄存器ROPLLFEEDPLL馈送寄存器WO功率控制PCON功率控制寄存器R/WPCONP外设功率控制R/WVPB分频器VPBDIVVPB分频器控制R/W3.1系统控制模块功能汇总在系统控制模块中,有些部件需要在进行寄存器配置后才能正常工作,如存储器映射控制、锁相环、功率控制、VPB分频器。名称描述访问存储器映射控制MEMMAP存储器映射控制R/W锁783.2时钟系统概述时钟是计算机系统的脉搏,处理器核在一拍接一拍的时钟驱动下完成指令执行、状态变换等动作。外设部件在时钟的驱动下进行着各种工作,比如串口数据的收发、A/D转换、定时器计数等。所以时钟对于一个计算机系统是至关重要的,通常时钟系统出现问题也是最致命的,比如振荡器不起振、振荡不稳、停振等。3.2时钟系统概述时钟是计算机系统的脉搏793.2时钟系统时钟系统结构ARM微控制器的时钟系统包括四个部分:晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。外接晶体或外接时钟源产生稳定的时钟信号将Fosc提升到合适的频率PLL晶体振荡器VPB分频器FCCLKFPCLKfOSCFOSCCPU内核芯片外设唤醒定时器ON/OFF1342为系统提供基本的时钟信号(Fosc)。1在复位或处理器从掉电模式被唤醒时,为输入的时钟信号做计数延时,使芯片内部部件有时间进行初始化。2把Fosc信号提高到一个符合用户需要的频率(Fcclk)其中Fcclk用于CPU内核。3用于把Fcclk信号降低到一个合适的Fpclk值(也可以不降低),该信号用于外设部件。43.2时钟系统时钟系统结构ARM微控制器803.3时钟部件-晶体振荡器概述LPC2000系列微控制器的晶体振荡器可以使用外部时钟源(从属模式),也可以使用外接晶体和片内振荡电路(振荡模式)产生时钟。LPC2114/2124LPC2212/2214X1X2ClockCC从属模式LPC2114/2124LPC2212/2214X1X2CX1CX2XTAL振荡模式3.3时钟部件-晶体振荡器概述LPC20813.3时钟部件-晶体振荡器从属模式使用从属模式时,时钟信号通过X1引脚从外部输入,输入频率范围:1~50(MHz),其幅度范围为:200mV~1.8V。LPC2114/2124LPC2212/2214X1X2ClockCC从属模式3.3时钟部件-晶体振荡器从属模式使用从823.3时钟部件-晶体振荡器振荡模式使用振荡模式时,时钟信号由内部晶体振荡器和外部连接的晶体振荡产生,振荡频率范围:1~30(MHz)。LPC2114/2124LPC2212/2214X1X2CX1CX2XTAL振荡模式3.3时钟部件-晶体振荡器振荡模式使用振833.3时钟部件-晶体振荡器LPC2114/2124LPC2212/2214X1X2ClockCC从属模式LPC2114/2124LPC2212/2214X1X2CX1CX2XTAL振荡模式注意:如果使用了ISP下载功能或者连接PLL提高频率,则输入的时钟频率范围必须在10~25(MHz)之间。3.3时钟部件-晶体振荡器LPC2114/2124X1X843.4复位概述复位指将计算机系统中的硬件逻辑归位到一个初始的状态,比如让寄存器恢复默认值、让处理器从第一条指令开始执行程序等。LPC2000系列芯片有两个复位源:1、外部复位—把nRESET引脚拉为低电平,并保持一个最小时间,引发复位2、看门狗复位—通过设置看门狗相关寄存器,当看门狗定时器溢出后,引发复位3.4复位概述复位指将计算机系统中的硬件853.4复位硬件复位流程OSC0V0V处理器状态1.65V3.0V复位时间唤醒定时器计数4096个时钟Boot代码执行时间执行用户代码VDD3.3VVDD1.8V3.3V1.8V稳定时钟0.5msT0T1T2T3(振荡模式,12MHz晶振)两个电源的上电顺序没有限制复位信号要保持一段时间晶振开始起振(系统上电)3.4复位硬件复位流程OSC0V0V处理器状态1.65V86LPC2xxxnRESETPOWERX1X2UX1t振荡器稳定所需时间芯片时钟输入信号在芯片未上电时,芯片振荡器没有工作;1芯片上电后,晶体振荡器开始振荡。因为振荡从开始到稳定需要一过程,所以外部复位信号至少要保持10ms;2在晶体振荡器保持稳定振荡,或者使用有源钟振时,外部复位信号可以缩短到不小于300ns。3>=10ms>=300ns振荡器处于稳定工作状态3.4复位外部复位LPC2xxxnRESETPOWERX1X2UX1t振荡器稳873.4复位复位与电源上电次序V18:数字1.8V供电电源V18A:模拟1.8V供电电源V3:数字3.3V供电电源V3A:模拟3.3V供电电源CPU内核片内外设电源管理1.8V为内核供电,因此1.8V电源必须正常上电。3.4复位复位与电源上电次序V18:数字1.8V供883.4复位复位及复位芯片配置一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。阻容式复位电路:3.3VVct电容两端电压不能突变产生低电平脉冲复位电源消失提供迅速放电回路对电容充电电容两端电压稳定为电源电压这个电路成本低廉,但不能保证任何情况产生稳定可靠的复位信号,所以一般场合需要使用CAT809、SP708和CAT1025等专门的复位芯片。3.4复位复位及复位芯片配置一些微控制器89唤醒定时器启动时钟CPU时钟信号复位或掉电唤醒激活唤醒定时器3.5时钟部件-唤醒定时器概述唤醒定时器能够确保振荡器和芯片内部硬件电路在处理器开始执行指令之前有足够的时间初始化。工作原理如图:对输入时钟计数计数满4096个周期后,控制开关闭合为CPU提供时钟唤醒定时器启动时钟CPU时复位或掉电唤醒激活唤醒定时器3.5903.5时钟部件-唤醒定时器概述当给芯片加电或某个事件使芯片退出掉电模式后,振荡器就开始工作,但是需要一段时间来产生足够振幅的信号驱动时钟逻辑。振荡的波形大致如下:从第一个有效时钟开始,计数4096个时钟,在此期间内部部件完成初始化振荡开始CPU开始执行指令时间(t)振幅(V)

注:唤醒定时器就通过监测晶振状态来判断是否能开始可靠的执行代码。3.5时钟部件-唤醒定时器概述当给芯片加913.5时钟部件-唤醒定时器唤醒定时器与时钟的关系唤醒定时器检测到有效时钟信号后,计数4096个时钟脉冲,并在这段时间里初始化系统硬件。如芯片满足运行条件(Flash初始化完成、外部复位信号已撤除等),接通系统时钟,处理器开始执行指令。总之,唤醒定时器是根据晶振的情况来执行最短时间的复位,它在处理器从掉电模式中唤醒或发生了任何复位时激活。3.5时钟部件-唤醒定时器唤醒定时器与时钟的关系923.6时钟部件-PLL(锁相环)概述ARM芯片内部均具有PLL电路,振荡器产生的时钟Fosc通过PLL升频,可以获得更高的系统时钟(Fcclk)。输入范围10~25MHz将FOSC提升到10~60MHzPLL晶体振荡器VPB分频器FCCLKFPCLKfOSCFOSCCPU内核芯片外设3.6时钟部件-PLL(锁相环)概述AR93FOSC相位频率检测流控振荡器CCO2P分频M分频FCCLKPLL10~25MHz156~320MHz10~60MHz调整M值,实现Fosc到Fcclk的倍频检测两路输入信号的相位频率,并根据误差,输出不同大小的电流信号由输入电流大小来控制其振荡频率调整P值,使CCO振荡在规定频率范围内PLL连接开关,在PLL锁定前,系统使用Fosc时钟PLL内部结构框图FOSC相位频率流控2PM分频FCCLKPLL10~25MH943.6时钟部件-PLL(锁相环)PLL的锁定过程CCO的输出频率受到“相位频率检测”部件的控制,输出所需频率的过程不是一蹴而就的,而是一个拉锯反复的过程。时间(t)输出频率(f)预期频率锁定CCO的输出频率在高低起伏一段时间后渐渐稳定在了预期的频率值输出频率稳定后即“锁定”成功3.6时钟部件-PLL(锁相环)PLL的锁定过程953.6时钟部件-PLL(锁相环)寄存器描述与PLL相关的寄存器有四个,其中三个为控制寄存器,还有一个是状态寄存器。地址名称描述访问0xE01FC080PLLCONPLL控制寄存器。最新的PLL控制位的保持寄存器。写入该寄存器的值在有效的PLL馈送序列执行之前不起作用。R/W0xE01FC084PLLCFGPLL配置寄存器。最新的PLL配置值的保持寄存器。写入该寄存器的值在有效的PLL馈送序列执行之前不起作用。R/W0xE01FC088PLLSTATPLL状态寄存器。PLL控制和配置信息的读回寄存器。如果曾对PLLCON或PLLCFG执行了写操作,但没有产生PLL馈送序列,这些值将不会反映PLL的当前状态。读取该寄存器提供了控制PLL和PLL状态的真实值。RO0xE01FC08CPLLFEEDPLL馈送寄存器。该寄存器使能装载PLL控制和配置信息,该配置信息从PLLCON和PLLCFG寄存器装入实际影响PLL操作的映像寄存器。WO3.6时钟部件-PLL(锁相环)寄存器描述96寄存器描述FOSC相位频率检测流控振荡器CCO2P分频M分频FCCLKPLLPLLCFG.MSEL[4:0]PLLCON.PLLEPLLCFG.PSEL[1:0]PLLCON.PLLC控制寄存器PLLCON——PLLCPLLE7:210PLL控制寄存器(PLLCON):PLLE:PLL使能,该位为1时将激活PLL并允许其锁定到指定的频率;PLLC:PLL连接,当PLLE为1,并且在PLL锁定后,该位为1,将把PLL作为时钟源连接到CPU,否则直接使用振荡器时钟。控制寄存器PLLCFG——PSEL1:0MSEL4:076:54:0PLL配置寄存器(PLLCFG):MSEL[4:0]:PLL倍频器值,在PLL频率计算中其值为(M-1);PSEL[1:0]:PLL分频器值,在PLL频率计算中其值为P。PLL状态寄存器(PLLSTAT):状态寄存器PLLSTAT——PLOCKPLLCPLLE——PSEL[1:0]MSEL[4:0]15:11109876:54:0MSEL[4:0]、PSEL[1:0]、PLLE、PLLC:读出反映这几个参数的设置值,写入无效;PLOCK:反映PLL的锁定状态。为0时,PLL未锁定;为1时,PLL锁定到指定频率。PLLCPLLEPLL功能00PLL被关闭,并断开连接。01PLL被激活但是尚未连接。可以在PLOCK置位后连接。10与00组合相同。避免PLL已连接,当还没有使能的情况。11PLL已经使能,并连接到处理器作为系统时钟源。PLL控制位组合:寄存器描述FOSC相位频率流控2PM分频FCCLKPLLPL97寄存器描述馈送寄存器PLLFEEDPLLFEED[7:0]7:0PLL馈送寄存器(PLLFEED):PLLFEED[7:0]:PLL馈送序列必须写入该寄存器才能使PLL配置和控制寄存器的更改生效。馈送序列分两步进行,如下所示:step1.将值0xAA写入PLLFEEDstep2.将值0x55写入PLLFEED操作示例DISABLE_IRQ(); //关闭中断,防止馈送序列操作被打断PLLFEED=0xAA; //馈送序列第一步PLLFEED=0x55; //馈送序列第二步ENABLE_IRQ(); //馈送序列操作结束,打开中断注:这两个写操作的顺序必须正确,且必须是连续的VPB总线周期。寄存器描述馈送寄存器PLLFEED[7:0]7:0983.6时钟部件-PLL(锁相环)PLL和掉电模式掉电模式会自动关闭并断开PLL。从掉电模式唤醒不会自动恢复PLL的设定,PLL的恢复必须由软件来完成。通常,首先将PLL激活并等待锁定,然后再将PLL连接。注:不要试图在掉电唤醒之后简单地执行馈送序列来重新启动PLL,因为这会在PLL锁定建立之前同时使能并连接PLL。3.6时钟部件-PLL(锁相环)PLL和掉电模式993.6时钟部件-PLL(锁相环)PLL频率计算Fosc为晶体振荡器的输出频率,即PLL的输入频率相位频率检测流控振荡器CCO2P分频M分频PLLFOSCFCCOFCCO/(2×p)FCCO/(2×p×M)123锁定之后这两个频率相等FOSC=FCCO/(2×p×M)

连接PLL之后FCCLK=FCCO/(2×p)

Fcco为PLL电流控制振荡器的输出频率Fcclk为PLL最终的输出频率(也是处理器的时钟频率)Fcco经过“2P分频”部件后得到Fcco/(2×p)的频率Fcco/(2×p)信号经过“M分频”部件,得到Fcco/(2×p×M)的频率PLL锁定后相位频率检测的两输入端信号的频率相等3.6时钟部件-PLL(锁相环)PLL频率计算1003.6时钟部件-PLL(锁相环)PLL频率计算可以得出以下几个等式:Fosc=Fcco/(2×p×M)Fcco=Fosc×(2×p×M)Fcclk=Fcco/(2×p)Fcco=Fcclk×(2×p)最后得出PLL的输出频率(当PLL激活并连接时)为:Fcclk=M×Fosc 或Fcclk=Fcco/(2×P)CCO输出频率为:Fcco=Fcclk×2×P或Fcco=Fosc×M×2×P3.6时钟部件-PLL(锁相环)PLL频率计算可以得出以101相位频率检测流控振荡器CCO2P分频M分频FCCLKPLLFOSC3.6时钟部件-PLL(锁相环)确定PLL设定的过程2.选择合适的晶振频率3.计算M值4.计算P值1.确定处理器时钟频率选择处理器的操作频率(Fcclk)。这可以根据处理器的整体要求、UART波特率的支持等因素来决定。1选择振荡器频率(Fosc)。Fcclk一定要是Fosc的整数倍。2计算M值以配置MSEL位。M=Fcclk/Fosc,M的取值范围为1~32。实际写入MSEL位的值为M-1的整数倍。3选择P值以配置PSEL位。通过设置P值,使Fcco在定义的频率限制范围内。P必须是1,2,4或8其中的一个。4相位频率流控2PM分频FCCLKPLLFOSC3.6时钟102PLL设置举例系统要求Fosc=10MHz,Fcclk=60MHz。根据这些要求:确定Fcclk=60MHz;选择Fosc=10MHz;计算M=Fcclk/Fosc=60MHz/10MHz=6。M-1=5,所以写入PLLCFG[4:0]=00101;计算P=Fcco/(Fcclk*2),其中Fcco为156~320MHz。当Fcco=156MHz时,P=156MHz/(2*60MHz)=1.3当Fcco=320MHz时,P=2.67 P取整数2,所以写入PLLCFG[6:5]=01。PLL设置举例系统要求Fosc=10MHz,Fcclk=60103PLL设置举例PLL配置过程:uint8PLLSet(uint32Fcclk,uint32Fosc,uint32Fcco){uint8i;uint32plldat;i=(Fcco/Fcclk);switch(i) {case2:plldat=((Fcclk/Fosc)-1)|(0<<5);break;case4:plldat=((Fcclk/Fosc)-1)|(1<<5);break;case8:plldat=((Fcclk/Fosc)-1)|(2<<5);break;case16:plldat=((Fcclk/Fosc)-1)|(3<<5);break;default:return(FALSE);break;}PLLCON=1;PLLCFG=plldat; PLLFEED=0xaa; PLLFEED=0x55;while((PLLSTAT&(1<<10))==0); PLLCON=3; PLLFEED=0xaa;PLLFEED=0x55;return(TRUE); }计算PLL分频值参数是否合法使能PLL设置PLL分频值PLL馈送序列等待PLL锁定连接PLLPLL馈送序列正确返回错误返回计算PLL分频值参数是否合法使能PLL设置PLL分频值等待PLL锁定连接PLLPLL馈送序列正确返回错误返回PLL馈送序列NYPLL设置举例PLL配置过程:uint8PLLSet(ui104

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。

①、HSI是高速内部时钟

温馨提示

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

评论

0/150

提交评论