收藏 分享(赏)

浙江大学微机原理(DSP)考试必背(知识点及基本程序部分).doc

上传人:精品资料 文档编号:10536051 上传时间:2019-11-26 格式:DOC 页数:10 大小:66KB
下载 相关 举报
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分).doc_第1页
第1页 / 共10页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分).doc_第2页
第2页 / 共10页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分).doc_第3页
第3页 / 共10页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分).doc_第4页
第4页 / 共10页
浙江大学微机原理(DSP)考试必背(知识点及基本程序部分).doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

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=S

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

3、。补充涉及寄存器:系统控制和状态寄存器 SCSR:WDENINT 指定看门狗输出复位信号还是中断信号;WDOVERRIDE 指定是否允许用户修改控制寄存器 WDCR 的 WDDIS 位;计数寄存器 WDCNTR:低 8 位连续加计数,可由复位寄存器 WDKEY 立即清零;复位寄存器 WDKEY:连续写入 0x55+0xAA 可清零计数寄存器 WDCNTR,写入其它序列则立即触发看门狗复位事件。读该寄存器返回控制寄存器 WDCR 值;控制寄存器 WDCR:WDFLAG 为看门狗复位状态标志位,若复位事件由看门狗触发则置 1,用户写 1 清零;WDDIS 写 1 使能,写 0 屏蔽看门狗;WDCH

4、K 必须写 101 才能写WDCR 寄存器;WDPS 为看门狗计数器时钟相对于 OSCCLK/512 的分频系数。3、解释 PLL(锁相环)工作原理PLL 负责把片内振荡器时钟或外部时钟经过倍频转化为系统时钟 SYSCLKOUT。当引脚 XF_XPLLDIS 为低电平: PLL 被禁止,系统时钟直接引用外部时钟源。当引脚 XF_XPLLDIS 为高电平: 若 PLLCR 为 0,则 PLL 被旁路,片内振荡器时钟OSCCLK 被二分频;若 PLLCR 为 n(n=0x10xA) ,则 PLL 使能,OSCCLK 被(n/2 )倍频。4、 【强记】为了使 CPU 定时器工作在指定频率,应如何设置

5、void InitSysCtrl();void InitCputimer(void) /定时器初始化,中断周期为 1ms(1kHz) EALLOW; TIMER0TPR=149;/CPU 定时器分频寄存器,150MHz/(149+1)=1MHz 的计时器时钟TIMER0TPRH=0;/CPU 定时器分频寄存器的高位置 0TIMER0PRD=(long) 999;/设置 CPU 定时器周期寄存器, 1MHz/(999+1)=1kHzTIMER0TCR=0xF000;/CPU 定时器 0 的启动与清除中断标志都是这句。EDIS;5、解释 CPU 定时器工作原理系统时钟进入 CPU 定时器后,16

6、位预定标计数器 PSCH:PSC 会连续减计数,当经过(TDDRH:TDDR+1)个 SYSCLKOUT 周期后下溢,预定标计数器重装 TDDRH:TDDR 值,并使计数寄存器 TIMH:TIM 减 1。当计数寄存器 TIMH:TIM 下溢,则重装 PRDH:PRD 值,并输出定时器中断信号。补充涉及寄存器:TPRH:TPR:高 8 位组合成共 16 位的 PSCH:PSC,为预定标计数器;低 8 位组合成共16 位的 TDDRH:TDDR,为分频寄存器,储存预定标计数器的周期;TIMH:TIM:计数寄存器,下溢时输出中断信号;PRDH:PRD:周期寄存器,储存计数寄存器的周期;TCR:控制寄

7、存器,含中断标志位、中断使能位、定时器重载控制位、定时器使能/ 停止位。启动与清除中断标志都是这句:TIMER0TCR=0xF000;6、PIE 工作原理PIE 共有 12 组(m=112 ) ,每组控制 8 个中断(n=18 ) ,因此共控制 96 个外设中断。要使外设的中断请求 INTm.n 被送入 CPU,必先清零 PIE 标志位 PIEIFRm(全部 n=18 都需清零) ,置一 PIE 使能位 PIEIFRm.n,再向应答标志位 PIEACKm 写 1 清零。当外设中断请求到来,相应 PIE 标志位和应答标志位都会置 1。当 CPU 转向中断服务函数,会自动清除 PIE 标志位 PI

8、Em.n,但还需用户软件向 PIE 应答标志位 PIEACKm 写 1 清零,并清零外设中断标志位。7、CPU 级中断寄存器的原理CPU 级中断 INTm 共有 14 个(m=114) ,其中前 12 个被 PIE 复用。要使中断请求INTm 被送入 CPU,必先清零标志位 IFR,置一使能位 IFR,并使能全局中断控制位INTM(使能调用语句:asm(“ EINT”);屏蔽调用语句: asm(“ DINT”);) 。当中断请求到来,相应标志位 IFR 置一。当 CPU 转向中断服务函数,会自动清除标志位 IFR。8、中断向量表工作原理当中断请求到达 CPU 后,CPU 会保存现场,并自动清除

9、相应的 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 即第一组第一个中断向量的地址,每个地址长度为 0x0002,以此类推,INT1.2 地址为 0x0D42, INT1.3 地址为 0x0D44)补充老师考以下中断编程,其中断向量地址如下(但老师可能故意考上面的公式)

10、: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、中断向量表的赋值写代码时严格执行这三句话:(在所有函数外)typedef interrupt void(*PINT) (void);(在所有函数外)interrupt void INT_m_n(void);(在 main 函数内) (*(PINT*)

11、PIE_VECT_m_n) = WDCR=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 中断周期,即 1MH

12、z/1000=1kHzTIMER0TCR=0xF000;EDIS;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 =0x

13、1; (* (PINT *) 0x0D4C) = asm(“ 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=000 1 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 的周期寄存器赋值 586EVAIMRA=0x0080; /使能 T1PINT/*如此,EVAIMRA=0000 0000 1000 0000,从而使能 T1PINT*/EVAIFRA=0xFFFF;/EVA 中各中断标志写 1 清 0EDIS;void InitIO(void) typedef inte

16、rrupt void(*PINT)(void);interrupt void eva_T1PINT_isr(void);/声明了通用定时器 1 的周期匹配中断void main(void) InitSysCtrl();InitIO();/初始化引脚InitEV();/初始化 EVEALLOW;PIEIFR1=0x0000; PIEIER1=0x0040; PIECTRL=0x1; /使能 PIEPIEACK =0x2; (* (PINT *) 0x0D56)= asm(“ and IFR,#00H“);asm(“ or IER,#02H“);/使能 CPU 级第 2 组中断通道asm(“ EI

17、NT“);LPMCR0=0;/低功耗模式为 idleEDIS;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 0x0D56 INT_2_4 02H PIEIFR2=0x0000 PIEIER2=0x0008 PIEACK=0x02T2PINT T

18、2CON T2PR EVAIMRB=0x0001 EVAIFRB=0xFFFF 0x0D60 INT_3_1 04H PIEIFR3=0x0000 PIEIER3=0x0001 PIEACK=0x04T3PINT T3CON T3PR EVBIMRA=0x0080 EVBIFRA=0xFFFF 0x0D76 INT_4_4 08H PIEIFR4=0x0000 PIEIER4=0x0008 PIEACK=0x08T4PINT T4CON T4PR EVBIMRB=0x0001 EVBIFRB=0xFFFF 0x0D80 INT_5_1 10H PIEIFR5=0x0000 PIEIER5=0x

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

20、或 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

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

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

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

25、溢 计数器值为 0x0000上溢 计数器值为 0Xffff比较 计数寄存器的值与比较寄存器的值匹配周期 计数寄存器的值与周期寄存器的值匹配通用定时器的计数模式:由定时器控制寄存器 TxCON 中的模式选择位(TMODE1:TMODE0)决定,并由使能位 TENABLE 使能或禁止。计数模式 TMODE1:TMODE0停止/保持模式 00连续增减模式 01连续增模式 10定向增减模式 11连续增模式的计数周期:(TxPR+1 )个定标后的时钟输入周期。连续增/减模式的计数周期: (2*TxPR )个定标后的时钟输入周期。3、比较单元与 PWM 电路PWM:PWM 信号是指周期和幅值固定,宽度可变

26、的脉冲序列。每个 EV 可以同时产生 8 路 PWM 波形输出:2 个通用定时器各独立 1 路;3 个全比较器各一对(2 路互补) 。用 EV 产生非对称 PWM 波形:通用定时器 1 设置为连续增计数模式,其周期寄存器装入 PWM 载波周期值;占空比为 TxCMPR/(TxPR+1) 。用 EV 产生对称 PWM 波形:通用定时器 1 设置为连续增/减计数模式,其周期寄存器装入 PWM 载波周期值;占空比为 TxCMPR/TxPR。4、捕获单元:两个 EV 共有 6 个捕获单元,每个捕获单元有一个对应的捕获输入引脚,通过捕获单元能够捕获这些输入引脚上的电平跳变并记录跳变时刻。每个捕获单元有

27、1 个 2 级深度的16 位 FIFO 堆栈。跳变检测方式:1)上升沿2)下降沿3)上升沿和下降沿5、正交编码作用:用于角度位置判断、可以判断正、反。工作于连续增减方式;方向由 QEP 控制。捕获单元和 QEP 电路的引脚是复用的。6、EV 中断编程实例:利用事件管理器 GP 定时器 1 在 GPIOF8-13 引脚上依次产生信号 1,周期为 0.2s,采用连续增计数。要求系统时钟 150MHz,高速外设时钟 25MHz,128 分频。typedef interrupt void(*PINT)(void);interrupt void INT_2_4(void);int k;void main

28、(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

29、;/定时周期 5.12us*(T1PR+1)=0.2s(*(PINT*)0x0D56)=EVAIERA=0x0080;/使能定时器 1 的周期中断EVAIFRA=0x0080;/写 1 清除定时器 1 的周期中断标志asm(“ and IFR, #00H“);asm(“ or IER, #02H“);asm(“ EINT“);asm(“ EDIS“);for(;);interrupt void INT_2_4(void)k+=1;switch(k)case 1:GPFDAT=0x01ff;break;case 2:GPFDAT=0x02ff;break;case 3:GPFDAT=0x04ff

30、;break;case 4:GPFDAT=0x08ff;break;case 5:GPFDAT=0x10ff;break;case 6:GPFDAT=0x20ff;k=0;break;EVAIMRA=0x0080;EVAIFRA=0x0080;PIEACK=0xff;第 8 章 A/D(模/数)转换模块1、解释 ADC 工作原理(基准电压、输出位数、A/D 换算、启动过程、结果保存)基准电压:可以选择使用内部基准电路,也可以使用外部基准源(2V,1V 分别引到引脚 ADCEFP、ADCEFM ) 。输出位数:12 位,ADCLO3V,一般设 ADCLO=0V。A/D 换算:数字值(已右移 4

31、位)=4095*( 模拟电压值-ADCLO)/3。从结果寄存器读取的数值要右移 4 位(高位补 0)才是数字值,同理,由模拟电压值换算出的数字指要左移4 位(低位补 0)才是结果寄存器值。启动过程:(1)设定采样窗口大小、排序器工作方式(双排序器/级联排序器、顺序采样/ 同步采样、连续排序模式 /启动-停止模式) 、每次转换通道数目、转换通道;(2)转换模式、触发方式、中断使能、排序器复位;(3)时钟分频、电源控制。结果保存:结果依次保存在结果寄存器 ADCRESULT015,所储存的结果均需右移 4位才是数字值。2、输入的模拟电压超过标准电压时,会发生什么情况?输出 111,即 3V.当输入电压过高时,则模块烧坏。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报