开始程序,从main()开始运行
Step1:执行语句InitSysCtrl();
初始化系统控制模块:包括PLL, WatchDog, enable Peripheral Control. 这些模块的初始化在DSP281x_SysCtrl.c文件中。
让我们来看看这个初始化系统函数的内容,看看它具体是怎么实现的。
void InitSysCtrl(void) { DisableDog();//禁止看门狗 InitPll(0x8);//设置系统时钟=XCLKIN*8/2 InitPeripheralClocks(); //设置外设时钟 DINT; // 关闭总中断 IER = 0x0000; // 关闭外设中断 IFR = 0x0000; // 清中断标志 InitPieCtrl(); //初始化PIE控制寄存器 InitPieVectTable(); //使能PIE向量表 }
这个函数中可以看出:
1、禁止看门狗DisableDog();
来看一下禁止看门狗的步骤(这个内容书上应该很多了,这里想要一根线式的抓住DSP编程的脉络,所以在这里赘述一下)。 先是写看门狗控制寄存器SysCtrlRegs.WDCR= 0x0068(要开EALLOW)
来看一下WDCR写0x0068的含义(建议像我一样的初学者也来边查寄存器手册边学习),WDCR是一个16位的寄存器,其中15-8位是保留的。给它写0x0068将这些位进行了设置:
WDFLAG=0:手册上说这一位是看门狗复位状态标志位。如果该位置位,表示一个看门狗复位(WDRST)产生了复位条件。如果为0,则是一个外部器件加电复位条件。
WDDIS=1:使看门狗模块无效。
WDCHK(位5-3)=101:只能写101,写其它值核立即复位。
WDPS(2-0)=000:配置看门狗计数器的时钟。写000(或001)时WDCLK=OSSCCLK/512/1。
2、接着设置系统时钟InitPll(0x8);
同样来看一下设置系统时钟的步骤(这个函数带一个参数)。
让我把这个函数帖在这里
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 void InitPll(Uint16 val) 2 { 3 volatile Uint16 iVol; 4 5 if (SysCtrlRegs.PLLCR.bit.DIV !=