ch4 DSP系统设计入门_第1页
ch4 DSP系统设计入门_第2页
ch4 DSP系统设计入门_第3页
ch4 DSP系统设计入门_第4页
ch4 DSP系统设计入门_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1、4.1 DSP C语言程序设计 4.1.1 C语言优势 4.1.2 基于C2000的C语言简介4.2 CCS5入门 4.2.1 CCS5简介 4.2.2 新建工程4.3 DSP试验系统 4.3.1 最小系统简介 4.3.2 外设实验板简介第四章 DSP系统设计入门l4.1.1 C语言优势C语言是高级语言,相对于汇编易学易用;C语言的编程效率极高,易于调试;C+运行效率不如C,且面向对象编程占用更多资源;Java同C+,且Java运行依赖于Java虚拟机;汇编语言依赖于计算机硬件,程序的可读性和可移植性较差。高级语言具有很好的可移植性,但是难以实现汇编语言的某些功能(如对内存地址的操作、位操作等

2、)。C 语言作为一种高级语言,既可以访问物理地址又可以进行位操作,能直接对硬件进行操作,适合用于DSP所以,嵌入式编程多用C语言,或C语言与汇编混合编程。F20827亦是如此。l4.1.2 基于C2000的C语言简介C语言中的代码段语言中的代码段编译器中的段名存储器中不同段的分配链接器的命令(CMD)文件MEMORYPAGE 0: /* Program Memory */FLASH: origin = 0 x3F0000, length = 0 x8000PAGE 1: /* Data Memory */M0SARAM: origin = 0 x000000, length = 0 x400M

3、1SARAM: origin = 0 x000400, length = 0 x400SECTIONS.text: FLASH PAGE = 0.ebss: M0SARAM PAGE = 1.cinit: FLASH PAGE = 0.stack: M1SARAM PAGE = 1#define ADCTRL1 (volatile unsigned int *)0 x00007100.void main(void)*ADCTRL1 = 0 x1234; /write entire register*ADCTRL1 |= 0 x4000; /enable ADC module传统编程风格传统编程

4、风格- 简单、快速且易于键入- 变量名称与寄存器名称精确匹配 ( 易于记忆)- 需要生成专门的掩码以操控个别位需要生成专门的掩码以操控个别位- 不能很容易地在观察窗口中显示位字段不能很容易地在观察窗口中显示位字段- 在许多场合中将生成效率低下的代码在许多场合中将生成效率低下的代码优点优点缺点缺点void main(void)AdcRegs.ADCTRL1.all = 0 x1234; /write entire registerAdcRegs.ADCTRL1.bit.ADCENABLE = 1; /enable ADC module新编程风格新编程风格- 易于操控个别位。- 易于在调试窗口观察

5、寄存器位的值- 可生成最高效的代码 ( 利用 C28x)- 结构名称会难以记忆 ( 编辑器自动完成功能)- 需要键入的内容更多 (编辑器自动完成功能)优点优点缺点缺点结构体定义规则结构体定义规则 F2802x 头文件定义了:头文件定义了: 所有的外设结构体所有的外设结构体 所有的寄存器名称所有的寄存器名称 所有的位字段名称所有的位字段名称 所有的寄存器地址所有的寄存器地址PeripheralName.RegisterName.all / 访问整个16位或 32位寄存器PeripheralName.RegisterName.half.LSW / 访问 32 位寄存器的 16 个低位Periphe

6、ralName.RegisterName.half.MSW / 访问 32 位寄存器的 16 个高位PeripheralName.RegisterName.bit.FieldName / 访问寄存器的指定位字段 注:1 “PeripheralName” 由 TI 指定并载于 F2802x 标准头文件。它们由大写字母和小写字母组合成 ( 如:CpuTimer0Regs)。2 “RegisterName” 与数据表中使用的名称相同,它们始终用大写字母表 示 ( 如:TCR 、TIM 、TPR ,. )3 “FieldName” 与数据表中使用的名称相同,它们始终用大写字母表示 ( 如:POL 、T

7、OG 、TSS ,.)F2802x 头文件包(http:/ , 文献编号: SPRC832) 包含了使用结构体法所需的一切资源 定义了所有的外设寄存器位和寄存器地址 头文件包包括: DSP2802x_headersinclude .h files DSP2802x_headerscmd linker .cmd files DSP2802x_headersgel .gel files for CCS DSP2802x_examples 2802x examples doc documentation外设结构体 头(.h) 文件#include “DSP2802x_Device.h”Void In

8、itAdc(void)/* Reset the ADC module */AdcRegs.ADCTRL1.bit.RESET = 1;/* configure the ADC register */AdcRegs.ADCTRL1.all = 0 x00E4;C 语言源文件 ( 例如:Adc.c)/ ADC Individual Register Bit Definitions:struct ADCCTL1_BITS / bits descriptionUint16 TEMPCONV:1; / 0 Temperature sensor connectionUint16 VREFLOCONV:1;

9、 / 1 VSSA connectionUint16 INTPULSEPOS:1; / 2 INT pulse generation controlUint16 ADCREFSEL:1; / 3 Internal/external reference selectUint16 rsvd1:1; / 4 reservedUint16 ADCREFPWD:1; / 5 Reference buffers powerdownUint16 ADCBGPWD:1; / 6 ADC bandgap powerdownUint16 ADCPWDN:1; / 7 ADC powerdownUint16 ADC

10、BSYCHN:5; / 12:8 ADC busy on a channelUint16 ADCBSY:1; / 13 ADC busy signalUint16 ADCENABLE:1; / 14 ADC enableUint16 RESET:1; / 15 ADC master reset;/ Allow access to the bit fields or entire register:union ADCCTL1_REG Uint16 all;struct ADCCTL1_BITS bit;/ ADC External References & Function Declaratio

11、ns:extern volatile struct ADC_REGS AdcRegs;头文件包含有一个用于器件中每个外设的 .h DSP2802x_Adc.hDSP2802x_BootVars.hDSP2802x_Comp.hDSP2802x_CpuTimers.h DSP2802x_DevEmu.h DSP2802x_Device.hDSP2802x_ECap.h DSP2802x_EPwm.h DSP2802x_Gpio.hDSP2802x_I2c.h DSP2802x_NmiIntrupt.h DSP2802x_PieCtrl.hDSP2802x_PieVect.h DSP2802x_S

12、ci.h DSP2802x_Spi.hDSP2802x_SysCtrl.h DSP2802x_XIntrupt.hDSP2802x_Device.h 件 主要的包括头文件 的 将包括所有其他的 .h 文件 在每个源文件中包括此文件: :#include “DSP2802x_Device.h”l4.1.2 基于C2000的C语言简介全局变量定义文件DSP2802x_GlobalVariableDefs.c 定义每个外设寄存器结构体变量 每个结构体使用一个 DATA_SECTION 宏指令来强制结构体的存储位置,以实现至正确的地址链接l4.1.2 基于C2000的C语言简介用于结构体的链接器命令文

13、件用于结构体的链接器命令文件DSP2802x_nonBIOS.cmd 针对每个外设应用的项目范例针对每个外设应用的项目范例 可帮助使用者快速启动开发工作可帮助使用者快速启动开发工作 TI嵌入式处理器的集成开发环境(IDE) 包括调试器,编译器,编辑器,操作系统, 等等 IDE基于Eclipse开源软件框架(v4+) 融合了TI设备的支持与功能 CCSv5是基于原版的 Eclipse CCS使用未修改的Eclipse版本 TI将直接向开源社区提交改进 用户可以随意的将各种其他厂商的Eclipse插件或TI的工具拖放到现有的Eclipse环境 用户可以享受到Eclipse中所有最新的改进所带来的便

14、利 集成额外的工具 操作系统的应用程序开发工具(Linux操作系统,Android.) 代码分析,源代码控制.l4.2.1 CCS5简介Code Composer StudioCode Composer Studio 集成型开发环境集成型开发环境 (IDE)集成了能编辑,代码生成和调试功能 使用按钮的问 单击访问 功能强大的图 绘图/ 分析具 工具 使用脚本务 的自动化任务 内置的 BIOS 功能访问 基于 Eclipse 开源软件框架项目文件包含: 文件清单: 源 文件(C 语言、汇编语言) 库文件 DSP/BIOS 配置文件 链接器命令文件 项目设置: 生成选项 ( 编译器 汇编器 链接器

15、和 DSP/BIOS)新建工程点击 File-New-CCS Project 或者 Project-New Project如下图所示:l4.2.2 新建工程添加项目名称、芯片、仿真器等。 选择对应芯片型号;l4.2.2 新建工程如图所示:新建文件:可以新建源文件,头文件,类等等添加文件添加现有源文件到工程中。右击工程名- Add Filesl4.2.2 新建工程添加头文件目录:一右击工程名-Properties,选择 Build-Include Options,有个#include 搜索路径,添加上路径即可。最有效的方法:最有效的方法: 拷贝一个现有的工程拷贝一个现有的工程 然后加以裁剪和添加

16、然后加以裁剪和添加编译工程选择 Project-Build projectDebug跟编译工程类似的方法可以进行工程的 Debug, 最简单的方式就是点击如下图所示的小虫子。在 Debug 之前,一定要选择和设置目标配置文件(Target Configurations) 。新建目标配置文件(Target Configuration File) ,如下图所示。如下图所示,选择仿真器,选择平台,完成后可以点击 Test Connection,进行仿真器连接测试,如果成功,说明硬件没有问题。4.3.1 DSP实验设备 最小系统简介TI 公司提供的最小系统最小系统供电方式最小系统启动模式选择最小系统引

17、脚分配最小系统原理图最小系统PCB正面映射外设实验板示意图外设实验板基本相关模块功能红外对管模块温度传感器模块外设实验板基本相关模块功能数码管显示模块外设实验板扩展相关模块功能L298电机驱动模块外设实验板扩展相关模块功能TFT彩屏模块PWM_DA模块作业:作业:1. 以一个例子来说明,C2000的C语言中有哪些代码段?2. 一般的C2000工程中会有两个CMD文件,它们各起什么作用?3. 安装CCS5,建立一个自己的工程文件,并完成实验一 知识点:知识点:1. DSP的总体架构-改进的哈佛结构2. DSP的存储空间分配和应用F28027.cmd3. DSP的时钟配置-DSP2802x_Sys

18、Ctrl.c4. DSP的WatchDog-DSP2802x_SysCtrl.c5. DSP的CPUTimer-DSP2802x_CpuTimers.c6. DSP的GPIO与AIO-DSP2802x_Gpio.c7. DSP的外部中断8. DSP的中断系统9. DSP的应用程序开发 第一部分总结第一部分总结1.2.2 DSP芯片的结构特征 为了适应快速数字信号处理运算的要求,DSP芯片普遍采用了特殊的硬件和软件结构,以提高其数字信号处理的运算速度 DSP芯片的主要结构特征有:采用了哈佛结构、流水线技术、硬件乘法器和特殊DSP指令等471.哈佛结构 哈佛结构是一种并行体系结构,主要特点是将程序

19、和数据存储在不同的存储器空间,对程序和数据独立编址,独立访问。 而且在DSP中设置了数据和程序两套总线,使得取指令和执行能完全重叠运行,提高数据吞吐量48哈佛结构改进 为了进一步提高速度和灵活性,TMS320系列产品中,在哈佛结构上作了改进: 一是允许程序存储在高速缓存中,提高指令读取速度; 二是允许数据存放在程序存储器中,并被算术运算指令直接使用,增强芯片的灵活性。 另外DSP中的双口RAM(DARAM)及独立读写总线使数据存取速度提高492.流水线技术DSP芯片广泛采用流水线技术,增强了处理器的处理能力。TMS320系列流水线深度为26级不等,也就是说,处理器在一个时钟周期可并行处理26条

20、指令,每条指令处于流水线的不同阶段。图1.2为三级流水线操作的例子。在三级流水线操作中,取指令、指令译码和执行可以独立地处理,这样DSP可以同时处理多条指令,只是每条指令处于不同处理阶段503.硬件乘法器 在数字信号处理的许多算法中,需要做大量的乘法和加法。DSP芯片一般都有一个硬件乘法器,在TMS320系列中,一次乘累加最少可在一个时钟周期完成4.特殊DSP指令 DSP芯片的另一个特点就是采用了特殊的寻址方式和指令。比如,TMS320系列的位反转寻址方式,LTD、MPY、RPTK等特殊指令。采用这些适合于数字信号处理的寻址方式和指令,进一步减少了数字信号处理的时间512.1.1 DSP存储空

21、间分配2.1.1 DSP存储空间分配设计一个计时器,显示精确到设计一个计时器,显示精确到0.010.01秒秒分析:分析:1 1,用到的外设:,用到的外设:CPUTimer0CPUTimer0,外部中断,外部中断和和GPIOGPIO,2 2,CPUTimer0CPUTimer0完成计时功能,外部中断完成计时功能,外部中断完成控制功能,完成控制功能,GPIOGPIO完成显示功能完成显示功能3 3,中断考虑:定时器,中断考虑:定时器0 0中断和外部中断中断和外部中断应用程序举例:应用程序举例:硬件资源:硬件资源:1 1) CPUTimer0 CPUTimer02 2)外部中断)外部中断GPIO34G

22、PIO343 3)显示:)显示: GPIO12(Data),GPIO33(Clk),GPIO32(CS)GPIO12(Data),GPIO33(Clk),GPIO32(CS)应用程序举例:应用程序举例:系统初始化:系统初始化:1 1)WDWD初始化,关掉初始化,关掉2 2)时钟源初始化,四选一)时钟源初始化,四选一3 3)PLLPLL初始化,初始化,12,212,2,60M60M4 4)外设时钟初始化)外设时钟初始化5 5)FLASHFLASH初始化,初始化,2,2,22,2,2应用程序举例:应用程序举例:Watchdog 计数器操作方式1. 0X55 & 0XAA 序列的顺序写入2. WDD

23、IS 位的置一 (WDOVERRIDE = 1)Flash & OTP 相关寄存器FOTPWAIT OTP等待寄存器配置输入时钟源 & XCLKOUT 寄存器 (XCLK) 位域值描述(1)15-7保留保留。6XCLKINSEL01XCLKIN源选择位:这个位选择XCLKIN输入源。GPIO38是XCLKIN输入源(这也是JTAG端口的TCK源)。GPIO19是XCLKIN输入源。5-2保留保留0-0XCLKOUTDIV00011011XCLKOUT分频比:这两个位选择XCLKOUT频率相对于SYSCLKOUT的比率。比率是:XCLKOUT = SYSCLKOUT/4XCLKOUT = SYS

24、CLKOUT/2XCLKOUT = SYSCLKOUTXCLKOUT = OffXCLK寄存器的寄存器的XCLKINSEL位由复位引脚复位位由复位引脚复位XCLK寄存器用来选择寄存器用来选择XCLKIN输入的输入的GPIO引脚和配置引脚和配置XCLKOUT引脚的频率。引脚的频率。配置器件时钟域 (CLKCTL) CLKCTL寄存器用来选择时钟源,也用来配置寄存器用来选择时钟源,也用来配置时钟故障期间器件的行为时钟故障期间器件的行为位位域域值值描述描述15NMIRESETSEL01NMI复位选择位:该位在检测到一个缺少时钟条件时复位选择位:该位在检测到一个缺少时钟条件时直接产生直接产生 信号和使

25、用信号和使用 复位两者之间进行选择:复位两者之间进行选择:没有任何延迟地直接驱动没有任何延迟地直接驱动 (复位时的默认状态)。(复位时的默认状态)。NMI看门狗复位(看门狗复位( )启动)启动 。注:不管作何选择,都会产生注:不管作何选择,都会产生 信号。信号。位位域域值值描述描述14XTALOSCOFF01晶体振荡器关闭位:如果晶体振荡器不使用,可以使用该位将其关闭。晶体振荡器关闭位:如果晶体振荡器不使用,可以使用该位将其关闭。晶体振荡器开启(复位时的默认状态)。晶体振荡器开启(复位时的默认状态)。晶体振荡器关闭。晶体振荡器关闭。13XCLKINOFF01XCLKIN关闭位:该位关闭外部关闭

26、位:该位关闭外部XCLKIN振荡器输入振荡器输入XCLKIN振荡器输入启用(复位时的默认状态)。振荡器输入启用(复位时的默认状态)。XCLKIN振荡器输入关闭。振荡器输入关闭。注:你需要通过注:你需要通过XCLK寄存器的寄存器的XCLKINSEL位选择位选择XCLKIN 的的GPIO引脚。更详细引脚。更详细的信息请见的信息请见XCLK寄存器的描述。如果使用寄存器的描述。如果使用XCLKIN,XTALOSCOFF就必须置位。就必须置位。12 WDHALTI01看门狗停机模式忽略位:该位选择是否通过停机模式自动开启看门狗停机模式忽略位:该位选择是否通过停机模式自动开启/关闭看门狗。这个特性关闭看门

27、狗。这个特性可以在停机模式有效时用来允许所选的可以在停机模式有效时用来允许所选的WDCLK源继续计时看门狗。这可以允许看门源继续计时看门狗。这可以允许看门狗周期性地唤醒器件。狗周期性地唤醒器件。看门狗自动通过停机模式开启看门狗自动通过停机模式开启/关闭(复位时的默认状态)。关闭(复位时的默认状态)。看门狗忽略停机模式。看门狗忽略停机模式。11 INTOSC2HALTI01内部振荡器内部振荡器2 停机模式忽略位:该位选择是否通过停机模式自动开启停机模式忽略位:该位选择是否通过停机模式自动开启/关闭内部振荡器关闭内部振荡器2。这个特性可以在停机模式有效时用来允许内部振荡器继续计时。这将使能器件更。

28、这个特性可以在停机模式有效时用来允许内部振荡器继续计时。这将使能器件更快地从停机模式中唤醒。快地从停机模式中唤醒。内部振荡器内部振荡器2自动通过停机模式开启自动通过停机模式开启/关闭(复位时的默认状态)。关闭(复位时的默认状态)。内部振荡器内部振荡器2忽略停机模式。忽略停机模式。10 INTOSC2OFF01内部振荡器内部振荡器2关闭位:该位关闭振荡器关闭位:该位关闭振荡器2内部振荡器内部振荡器2开启(复位时的默认状态)。开启(复位时的默认状态)。内部振荡器内部振荡器2关闭。如果内部振荡器关闭。如果内部振荡器2不被使用,用户可以使用该位将其关闭。这个选不被使用,用户可以使用该位将其关闭。这个选

29、择不受缺少时钟检测电路影响。择不受缺少时钟检测电路影响。9INTOSC1HALTI01内部振荡器内部振荡器1 停机模式忽略位:该位选择是否通过停机模式自动开启停机模式忽略位:该位选择是否通过停机模式自动开启/关闭内部振荡器关闭内部振荡器1。内部振荡器内部振荡器1自动通过停机模式开启自动通过停机模式开启/关闭(复位时的默认状态)。关闭(复位时的默认状态)。内部振荡器内部振荡器1忽略停机模式。这个特性可以在停机模式有效时用来允许内部振荡器继忽略停机模式。这个特性可以在停机模式有效时用来允许内部振荡器继续计时。这将使能器件更快地从停机模式中唤醒。续计时。这将使能器件更快地从停机模式中唤醒。位位域域值

30、值描述描述8INTOSC1OFF01内部振荡器内部振荡器1关闭位:该位关闭振荡器关闭位:该位关闭振荡器1内部振荡器内部振荡器1开启(复位时的默认状态)。开启(复位时的默认状态)。内部振荡器内部振荡器1关闭。如果内部振荡器关闭。如果内部振荡器1不被使用,用户可以使用该不被使用,用户可以使用该位将其关闭。这个选择不受缺少时钟检测电路影响。位将其关闭。这个选择不受缺少时钟检测电路影响。7-5TMR2CLKPRESCALE000001010011100101110111CPU Timer2时钟预分频值:这些位为所选的时钟预分频值:这些位为所选的CPU Timer2时钟源时钟源选择预分频值。这个选择不受

31、缺少时钟检测电路影响。选择预分频值。这个选择不受缺少时钟检测电路影响。/1(复位时的默认状态)(复位时的默认状态)/2/4/8/16保留保留保留保留保留保留4-3TMR2CLKSRCSEL00011011CPU Timer2时钟源选择位:该位为时钟源选择位:该位为CPU Timer2选择时钟源选择时钟源选择选择SYSCLKOUT(复位时的默认状态,绕过预分频器)。(复位时的默认状态,绕过预分频器)。选择外部振荡器(选择外部振荡器(XOR输出)。输出)。选择内部振荡器选择内部振荡器1。选择内部振荡器选择内部振荡器2。这个选择不受缺少时钟检测电路影响。这个选择不受缺少时钟检测电路影响。2WDCLK

32、SRCSEL01看门狗时钟源选择位:该位选择看门狗的时钟源。在看门狗时钟源选择位:该位选择看门狗的时钟源。在 为低时和为低时和 变变为高之后,默认选择内部振荡器为高之后,默认选择内部振荡器1。用户需要在初始化过程中选择。用户需要在初始化过程中选择外部振荡器或内部振荡器外部振荡器或内部振荡器2。如果缺少时钟检测电路检测到缺少时。如果缺少时钟检测电路检测到缺少时钟,那么该位被强制为钟,那么该位被强制为0,并选择内部振荡器,并选择内部振荡器1。用户更改该位不。用户更改该位不影响影响PLLCR值。值。选择内部振荡器选择内部振荡器1(复位时的默认状态)。(复位时的默认状态)。选择外部振荡器或内部振荡器选

33、择外部振荡器或内部振荡器2。位位域域值值描述描述1OSCCLKSRC2SEL01振荡器振荡器2时钟源选择位:这个位用来在内部振荡器时钟源选择位:这个位用来在内部振荡器2或外或外部振荡器两者之间作选择。这个选择不受缺少时钟检测部振荡器两者之间作选择。这个选择不受缺少时钟检测电路影响。电路影响。选择外部振荡器(复位时的默认状态)。选择外部振荡器(复位时的默认状态)。选择内部振荡器选择内部振荡器2。0OSCCLKSRCSEL01振荡器时钟源选择位。这个位选择振荡器的时钟源。在振荡器时钟源选择位。这个位选择振荡器的时钟源。在 为低时和为低时和 变为高之后,默认选择内部振荡器变为高之后,默认选择内部振荡

34、器1。用户需。用户需要在初始化过程中选择外部振荡器或内部振荡器要在初始化过程中选择外部振荡器或内部振荡器2。只。只要用户使用这些位来改变时钟源,要用户使用这些位来改变时钟源,PLLCR寄存器将被寄存器将被自动强制为零。这阻止了潜在的自动强制为零。这阻止了潜在的PLL过冲。然后,用户过冲。然后,用户必须写必须写PLLCR寄存器来配置合适的分频比。如果必要,寄存器来配置合适的分频比。如果必要,用户也可以使用用户也可以使用PLLLOCKPRD寄存器来配置寄存器来配置PLL锁定锁定周期以缩短锁定时间。如果缺少时钟检测电路检测到缺周期以缩短锁定时间。如果缺少时钟检测电路检测到缺少时钟,那么这个位被自动强

35、制为少时钟,那么这个位被自动强制为0,并选择内部振荡,并选择内部振荡器器1作为时钟。作为时钟。PLLCR寄存器也将自动强制为寄存器也将自动强制为0来防止来防止所有潜在的过冲。所有潜在的过冲。选择内部振荡器选择内部振荡器1(复位时的默认状态)。(复位时的默认状态)。选择外部振荡器或内部振荡器选择外部振荡器或内部振荡器2。注:如果用户希望使。注:如果用户希望使用振荡器用振荡器2或外部振荡器来计时或外部振荡器来计时CPU,必须应该先配置,必须应该先配置这个位,然后再写这个位,然后再写OSCCLKSRCSEL位。位。PLL状态寄存器(状态寄存器(PLLSTS)PLL控制寄存器(控制寄存器(PLLCR)

36、基于PLL的配置模式PLL模式注释PLLSTSDIVSEL(1)CLKIN和SYSCLKOUT(2)PLL关闭由用户通过置位PLLSTS寄存器的PLLOFF位来激活。在这种模式下PLL模块禁用。这对于降低系统噪声和低功率操作很有用。在进入这个模式之前,PLLCR寄存器必须先被设置成0 x0000(PLL旁路)。CPU时钟(CLKIN)直接从X1/X2,X1或XCLKIN上的输入时钟获得。0,123OSCCLK/4OSCCLK/2OSCCLK/1PLL旁路PLL旁路是上电时或一次外部复位( )后默认的PLL配置。当PLLCR寄存器被设置成0 x0000,或者,在PLLCR寄存器被修改之后PLL锁

37、定到一个新的频率时,这个模式被选择。在这个模式下,PLL本身被旁路,但PLL未关闭。0,123OSCCLK/4OSCCLK/2OSCCLK/1PLL启用该模式通过将一个非零值n写入PLLCR寄存器来实现。当写PLLCR时,器件将切换到PLL旁路模式,直至PLL锁定。0,12OSCCLK*n/4OSCCLK*n/2PLLSTSDIVSEL在写PLLCR之前必须为零,并且,应该只有在PLLSTSPLLLOCKS =1之后才能被修改选择的输入时钟和PLLCRDIV位应该使PLL(VCOCLK)的输出频率是最小值50MHz。PLL 控制寄存器 (PLLCR)Flash & OTP 相关寄存器FOPT

38、确定是否开启flash流水线模式寄存器FBANKWAIT flash 等待寄存器 FBANKWAIT flash 等待寄存器 GPIOGPIO初始化:初始化:1 1)上拉设置)上拉设置2 2)MUXMUX设置设置3 3)方向设置)方向设置4 4)初始值设置)初始值设置5 5)特殊引脚的设置)特殊引脚的设置应用程序举例:应用程序举例:l 多路复用 MUXGPIO MUXGPIO MUXGPIO MUXl 数字 I/O 控制GPIO 的配置步骤:Step 1. Plan the device pin-out - 安排器件引脚输出Step 2. Enable or disable internal

39、pull-up resistor - 使能或禁能内部上拉电阻Step 3. Select input qualification- 选择输入时钟同步Step 4. Select the pin function- 选择引脚功能Step 5. For digital general purpose I/O , select the direction of pin- 为数字通用I/O选择引脚的方向 输入或者输出Step 6. Select low power mode wake-up sources- 选择低功率模式唤醒源(是否作为唤醒源)Step 7. Select external inte

40、rrupt sources - 选择外部中断源GPIO 相关寄存器 (GPIOXINTnSEL)CPUTimer0CPUTimer0初始化:初始化:1 1)关时钟)关时钟2 2)周期设置)周期设置3 3)预分频设置)预分频设置4 4)初始值设置)初始值设置5 5)中断使能)中断使能6 6)使能时钟)使能时钟 或或 ?应用程序举例:应用程序举例:定时器原理32位 CPU 计数器相关寄存器32位 CPU 计数器寄存器 (TIMERxTIM )TIMERxTIMH与之类似32位 CPU 周期寄存器 (TIMERxPRD )TIMERxPRDH与之类似TIMERxTCR寄存器描述_续TIMERxTCR

41、寄存器描述_续TIMERxTPR寄存器描述(TIMERxTPRH寄存器与之类似)寄存器与之类似)Xint1Xint1初始化:初始化:1 1)Xint1Xint1引脚选择引脚选择2 2)外部中断极性选择)外部中断极性选择3 3)中断使能)中断使能应用程序举例:应用程序举例:3.6 3.6 外部中断控制寄存器外部中断控制寄存器:1. 支持支持3个外部中断,个外部中断,XINT1 - XINT3。2. 每个外部中断可以选择负边沿或正边沿触发,也可以被使能或禁能。3. 屏蔽的中断还包含一个16位自由运行的递增计数器,在检测到一个有效的中断沿时复位为0。这个计数器可以用来精确地计时中断这个计数器可以用来精确地计时中断。表表 3.14 中断控制和计数器寄存

温馨提示

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

评论

0/150

提交评论