浙江大学微机原理(DSP)考试必背(知识点及基本程序部分)_第1页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分)_第2页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分)_第3页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分)_第4页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 系统控制与中断+老师复习时专讲的中断内容1、 【强记】void InitSysCtrl( )void InitSysCtrl() EALLOW;WDCR=0x0068; /屏蔽WatchDogPLLCR=0xA; /锁相环设为10/2=5倍频(使系统时钟30MHz*5=150MHz) /PLLCR可设0x00xA,其中0x0和0x1等效,均为1/2=0.5倍频for(i= 0; i< ( (131072/2)/12 ); i+) ;HISPCP=1; / HISPCLK=SYSCLK/HISPCP*2,从而有75MHzLOSPCP=2; / LOSPCLK=SYSCLK/LOSP

2、CP*2,从而有37.5MHzPCLKCR=0x0D0B; /写1开启部分外设,这里开启了SCIA/B,SPI,ADC,EVA/B /0000 1101 0000 1011EDIS;2、 解释WatchDog(看门狗)工作原理(记住位域名称与功能)片内振荡器时钟OSCCLK经过分频后进入8位看门狗计数器,当计数器上溢,则可输出中断或复位信号。当看门狗使能,若系统正常运行,则需用户周期性地在看门狗计数器上溢前向复位寄存器WDKEY写入0x55+0xAA来清零计数器,若程序受干扰而跑飞,则看门狗的中断或复位信号可使系统恢复至正常状态,提高系统稳定性与可靠性。 补充涉及寄存器:系统控制和状态寄存器S

3、CSR:WDENINT指定看门狗输出复位信号还是中断信号;WDOVERRIDE指定是否允许用户修改控制寄存器WDCR的WDDIS位;计数寄存器WDCNTR:低8位连续加计数,可由复位寄存器WDKEY立即清零;复位寄存器WDKEY:连续写入0x55+0xAA可清零计数寄存器WDCNTR,写入其它序列则立即触发看门狗复位事件。读该寄存器返回控制寄存器WDCR值;控制寄存器WDCR:WDFLAG为看门狗复位状态标志位,若复位事件由看门狗触发则置1,用户写1清零;WDDIS写1使能,写0屏蔽看门狗;WDCHK必须写101才能写WDCR寄存器;WDPS为看门狗计数器时钟相对于OSCCLK/512的分频系

4、数。3、 解释PLL(锁相环)工作原理 PLL负责把片内振荡器时钟或外部时钟经过倍频转化为系统时钟SYSCLKOUT。 当引脚XF_XPLLDIS为低电平: PLL被禁止,系统时钟直接引用外部时钟源。当引脚XF_XPLLDIS为高电平: 若PLLCR为0,则PLL被旁路,片内振荡器时钟OSCCLK被二分频;若PLLCR为n(n=0x10xA),则PLL使能,OSCCLK被(n/2)倍频。4、 【强记】为了使CPU定时器工作在指定频率,应如何设置void InitSysCtrl();void InitCputimer(void) /定时器初始化,中断周期为1ms(1kHz)EALLOW; TIM

5、ER0TPR=149;/CPU定时器分频寄存器,150MHz/(149+1)=1MHz的计时器时钟 TIMER0TPRH=0;/CPU定时器分频寄存器的高位置0 TIMER0PRD=(long)999;/设置CPU定时器周期寄存器,1MHz/(999+1)=1kHzTIMER0TCR=0xF000;/CPU定时器0的启动与清除中断标志都是这句。EDIS;5、 解释CPU定时器工作原理系统时钟进入CPU定时器后,16位预定标计数器PSCH:PSC会连续减计数,当经过(TDDRH:TDDR+1)个SYSCLKOUT周期后下溢,预定标计数器重装TDDRH:TDDR值,并使计数寄存器TIMH:TIM减

6、1。当计数寄存器TIMH:TIM下溢,则重装PRDH:PRD值,并输出定时器中断信号。补充涉及寄存器:TPRH:TPR:高8位组合成共16位的PSCH:PSC,为预定标计数器;低8位组合成共16位的TDDRH:TDDR,为分频寄存器,储存预定标计数器的周期;TIMH:TIM:计数寄存器,下溢时输出中断信号;PRDH:PRD:周期寄存器,储存计数寄存器的周期;TCR:控制寄存器,含中断标志位、中断使能位、定时器重载控制位、定时器使能/停止位。启动与清除中断标志都是这句:TIMER0TCR=0xF000;6、 PIE工作原理PIE共有12组(m=112),每组控制8个中断(n=18),因此共控制9

7、6个外设中断。要使外设的中断请求INTm.n被送入CPU,必先清零PIE标志位PIEIFRm(全部n=18都需清零),置一PIE使能位PIEIFRm.n,再向应答标志位PIEACKm写1清零。当外设中断请求到来,相应PIE标志位和应答标志位都会置1。当CPU转向中断服务函数,会自动清除PIE标志位PIEm.n,但还需用户软件向PIE应答标志位PIEACKm写1清零,并清零外设中断标志位。7、 CPU级中断寄存器的原理CPU级中断INTm共有14个(m=114),其中前12个被PIE复用。要使中断请求INTm被送入CPU,必先清零标志位IFR,置一使能位IFR,并使能全局中断控制位INTM(使能

8、调用语句:asm(“ EINT”);屏蔽调用语句:asm(“ DINT”);)。当中断请求到来,相应标志位IFR置一。当CPU转向中断服务函数,会自动清除标志位IFR。8、 中断向量表工作原理当中断请求到达CPU后,CPU会保存现场,并自动清除相应的CPU中断标志位和PIE中断标志位,再根据中断的来源按照优先级读取中断向量表的相应地址中存放的中断服务函数ISR地址,并跳转至该ISR。ISR执行完毕后,CPU回到原现场继续执行。对于中断向量INT_m_n(m=112,n=18),中断向量地址计算:PIE_VECT_m_n=0x0D40+2*8*(m-1)+(n-1)(0x0D40为INT1.1即

9、第一组第一个中断向量的地址,每个地址长度为0x0002,以此类推,INT1.2地址为0x0D42,INT1.3地址为0x0D44)补充老师考以下中断编程,其中断向量地址如下(但老师可能故意考上面的公式):CPU定时器0的中断:(INT_1_7) TINT0:0x0D4CEVA的通用定时器1、2的周期中断:(INT_2_4) T1PINT:0x0D56(INT_3_1) T2PINT:0x0D60EVB的通用定时器3、4的周期中断:(INT_4_4) T3PINT:0x0D76(INT_5_1) T4PINT:0x0D809、 中断向量表的赋值写代码时严格执行这三句话:(在所有函数外)typed

10、ef interrupt void(*PINT) (void);(在所有函数外)interrupt void INT_m_n(void);(在main函数内)(*(PINT*)PIE_VECT_m_n) = & INT_m_n;其它赋值方式(写代码时不用):(在所有函数外)interrupt void INT_m_n(void);(在main函数内)InitPIE;(在main函数内)PieVectTable.TINT0=& INT_m_n;10、 【强记】CPU定时器0中断程序,并使能PIE级与CPU级中断void InitSysCtrl(void) EALLOW;WDCR=

11、0x0068; PLLCR=0xA;/锁相环设为10/2=5倍频(使系统时钟30MHz*5=150MHz)for(i= 0; i< ( (131072/2)/12 ); i+) ;HISPCP=1; LOSPCP=2; EDIS;void InitCputimer0(void)EALLOW; TIMER0TPR=149;/产生150MHz/(149+1)=1MHz的计时器时钟 TIMER0TPRH=0;/CPU定时器0预定标计数器的高位部分(置0) TIMER0PRD=(long)999;/设置CPU定时器0中断周期,即1MHz/1000=1kHz TIMER0TCR=0xF000;ED

12、IS;void InitGpioF(void)typedef interrupt void(*PINT)(void);interrupt void INT_1_7(void);/CPU定时器0void main(void)InitSysCtrl();InitCputimer0();/CPU定时器0初始化,它确定了中断周期为1ms(1kHz)InitGpioF();/GPIOF初始化EALLOW;PIEIFR1=0x0000; PIEIER1=0x0040; PIECTRL=0x1; /使能PIEPIEACK =0x1; (* (PINT *) 0x0D4C) = & INT_1_7;a

13、sm(" and IFR,#00H");asm(" or IER,#01H");asm(" EINT");LPMCR0=0x0; /设置低功耗模式为idle模式EDIS;for(;)asm(" IDLE");interrupt void INT_1_7(void) PIEACK=0x1; TIMER0TCR=0xF000;11、 【强记】T1定时器的中断程序(以T1PINT中断为例),并使能PIE级与CPU级中断void InitSysCtrl(void) EALLOW;WDCR=0x0068; PLLCR=0xA

14、;/锁相环设为10/2=5倍频(使系统时钟30MHz*5=150MHz)for(i= 0; i< ( (131072/2)/12 ); i+) ;HISPCP=1; LOSPCP=2; EDIS;void InitEV(void)/初始化EV EALLOW; T1CON=0x1748;/T1连续增,时钟HSPCLK被128分频,使能T1,使用内部时钟源,禁止比较操作 /* 如此,TICON=0001 0 111 01 00 1000,具体为: TMODE1-TMODE0=10,使T1为连续增计数模式; TPS2-TPS0=111,使外设高速时钟HSPCLK被128分频(27=128),使

15、T1计时时钟频率为HSPCLK/128; TENABLE=1,使能本定时器T1; TCLKS1-TCLKS0=00,T1时钟源设为内部时钟,即HSPCLK(另外,上已设定它要被128分频才用作T1时钟); TECMPR=0,禁止本定时器的比较操作; */ T1PR=586;/T1的周期寄存器赋值586 EVAIMRA=0x0080; /使能T1PINT /* 如此,EVAIMRA=0000 0000 1000 0000,从而使能T1PINT */ EVAIFRA=0xFFFF;/EVA中各中断标志写1清0 EDIS;void InitIO(void)typedef interrupt void

16、(*PINT)(void);interrupt void eva_T1PINT_isr(void);/声明了通用定时器1的周期匹配中断void main(void) InitSysCtrl(); InitIO();/初始化引脚 InitEV();/初始化EV EALLOW; PIEIFR1=0x0000; PIEIER1=0x0040; PIECTRL=0x1; /使能PIE PIEACK =0x2; (* (PINT *) 0x0D56)= & INT_2_4; asm(" and IFR,#00H"); asm(" or IER,#02H")

17、;/使能CPU级第2组中断通道 asm(" EINT"); LPMCR0=0;/低功耗模式为idle EDIS; for(;) asm(" IDLE");interrupt void eva_T1PINT_isr(void)/T1周期中断服务函数 EVAIFRA=0xFFFF; /EVA中相应中断标志清零 PIEACK=0x02;/PIE第2组中断通道的应答标志写1清0关于TnPINT替换的说明:T1PINT T1CON T1PR EVAIMRA=0x0080 EVAIFRA=0xFFFF 0x0D56INT_2_402H PIEIFR2=0x0000

18、PIEIER2=0x0008 PIEACK=0x02T2PINT T2CON T2PR EVAIMRB=0x0001 EVAIFRB=0xFFFF 0x0D60INT_3_104H PIEIFR3=0x0000 PIEIER3=0x0001 PIEACK=0x04T3PINT T3CON T3PR EVBIMRA=0x0080 EVBIFRA=0xFFFF 0x0D76INT_4_408H PIEIFR4=0x0000 PIEIER4=0x0008 PIEACK=0x08T4PINT T4CON T4PR EVBIMRB=0x0001 EVBIFRB=0xFFFF 0x0D80INT_5_11

19、0H PIEIFR5=0x0000 PIEIER5=0x0001 PIEACK=0x10第五章SPI(串行外设接口)1、 列举SPI模块的输入输出信号(有哪几根线)SPI有四个外部引脚:SPISOMI主输入从输出引脚;SPISIMO主输出从输入引脚;SPICLK串行时钟引脚,由主设备输出至从设备;,发送使能引脚。2、 解释SPI工作原理(包括波形)SPI接口有两种操作模式:主控制器模式和从控制器模式,其中主控制器发送串行时钟给从控制器,实现两个控制器同时发送和接收数据。SPI接口有三种数据传送模式:全双工模式:主从均发送数据;半双工模式:主发送,从接收或主接收,从发送。主控制器模式:左对齐地写

20、数据到寄存器SPIDAT或SPITXBUF,则自动地启动了SPISIMO引脚从数据高位开始发送(咦?不用管SPICLK吗?)。接收到的数据则右对齐地储存在SPIRXBUF中。当SPIDAT数据送出后,SPITXBUF数据会自动装载到SPIDAT发送。所有数据发送完毕,SPICLK串行时钟会自动停止,并且在中断使能的前提下产生中断请求。从控制器模式:数据从SPISOMI移出,从SPISIMO移入,串行时钟由主控制器提供。当设备收到SPICLK串行时钟有效边,则将已写入SPIDAT或SPITXBUF的数据从高位依次发送,而收到的数据存储在SPIRXBUF中。如果在SPI发送数据期间突然清零数据发送

21、使能TALK位,SPI也要完成当前数据发送才停止。另外,当主控制器接多个从控制器时,任意时刻最多选通一个从控制器向主控制器发送数据。波形:SPI模块由两个时钟控制位配置SPICLK时钟模式。其中时钟极性选择位设定时钟上升沿或下降沿有效,而时钟相位选择位设定时钟是否延时半周期。总是先发送,后接收。上升沿,无延迟:上升沿发送,下降沿接收;上升沿,有延迟:上升沿前半周期发送,上升沿接收;下降沿,无延迟:下降沿发送,上升沿接收;下降沿,有延迟:下降沿前半周期发送,下降沿接收。3、 【计算】波特率当波特率寄存器SPIBRR=02,SPICLK=LSOCLK/4;当波特率寄存器SPIBRR=3127,SP

22、ICLK=LSPCLK/(SPIBRR+1),所以SPIBRR=03都是一样的。4、 涉及寄存器的功能表配置控制寄存器SPICCR:复位控制、时钟极性、字符长度控制(0000:1位1111:16位);操作控制寄存器SPICTL:使能超时中断(接收溢出中断)、时钟相位、主从模式、使能发送、使能SPI中断(接收/发送中断);状态寄存器SPISTS:接收溢出标志、SPI中断标志、发送缓冲器满标志;波特率设置寄存器:SPIBRR;发送缓冲寄存器SPITXBUF:写数据则立即触发发送(咦?不用管SPICLK吗?),左对齐。接收缓存寄存器SPIRXBUF:SPI接收到完整字符后数据装入本寄存器,右对齐。串

23、行数据寄存器SPIDAT:若使能发送,则本寄存器数据将被发送到串行输出引脚;若处于主控制器模式,则按照设定的时钟模式开始发送数据。左对齐。第七章EV事件管理器1、EVA/B时钟源:1)高速外设时钟;2)外部输入时钟(不超过内部时钟频率的1/4);3)也可以由正交编码脉冲电路提供。输出:1、控制引脚电平;2、输出中断标志;3、启动 A/D 转换器。2、通用定时器每个EV包括两个通用定时器。CPU定时器与EV通用定时器的区别:1)CPU定时器为32位计数器,EV通用定时器为16位计数器;2)CPU定时器只有一种工作模式,即计数寄存器根据CPU时钟SYSCLKOUT递减计数,当计数器为0时,定时器中

24、断信号产生一个中断脉冲。EV通用定时器有4种计数方式,分别为:停止/保持模式,连续增减模式,连续增模式,定向增减模式。通用定时器的作用:1)用作通用定时器,在控制系统中产生采样周期;2)为捕获单元和正交编码脉冲计数操作提供基准时钟;3)为比较单元和相应的PWM产生电路提供基准时钟。通用定时器的比较输出极性(由GPTCONA/B的TnPIN位控制):1)强制低 002)低有效 01 3)高有效 104)强制高 11通用定时器的中断:中断产生条件下溢计数器值为0x0000上溢计数器值为0Xffff比较计数寄存器的值与比较寄存器的值匹配周期计数寄存器的值与周期寄存器的值匹配通用定时器的计数模式:由定

25、时器控制寄存器TxCON中的模式选择位(TMODE1:TMODE0)决定,并由使能位TENABLE使能或禁止。计数模式TMODE1:TMODE0停止/保持模式00连续增减模式01连续增模式10定向增减模式11连续增模式的计数周期:(TxPR+1)个定标后的时钟输入周期。连续增/减模式的计数周期:(2*TxPR)个定标后的时钟输入周期。3、比较单元与PWM电路PWM:PWM信号是指周期和幅值固定,宽度可变的脉冲序列。每个EV可以同时产生8路PWM波形输出:2个通用定时器各独立1路;3个全比较器各一对(2路互补)。用EV产生非对称PWM波形:通用定时器1设置为连续增计数模式,其周期寄存器装入PWM

26、载波周期值;占空比为TxCMPR/(TxPR+1)。用EV产生对称PWM波形:通用定时器1设置为连续增/减计数模式,其周期寄存器装入PWM载波周期值;占空比为TxCMPR/TxPR。4、捕获单元:两个EV共有6个捕获单元,每个捕获单元有一个对应的捕获输入引脚,通过捕获单元能够捕获这些输入引脚上的电平跳变并记录跳变时刻。每个捕获单元有1个2级深度的16位FIFO堆栈。跳变检测方式:1)上升沿2)下降沿3)上升沿和下降沿5、正交编码作用:用于角度位置判断、可以判断正、反。工作于连续增减方式;方向由QEP 控制。捕获单元和QEP电路的引脚是复用的。6、EV中断编程实例:利用事件管理器GP定时器1在G

27、PIOF8-13引脚上依次产生信号1,周期为0.2s,采用连续增计数。要求系统时钟150MHz,高速外设时钟25MHz,128分频。typedef interrupt void(*PINT)(void);interrupt void INT_2_4(void);int k;void main(void)asm( "EALLOW");asm( "DINT");PLLCR=0xA;WDCR=0x68;GPFMUX=0xc0ff;GPFDIR=0x3f00;HISPCP=0x0003;/高速时钟预定标(150MHz/3*2)PIEIFR2=0x0000;PIEIER2=0x0008;/INT_2_4使能PIECTRL=0x1;PIEACK=0xff;GPTCONA=0x0000;/初始化EVAT1CON=0x1740;/连续增计数,128分频,打开定时器,128分频后定时器周期为5.12us。连续增/减计数也要求掌握,我就不写了T1CNT=0x0000;T1PR=0x9895;/定时周期5.12us*(T1PR+1

温馨提示

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

评论

0/150

提交评论