_TMS320F2812_CPU 定时器ppt课件_第1页
_TMS320F2812_CPU 定时器ppt课件_第2页
_TMS320F2812_CPU 定时器ppt课件_第3页
_TMS320F2812_CPU 定时器ppt课件_第4页
_TMS320F2812_CPU 定时器ppt课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、第九讲 TMS320F2812芯片集成外设的开发(CPU定时器0、GPIOA),1,;,TMS320 F2812上的CPU 定时器,F2812器件上有3个32位CPU定时器(TIMER0/1/2)。定时器1和2预留给实时操作系统DSP/BIOS使用,只有定时器0可以在应用程序中使用。 CPU定时器0结构如下图所示:,2,;,SYSCLKOUT为系统的工作时钟,一旦定时器被使能,则预定标计数器PSC递减计数,预定标计数器产生下溢后向定时器的32位计数器借位,最后定时器计数器产生溢出使定时器向CPU发送中断。每次预定标PSC产生溢出后,使用TDDR中的值重新装载,同样PRD为32位计数器提供重新装

2、载值。,TMS320 F2812上的CPU 定时器,3,;,TMS320 F2812上的CPU 定时器0,常见寄存器:控制寄存器TCR 定时器预定标寄存器TPRH:TPR 定时器计数器TIMH:TIM 定时器周期寄存器 PRDH:PRD,4,;,TMS320 F2812上的CPU 定时器0,地址:0 x000C00-01,地址:0 x000C02-03,5,;,TMS320 F2812上的CPU 定时器0,地址:0 x000C04,地址:0 x000C06-07,6,;,void InitCpuTimers(void) CpuTimer0.RegsAddr = / 复位中断计数器 ,定时器的初

3、始化和配置,7,;,定时器的初始化和配置,void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period) Uint32 temp; / 定时器周期初始化 / 将后两个实参的乘积作为定时器的周期值存入定时器周期寄存器 Timer-CPUFreqInMHz = Freq; Timer-PeriodInUSec = Period; temp = (long) (Freq * Period); Timer-RegsAddr-PRD.all = temp; CpuTimer0.RegsAddr = / 复位中断计数器

4、,8,;,外设位域结构体,TMS320F2812头文件与C语言编程,9,;,知识背景:C语言基础-结构体和联合(共用)体,结构体 结构体也是一种数据类型, 可以使用结构体变量, 在使用结构体变量时要先对其定义。定义结构体变量的一般格式为: struct 结构名 类型 变量名; 类型 变量名; . 结构变量; 结构名是结构的标识符不是变量名。 类型可以 整型、浮点型、字符型、指针型和无值型。,10,;,知识背景:C语言基础-结构体和联合(共用)体,例如: struct string char name8; int age; char sex2; char depart20; float wage

5、1, wage2, wage3, wage4, wage5; ; struct string person; 结构的每一个类型变量称为结构成员,结构是按变量名字来访问成员的,结构变量以成员作为基本变量。 结构成员的表示方式为: 结构变量.成员名 如果将“结构变量.成员名”看成一个整体, 则这个整体的数据类型与结构中该成员的数据类型相同, 这样就可象前面所讲的变量那样使用。,11,;,知识背景:C语言基础-结构体和联合(共用)体,结构指针 结构指针是指向结构的指针。它由一个加在结构变量名前的“*” 操作符来定义, 例如用前面已说明的结构体定义一个结构指针如下: struct string cha

6、r name8; int age; char sex2; char depart20; float wage1, wage2, wage3, wage4, wage5; struct string *student;,12,;,知识背景:C语言基础-结构体和联合(共用)体,结构指针 结构指针对结构成员的访问表示为: 结构指针名-结构成员 例如要给上面定义的结构中age赋值, 可以用下面语句: student-age=18; 实际上, student- age就是(*student). age的缩写形式。 需要指出的是结构指针是指向结构的一个指针, 即结构中第一个成员的首地址, 因此在使用之前应

7、该对结构指针初始化, 即分配整个结构长度的字节空间。,13,;,知识背景:C语言基础-结构体和联合(共用)体,位结构 位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构比按位运算符更加方便。 位结构定义的一般形式为: struct 位结构名 数据类型 变量名: 整型常数; 数据类型 变量名: 整型常数; 位结构变量; 其中: 数据类型必须是int(unsigned或signed)。整型常数必须是非负的整数, 范围是015, 表示二进制位的个数, 即表示有多少位。 变量名是选择项, 可以不命名。,14,;,知识背景:C语言基础-结构体和联合(共用)体,位结构 例如: 下面定义

8、了一个位结构。 struct unsigned incon: 8; /*incon占用低字节的07共8位*/ unsigned txcolor: 4; /*txcolor占用高字节的03位共4位*/ unsigned bgcolor: 3;/*bgcolor占用高字节的46位共3位*/ unsigned blink: 1; /*blink占用高字节的第7位*/ ch; 位结构成员的访问与结构成员的访问相同。 例如: 访问上例位结构中的bgcolor成员可写成: ch.bgcolor,15,;,知识背景:C语言基础-结构体和联合(共用)体,注意: 1. 位结构中的成员可以定义为unsigned,

9、 也可定义为signed, 但当成员长度为1时, 会被认为是unsigned类型。因为单个位不可能具有符号。 2. 位结构中的成员不能使用数组和指针, 但位结构变量可以是数组和指针,如果是指针, 其成员访问方式同结构指针。 3. 位结构总长度(位数), 是各个位成员定义的位数之和, 可以超过两个字节。,16,;,知识背景:C语言基础-结构体和联合(共用)体,注意: 4. 位结构成员可以与其它结构成员一起使用。 例如: struct info char name8; int age; struct addr address; float pay; unsigned state: 1; unsig

10、ned pay: 1; workers; 上例的结构定义了关于一个工从的信息。其中有两个位结构成员, 每个位结构成员只有一位, 因此只占一个字节但保存了两个信息, 该字节中第一位表示工人的状态, 第二位表示工资是否已发放。由此可见使用位结构可以节省存贮空间。,17,;,知识背景:C语言基础-结构体和联合(共用)体,联合体 联合也是一种新的数据类型, 它是一种特殊形式的变量。 联合说明和联合变量定义与结构十分相似。其形式为: union 联合名 数据类型 成员名; 数据类型 成员名; . 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型和不同长度的变量。,18,;

11、,知识背景:C语言基础-结构体和联合(共用)体,例如 union a_bc int i; char mm; ; 再用已说明的联合可定义联合变量。 例如用上面说明的联合定义一个名为lgc的联合变量, 可写成: union a_bc lgc; 在联合变量lgc中, 整型量i和字符mm公用同一内存位置。 当一个联合被说明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度。,19,;,知识背景:C语言基础-结构体和联合(共用)体,联合访问其成员的方法与结构相同。同样联合变量也可以定义成数组或指针,但定义为指针时, 也要用-符号, 此时联合访问成员可表示成: 联合名-成员名 另外, 联合既

12、可以出现在结构内, 它的成员也可以是结构。 例如: struct int age; char *addr; union int i; char *ch; x; y10; 若要访问结构变量y1中联合x的成员i, 可以写成: y1.x.i; 若要访问结构变量y2中联合x的字符串指针ch的第一个字符可写成: *y2.x.ch; 若写成y2.x.*ch;是错误的。,20,;,知识背景:C语言基础-结构体和联合(共用)体,结构和联合有下列区别: 1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员, 而结构的所有成员都存在。 2. 对于联合的不同成员赋值

13、, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。,21,;,外设位域结构体定义 步骤,结构体定义 变量定义 数据区分配 存储空间定义 源文件使用,22,;,CPU 定时器0 外设位域结构体定义 步骤1,结构体及联合体定义 struct TCR_BITS / bits description Uint16 rsvd1:4; / 3:0 reserved Uint16 TSS:1; / 4 Timer Start/Stop Uint16 TRB:1; / 5 Timer reload Uint16 rsvd2:4; / 9:6 reserved Uint1

14、6 SOFT:1; / 10 Emulation modes Uint16 FREE:1; / 11 Uint16 rsvd3:2; / 12:13 reserved Uint16 TIE:1; / 14 Output enable Uint16 TIF:1; / 15 Interrupt flag ; union TCR_REG Uint16 all; struct TCR_BITS bit; ;,23,;,CPU 定时器0 外设位域结构体定义 步骤1,struct CPUTIMER_REGS union TIM_GROUP TIM; / Timer counter register uni

15、on PRD_GROUP PRD; / Period register union TCR_REG TCR; / Timer control register Uint16 rsvd1; / reserved union TPR_REG TPR; / Timer pre-scale low union TPRH_REG TPRH; / Timer pre-scale high ; struct CPUTIMER_VARS volatile struct CPUTIMER_REGS *RegsAddr; Uint32 InterruptCount; float CPUFreqInMHz; flo

16、at PeriodInUSec; ;,24,;,CPU 定时器0 外设位域结构体定义 步骤2,变量定义 struct CPUTIMER_VARS CpuTimer0; / 定义CpuTimer0为具有CPUTIMER_VARS结构体 / 类型的变量,25,;,CPU 定时器0 外设位域结构体定义 步骤3,数据区分配 #ifdef _cplusplus #pragma DATA_SECTION(CpuTimer0RegsFile) #else #pragma DATA_SECTION(CpuTimer0Regs,CpuTimer0RegsFile); #endif volatile struct

17、 CPUTIMER_REGS CpuTimer0Regs;,26,;,CPU 定时器0 外设位域结构体定义 步骤4,存储空间定义 MEMORY PAGE 0: /* Program Memory */ PAGE 1: /* Data Memory */ CPU_TIMER0 : origin = 0 x000C00, length = 0 x000008 /* CPU Timer0 registers (CPU Timer1 and Timer2 are reserved for BIOS)*/ SECTIONS CpuTimer0RegsFile : CPU_TIMER0, PAGE = 1

18、 ,27,;,CPU 定时器0 外设位域结构体定义 步骤5,源文件使用 CpuTimer0.RegsAddr = / 用周期值从新装载所有计数器寄存器,28,;,实验演示,本实验将PWM1-PWM6引脚设置为通用的I/O口,方向为输出,来控制LED灯D1-D6的闪烁。 功能: (1) 本示例对CPU定时器0进行配置,定时器0每产生一次中断计数器加1。 (2) GPIO A端口控制的6个发光二极管随着中断闪烁。,29,;,30,;,31,;,74HC245的作用:信号功率放大,总线驱动器,典型的TTL型三态缓冲门电路。由于单片机等CPU的数据地址控制总线端口都有一定的负载能力,如果负载超过其负载

19、能力,一般应加驱动器。也可以使用74HC244等其他电路,74HC244比74HC245多了锁存器。 74HC245实物图及引脚图:,32,;,74HC245的作用:信号功率放大,74HC245引脚定义: 第1脚DIR,为输入输出端口转换用,DIR=“1”高电平时信号由“A”端输入“B”端输出,DIR=“0”低电平时信号由“B”端输入“A”端输出。 第29脚“A”信号输入输出端,A1=B1、A8=B8,A1与B1是一组,如果DIR=“1”OE=“0”则A1输入B1输出,其它类同。如果DIR=“0”OE=“0”则B1输入A1输出,其它类同。 第1118脚“B”信号输入输出端,功能与“A”端一样,

20、不再描述。 第19脚OE,使能端,若该脚为“1”A/B端的信号将不导通,只有为“0”时A/B端才被启用,该脚也就是起到开关的作用。 第10脚GND,电源地。 第20脚VCC,电源正极。,33,;,74HC245的作用:信号功率放大,TRUTH TABLE真值表,H=高电平 L=低电平 =不定,34,;,28x GPIO 寄存器结构,35,;,GPIO A GPIOA0 / PWM1 GPIOA1 / PWM2 GPIOA2 / PWM3 GPIOA3 / PWM4 GPIOA4 / PWM5 GPIOA5 / PWM6 GPIOA6 / T1PWM_T1CMP GPIOA7 / T2PWM_T

21、2CMP GPIOA8 / CAP1_QEP1 GPIOA9 / CAP2_QEP2 GPIOA10 / CAP3_QEPI1 GPIOA11 / TDIRA GPIOA12 / TCLKINA GPIOA13 / C1TRIP GPIOA14 / C2TRIP GPIOA15 / C3TRIP,GPIO B GPIOB0 / PWM7 GPIOB1 / PWM8 GPIOB2 / PWM9 GPIOB3 / PWM10 GPIOB4 / PWM11 GPIOB5 / PWM12 GPIOB6 / T3PWM_T3CMP GPIOB7 / T4PWM_T4CMP GPIOB8 / CAP4_Q

22、EP3 GPIOB9 / CAP5_QEP4 GPIOB10 / CAP6_QEPI2 GPIOB11 / TDIRB GPIOB12 / TCLKINB GPIOB13 / C4TRIP GPIOB14 / C5TRIP GPIOB15 / C6TRIP,GPIO D GPIOD0 / T1CTRIP_PDPINTA GPIOD1 / T2CTRIP / EVASOC GPIOD5 / T3CTRIP_PDPINTB GPIOD6 / T4CTRIP / EVBSOC,GPIO E GPIOE0 / XINT1_XBIO GPIOE1 / XINT2_ADCSOC GPIOE2 / XNMI

23、_XINT13,GPIO F GPIOF0 / SPISIMOA GPIOF1 / SPISOMIA GPIOF2 / SPICLKA GPIOF3 / SPISTEA GPIOF4 / SCITXDA GPIOF5 / SCIRXDA GPIOF6 / CANTXA GPIOF7 / CANRXA GPIOF8 / MCLKXA GPIOF9 / MCLKRA GPIOF10 / MFSXA GPIOF11 / MFSRA GPIOF12 / MDXA GPIOF13 / MDRA GPIOF14 / XF,GPIO G GPIOG4 / SCITXDB GPIOG5 / SCIRXDB,2

24、8x GPIO 引脚分配,Note: GPIO are pin functions at reset,GPIO A, B, D, E include Input Qualification feature,36,;,28x GPIO 功能框图,1,0,MUX Control Bit 0 = I/O Function 1 = Primary Function,Pin,Primary Peripheral Function,I/O DAT Bit (R/W),In,Out,I/O DIR Bit 0 = Input 1 = Output,GPxMUX,GPxDIR,GPxDAT,GPxSET GP

25、xCLEAR GPxTOGGLE,Some digital I/O and peripheral I/O input signals include an Input Qualification feature,37,;,28x GPIO MUX/DIR 寄存器,38,;,28x GPIO 数据寄存器,39,;,GPIO 外设位域结构体定义 步骤1,结构体定义 struct GPAMUX_BITS / bits description Uint16 PWM1_GPIOA0:1; / 0 Uint16 PWM2_GPIOA1:1; / 1 Uint16 PWM3_GPIOA2:1; / 2 Ui

26、nt16 PWM4_GPIOA3:1; / 3 Uint16 PWM5_GPIOA4:1; / 4 Uint16 PWM6_GPIOA5:1; / 5 Uint16 T1PWM_GPIOA6:1; / 6 Uint16 T2PWM_GPIOA7:1; / 7 Uint16 CAP1Q1_GPIOA8:1; / 8 Uint16 CAP2Q2_GPIOA9:1; / 9 Uint16 CAP3QI1_GPIOA10:1; / 10 Uint16 TDIRA_GPIOA11:1; / 11 Uint16 TCLKINA_GPIOA12:1; / 12 Uint16 C1TRIP_GPIOA13:1

27、; / 13 Uint16 C2TRIP_GPIOA14:1; / 14 Uint16 C3TRIP_GPIOA15:1; / 15 ; union GPAMUX_REG Uint16 all; struct GPAMUX_BITS bit; ;,40,;,GPIO 外设位域结构体定义 步骤1,struct GPADIR_BITS / bits description Uint16 GPIOA0:1; / 0 Uint16 GPIOA1:1; / 1 Uint16 GPIOA2:1; / 2 Uint16 GPIOA3:1; / 3 Uint16 GPIOA4:1; / 4 Uint16 GP

28、IOA5:1; / 5 Uint16 GPIOA6:1; / 6 Uint16 GPIOA7:1; / 7 Uint16 GPIOA8:1; / 8 Uint16 GPIOA9:1; / 9 Uint16 GPIOA10:1; / 10 Uint16 GPIOA11:1; / 11 Uint16 GPIOA12:1; / 12 Uint16 GPIOA13:1; / 13 Uint16 GPIOA14:1; / 14 Uint16 GPIOA15:1; / 15 ; union GPADIR_REG Uint16 all; struct GPADIR_BITS bit; ;,41,;,stru

29、ct GPIO_MUX_REGS union GPAMUX_REG GPAMUX; union GPADIR_REG GPADIR; union GPAQUAL_REG GPAQUAL; Uint16 rsvd1; union GPBMUX_REG GPBMUX; union GPBDIR_REG GPBDIR; union GPBQUAL_REG GPBQUAL; Uint16 rsvd25; union GPDMUX_REG GPDMUX; union GPDDIR_REG GPDDIR; union GPDQUAL_REG GPDQUAL; Uint16 rsvd3; union GPE

30、MUX_REG GPEMUX; union GPEDIR_REG GPEDIR; union GPEQUAL_REG GPEQUAL; Uint16 rsvd4; union GPFMUX_REG GPFMUX; union GPFDIR_REG GPFDIR; Uint16 rsvd52; union GPGMUX_REG GPGMUX; union GPGDIR_REG GPGDIR; Uint16 rsvd66; ;,GPIO 外设位域结构体定义 步骤1,struct GPIO_DATA_REGS union GPADAT_REG GPADAT; union GPASET_REG GPA

31、SET; union GPACLEAR_REG GPACLEAR; union GPATOGGLE_REG GPATOGGLE; union GPBDAT_REG GPBDAT; union GPBSET_REG GPBSET; union GPBCLEAR_REG GPBCLEAR; union GPBTOGGLE_REG GPBTOGGLE; Uint16 rsvd14; union GPDDAT_REG GPDDAT; union GPDSET_REG GPDSET; union GPDCLEAR_REG GPDCLEAR; union GPDTOGGLE_REG GPDTOGGLE;

32、union GPEDAT_REG GPEDAT; union GPESET_REG GPESET; union GPECLEAR_REG GPECLEAR; union GPETOGGLE_REG GPETOGGLE; union GPFDAT_REG GPFDAT; union GPFSET_REG GPFSET; union GPFCLEAR_REG GPFCLEAR; union GPFTOGGLE_REG GPFTOGGLE; union GPGDAT_REG GPGDAT; union GPGSET_REG GPGSET; union GPGCLEAR_REG GPGCLEAR; union GPGTOGGLE_REG GPGTOGGLE;

温馨提示

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

评论

0/150

提交评论