浙江大学微机原理(DSP)考试必背(知识点及基本程序部分)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章系统控制与中断+老师复习时专讲的中断内容
1、【强记】void InitSysCtrl( )
void InitSysCtrl()
{ EALLOW;
WDCR=0x0068; //屏蔽WatchDog
PLLCR=0xA; //锁相环设为10/2=5倍频(使系统时钟30MHz*5=150MHz)
//PLLCR可设0x0~0xA,其中0x0和0x1等效,均为1/2=0.5倍频for(i= 0; i< ( (131072/2)/12 ); i++) {;}
HISPCP=1; // HISPCLK=SYSCLK/HISPCP*2,从而有75MHz
LOSPCP=2; // LOSPCLK=SYSCLK/LOSPCP*2,从而有37.5MHz
PCLKCR=0x0D0B; //写1开启部分外设,这里开启了SCIA/B,SPI,ADC,EV A/B
//0000 1101 0000 1011
EDIS;
}
2、解释WatchDog(看门狗)工作原理(记住位域名称与功能)
片内振荡器时钟OSCCLK经过分频后进入8位看门狗计数器,当计数器上溢,则可输出中断或复位信号。当看门狗使能,若系统正常运行,则需用户周期性地在看门狗计数器上溢前向复位寄存器WDKEY写入0x55+0xAA来清零计数器,若程序受干扰而跑飞,则看门狗的中断或复位信号可使系统恢复至正常状态,提高系统稳定性与可靠性。
补充——涉及寄存器:
系统控制和状态寄存器SCSR: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的分频系数。
3、解释PLL(锁相环)工作原理
PLL负责把片内振荡器时钟或外部时钟经过倍频转化为系统时钟SYSCLKOUT。
当引脚XF_XPLLDIS为低电平:PLL被禁止,系统时钟直接引用外部时钟源。
当引脚XF_XPLLDIS为高电平:若PLLCR为0,则PLL被旁路,片内振荡器时钟OSCCLK被二分频;若PLLCR为n(n=0x1~0xA),则PLL使能,OSCCLK被(n/2)倍频。
4、【强记】为了使CPU定时器工作在指定频率,应如何设置
void InitSysCtrl();
void InitCputimer(void) //定时器初始化,中断周期为1ms(1kHz)
{ EALLOW;
TIMER0TPR=149;//CPU定时器分频寄存器,150MHz/(149+1)=1MHz的计时器时钟TIMER0TPRH=0;//CPU定时器分频寄存器的高位置0
TIMER0PRD=(long)999;//设置CPU定时器周期寄存器,1MHz/(999+1)=1kHz
TIMER0TCR=0xF000;//CPU定时器0的启动与清除中断标志都是这句。
EDIS;
}
5、解释CPU定时器工作原理
系统时钟进入CPU定时器后,16位预定标计数器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:控制寄存器,含中断标志位、中断使能位、定时器重载控制位、定时器使能/停止位。启动与清除中断标志都是这句:TIMER0TCR=0xF000;
6、PIE工作原理
PIE共有12组(m=1~12),每组控制8个中断(n=1~8),因此共控制96个外设中断。要使外设的中断请求INTm.n被送入CPU,必先清零PIE标志位PIEIFRm(全部n=1~8都需清零),置一PIE使能位PIEIFRm.n,再向应答标志位PIEACKm写1清零。当外设中断请求到来,相应PIE标志位和应答标志位都会置1。当CPU转向中断服务函数,会自动清除PIE标志位PIEm.n,但还需用户软件向PIE应答标志位PIEACKm写1清零,并清零外设中断标志位。
7、CPU级中断寄存器的原理
CPU级中断INTm共有14个(m=1~14),其中前12个被PIE复用。要使中断请求INTm 被送入CPU,必先清零标志位IFR,置一使能位IFR,并使能全局中断控制位INTM(使能调用语句:asm(“EINT”);屏蔽调用语句:asm(“DINT”);)。当中断请求到来,相应标志位IFR置一。当CPU转向中断服务函数,会自动清除标志位IFR。
8、中断向量表工作原理
当中断请求到达CPU后,CPU会保存现场,并自动清除相应的CPU中断标志位和PIE 中断标志位,再根据中断的来源按照优先级读取中断向量表的相应地址中存放的中断服务函数ISR地址,并跳转至该ISR。ISR执行完毕后,CPU回到原现场继续执行。
对于中断向量INT_m_n(m=1~12,n=1~8),中断向量地址计算:
PIE_VECT_m_n=0x0D40+2*[8*(m-1)+(n-1)]
(0x0D40为INT1.1即第一组第一个中断向量的地址,每个地址长度为0x0002,以此类推,INT1.2地址为0x0D42,INT1.3地址为0x0D44……)
补充——老师考以下中断编程,其中断向量地址如下(但老师可能故意考上面的公式):CPU定时器0的中断:
(INT_1_7) TINT0:0x0D4C
EV A的通用定时器1、2的周期中断:
(INT_2_4) T1PINT:0x0D56 (INT_3_1) T2PINT:0x0D60