




免费预览已结束,剩余20页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、寄存器的C语言访问二、寄存器文件的空间分配三、使用C语言设置通用定时器四、使用C语言设置比较单元五、使用C语言设置捕获单元与QEP电路,第六章使用C语言操作事件管理寄存器,F2812的寄存器能够实现对系统和外设功能的配置与控制,因此在F2812的开发中对寄存器的操作是极为重要的,操作寄存器常用的语言有两种,汇编和C语言,而采用C语言更加形象,更加有助于理解.本讲就以事件管理器寄存器的操作为例,讲解如何使用C语言对F2812的寄存器进行操作.,一、寄存器的C语言访问,使用位定义的方法定义寄存器,什么是位域,所谓位域,就是将一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数,每个域都有一个域名,允许在程序中按域名进行操作.位域的定义和位域变量的说明同结构体定义和其成员说明类似,其语法格式如图:,Struct位域结构名类型说明符位域名1:位域长度类型说明符位域名2:位域长度类型说明符位域名n:位域长度,使用位定义的方法定义寄存器,关于位域,需要注意以下几项:类型说明符就是基本的数据类型,一般取Unit16,位域名一般根据寄存器功能取,也可以无域名,作用起填充或调整位置;无名的位域不能使用。位域的定义必须按照从右往左的顺序进行;一个位域必须存储在同一个字节中,不能跨两个字节,这样,位域的长度不能大过一个字节;位域的长度不能大于一个字节的长度,也就是说一个位域不能超过8位;,Structbsinta:4;int:0;/空域intb:5;/从第2个字节开始存放intc:3;;,Structbsinta:4;int:2;/这2位不能使用intb:2;/从第2个字节开始存放intc:5;intd:3;;,位域定义实例,structbs/定义位域bsinta:8;intb:2;intc:6;/这里的分号不能省略structbsbs1;/声明bs型变量bs1,定义一个位域bs,EVA/B中通用定时器全局控制寄存器位域定义,使用位定义的方法定义寄存器可以方便地对寄存器功能位进行操作,但是有时候如果需要对整个寄存器进行操作,就需要对寄存器整体进行共同体的定义.,声明共同体,EVA/B中通用定时器全局控制寄存器结构体定义,对寄存器定义了共同体之后,就可以对寄存器进行整体的或者按位的操作,这种二选一操作方式的实现正是定义共同体的优势所在.,EVA/B中除了通用定时器全局控制寄存器GPTCONA外,还有许多其它的寄存器,为了便于管理,需要创建一个结构体,用来包含EV中的所有的寄存器.,创建结构体文件,structEVA_REGSunionGPTCONA_REGGPTCONA;Uint16T1CNT;Uint16T1CMPR;Uint16T1PR;unionTCONA_REGT1CON;Uint16T2CNT;Uint16T2CMPR;Uint16T2PR;unionTCONA_REGT2CON;unionEXTCONA_REGEXTCON;Uint16rsvd17;unionCOMCONA_REGCOMCONA;Uint16rsvd2;unionACTRA_REGACTR;Uint16rsvd3;unionDBTCON_REGDBTCONA;Uint16rsvd4;Uint16CMPR1;Uint16CMPR2;,定义了EVA中所有寄存器的结构体,Uint16CMPR3;Uint16rsvd56;unionCAPCONA_REGCAPCON;Uint16rsvd6;unionCAPFIFOA_REGCAPFIFO;Uint16CAP1FIFO;Uint16CAP2FIFO;Uint16CAP3FIFO;Uint16rsvd7;Uint16CAP1FBOT;Uint16CAP2FBOT;Uint16CAP3FBOT;Uint16rsvd82;unionEVAIMRA_REGEVAIMRA;unionEVAIMRB_REGEVAIMRB;unionEVAIMRC_REGEVAIMRC;unionEVAIFRA_REGEVAIFRA;unionEVAIFRB_REGEVAIFRB;unionEVAIFRC_REGEVAIFRC;,EVA的结构体EVA_REGS中,有的成员是union类型的,有的是Uint16类型的,union的既可以实现整体操作,也可以按位操作,而Uint16的只能按位操作.,前边对F2812的寄存器按照C语言中位域定义和寄存器结构体的方式组织了数据结构,那么,编译器是如何把这些变量分配到存储空间的呢?这个工作需要两步来完成:第一步:使用DATA_SECTION的方法将寄存器文件分配到数据空间中的某个数据段.,第二步:在CMD文件中,将这个数据段直接映射到这个外设寄存器所占的存储空间.,二、寄存器文件的空间分配,在source目录中的DSP28_GlobalVariableDefs.c文件记录了所有寄存器的分配情况,事件管理器结构框图,通用定时器,全比较单元,捕获单元,我们将按照这3块内容介绍如何用C语言设置寄存器的方法,通用定时器功能概述,三、使用C语言设置通用定时器,通用定时器模块包含:一个16位可读/写及增/减的定时器计数器TxCNT(x=1,2,4)。一个16位可读/写定时器比较寄存器(双缓冲)TxCMPR;一个16位可读/写定时器周期寄存器(双缓冲)TxPR;一个16位可读/写定时器控制寄存器TxCON;一个通用定时器比较输出引脚TxCMP;用于内部和外部时钟输入的可编程定标器;控制和中断逻辑,用于4个可屏蔽中断(上溢、下溢、比较和周期中断);输出条件逻辑。,红色方框中的寄存器需要在使用中进行设置,通用定时器输入与输出,内部高速外设时钟HSPCLK外部时钟TCLKINA/B方向输入TDIRA/B复位信号RESET,比较输出TxCMPADC转换启动信号提供上溢、下溢、比较匹配和周期匹配信号计数方向标识位,通用定时器寄存器,通用定时器控制寄存器TxCON,EvaReg.T1CON.bit.TMODEEvaReg.T1CON.bit.TCLKS10EvaReg.T1CON.bit.TPSEvaReg.T1CON.bit.TCLD10EvaReg.T1CON.bit.TENABLEEvaReg.T1CON.bit.TECMPR,具体各位的含义请参见手册的表格,直接对下列寄存器赋值即可完成寄存器操作,全局通用定时器控制寄存器(GPTCONA为例),定时器2的计数状态(只读)定时器1的计数状态(只读)事件2启动ADC转换事件1启动ADC转换定时器比较输出使能位定时器2比较输出使能位定时器1比较输出使能位定时器2比较输出极性定时器1比较输出极性,实现功能,C语言操作(EVA为例),EvaRegs.GPTCONA.bit.T2STATEvaRegs.GPTCONA.bit.T1STATEvaRegs.GPTCONA.bit.T2TOADCEvaRegs.GPTCONA.bit.T1TOADCEvaRegs.GPTCONA.bit.TCMPOEEvaRegs.GPTCONA.bit.T2CMPOEEvaRegs.GPTCONA.bit.T1CMPOEEvaRegs.GPTCONA.bit.T2PINEvaRegs.GPTCONA.bit.T1PIN,直接对下列寄存器赋值即可完成寄存器操作,具体各位的含义请参见手册的表格,通用定时器比较寄存器TxCMPR,R/W-x,比较寄存器中的值与通用定时器的计数值比较,当比较匹配时,产生:由GPTCONA/B位的设置决定相关的比较输出信号发生跳变;相应的中断标志被置位;若中断没有被屏蔽,则产生一个外设中断请求。通过设置TxCON的相关位,可以使能或禁止比较操作。无论在哪种定时器工作模式(包括QEP模式),比较和输出均可被使能或禁止。,C语言访问:EvaReg.T1CMPR(以EVA中的T1为例),通用定时器周期寄存器TxPR,TxPR,D15D0,R/W-x,定时器比较寄存器x=1,2,3,4,周期寄存器的值决定定时器的定时周期。当周期定时器的值与计数器的值匹配时,根据计数器的计数模式,通用定时器复位为0或递减计数。,通用定时器的周期寄存器和比较寄存器都是带映像缓冲的。在一个周期的任何时刻,都可以向这两个寄存器写入新值,实际上,新值是先被写入相应的映像寄存器中的。对于比较寄存器,只有当TxCON寄存器选定的定时器事件发生时,映像寄存器中的内容才被载入工作寄存器中;对于周期寄存器,只有当计数器寄存器TxCNT为0时,映像寄存器的值才载入到工作寄存器中。周期寄存器和比较寄存器的双缓冲特点允许应用代码在一个周期的任意时刻更新周期和比较寄存器,从而可改变下一个定时器周期及PWM脉冲宽度。,C语言访问:EvaReg.T1PR(以EVA中的T1为例),四、使用C语言设置比较单元,全比较单元和PWM电路概述,每一个事件管理器可以同时产生8路PWM信号,包括:3对由完全比较单元产生的带有可编程死区的PWM信号(如右图所示)由定时器比较器产生的2路独立的PWM信号(前边通用定时器部分介绍)与比较单元相关的PWM电路,主要包括四个功能单元:非对称/对称波形发生器可编程死区单元输出逻辑空间矢量(SV)PWM状态机,比较控制寄存器COMCONA,CENABLE,CLD1,CLD0,SVENABLE,ACTRLD1,ACTRD0,PDINTAStatus,FCMP3OE,FCMP2OE,FCMP1OE,Reserved,C3TRIPE,D15D14D13D12D11D10D9D8,R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R-0,D7D6D5D4D3D2D1D0,R/W-0R/W-0R/W-0R-0R/W-1R/W-1R/W-1,FCMPOE,C2TRIPE,C1TRIPE,比较器使能比较寄存器CMPRx重新装载条件使能空间向量PWM模式行为控制寄存器重新装载条件全比较输出使能PDPINTApin的当前状态,EvaRegs.COMCONA.bit.CENABLEEvaRegs.COMCONA.bit.CLDEvaRegs.COMCONA.bit.SVENABLEEvaRegs.COMCONA.bit.ACTRLDEvaRegs.COMCONA.bit.FCOMPOEEvaRegs.COMCONA.bit.PDPINTASTATUS,直接对下列寄存器赋值即可完成寄存器操作,具体各位的含义请参见手册的表格,比较方式控制寄存器ACTRA,SVRDIR,D2,D1,D0,CMP6ACT1,D15D14D13D12D11D10D9D8,R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0,D7D6D5D4D3D2D1D0,CMP6ACT0,CMP5ACT1,CMP5ACT0,CMP4ACT1,CMP4ACT0,CMP3ACT1,CMP3ACT0,CMP2ACT1,CMP2ACT0,CMP1ACT1,CMP1ACT0,R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0,比较输出引脚1上的输出极性比较输出引脚2上的输出极性比较输出引脚3上的输出极性比较输出引脚4上的输出极性比较输出引脚5上的输出极性比较输出引脚6上的输出极性空间矢量位空间矢量PWM转动方向,实现功能,C语言操作(EVA为例),EvaRegs.ACTR.bit.CMP1ACTEvaRegs.ACTR.bit.CMP2ACTEvaRegs.ACTR.bit.CMP3ACTEvaRegs.ACTR.bit.CMP4ACTEvaRegs.ACTR.bit.CMP5ACTEvaRegs.ACTR.bit.CMP6ACTEvaRegs.ACTR.bit.DEvaRegs.ACTR.bit.SVRDIR,直接对下列寄存器赋值即可完成寄存器操作,具体各位的含义请参见手册的表格,死区单元的输入和输出,防止在任何操作条件下,每个单元产生的两路PWM信号同时打开被控功率桥的上、下臂。输入:由比较单元1、2和3的对称/非对称波形产生器产生的PH1、PH2和PH3;输出:为DTPH1、DTPH1_;DTPH2、DTPH2_及DTPH3、DTPH3_。对于每一个输入信号PHx,产生两个输出信号DTPHx和DTPHx_当比较单元和其相关输出的死区未被使能时,这两个信号完全相同。当比较单元的死区使能时,两个信号的跳变沿被一段叫做死区的时间间隔分开。死区的值由DBTCONA/B中的相应位来控制。假设DBTCONA/B的位118的值为m,位42中相应的预定标参数为x/p,则死区值为(pm)个CPU时钟周期。如P178(P187)表和图所示。,死区定时器控制寄存器,死区定时器周期死区定时器3使能位死区定时器2使能位死区定时器1使能位死区定时器预定标因子,EvaRegs.DBTCONA.bit.DBTEvaRegs.DBTCONA.bit.EDBT3EvaRegs.DBTCONA.bit.EDBT2EvaRegs.DBTCONA.bit.EDBT1EvaRegs.DBTCONA.bit.DBTPS,直接对下列寄存器赋值即可完成寄存器操作,具体各位的含义请参见手册的表格,捕获单元结构特征,用于捕获输入引脚上的跳变,五、使用C语言设置捕获单元,EVA/B中的每个捕获单元均具有1个16位的捕获控制寄存器CAPCONA/B1个16位的捕获FIFO状态寄存器CAPFIFOA/B1个16位2级深的FIFO堆栈和1个施密特触发的捕获输入引脚CAPx(所有的输入引脚都由CPU时钟同步,为了捕获到输入跳变信号,输入的当前电平必须保持两个CPU时钟周期。)输入引脚CAP1/2,CAP3/4也可用作QEP电路的输入引脚,通用定时器1和2(EVA),通用定时器3和4(EVB)可选择作为捕获单元时基EVA模块的CAP1/2必须共用一个定时器(1或2),CAP3单独使用一个定时器(2或1);EVB模块的CAP3/4必须共用一个定时器(3或4),CAP6单独使用一个定时器(4或3)。,捕获单元控制寄存器,R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0,R/W-0R/W-0R/W-0R/W-0,捕获单元复位捕获单元1和2使能捕获单元3使能捕获单元3选择定时器捕获单元1和2选择定时器捕获单元3事件启动ADC捕获单元1边沿检测控制位捕获单元2边沿检测控制位捕获单元3边沿检测控制位,EvaRegs.CAPCON.bit.CAPRESEvaRegs.CAPCON.bit.CAP12ENEvaRegs.CAPCON.bit.CAP3ENEvaRegs.CAPCON.bit.CAP3TSELEvaRegs.CAPCON.bit.CAP12TSELEvaRegs.CAPCON.bit.CAP3TOADCEvaRegs.CAPCON.bit.CAP1EDGEEvaRegs.CAPCON.bit.CAP2EDGEEvaRegs.CAPCON.bit.CAP3EDGE,直接对下列寄存器赋值即可完成寄存器操作,具体各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家政服务公司员工培训体系工作方案
- 危机公关社交媒体应对策略方案
- 校园招聘宣讲活动策划方案
- 2024年资料员之资料员基础知识能力检测试卷及答案详解【真题汇编】
- 2024年自考专业(计算机信息管理)考前冲刺测试卷【含答案详解】
- 执业药师资格证之《西药学专业二》题库(得分题)打印含答案详解(综合题)
- 2025年自考专业(护理)考试彩蛋押题(综合题)附答案详解
- 2025年自考专业(工商企业管理)复习提分资料及参考答案详解(基础题)
- 2025土木工程建筑施工试题预测试卷及参考答案详解(B卷)
- 2025年注册核安全工程师考试历年机考真题集附参考答案详解【预热题】
- 2025年北京市单位劳动合同样本
- 5.2 轴对称(课件)数学苏教版三年级上册(新教材)
- 广播稿的写法课件
- 保密法课件教学课件
- 十八项核心医疗制度试题(附答案)
- 网络安全知识竞赛试题及答案
- 煤矿作业规程编制课件
- DB11∕T 1135-2024 供热系统有限空间作业安全技术规程
- 健康养老专业毕业论文
- 2025四川乐山市市中区国有企业招聘员工47人笔试参考题库附答案解析
- 新版部编人教版三年级上册语文全册1-8单元教材分析
评论
0/150
提交评论