1.前言
在上一节中,我们进行了系统初始化,对时钟源进行分频倍频得到所需的系统时钟。但我漏了重点,在配置前需要包含系统级头文件#include "DSP28x_Project.h",可以把它理解成芯片数据包,封装好了外设及系统的寄存器。
这一节我们进行系统配置的最后一个环节,GPIO及中断初始化配置。
2.Initialize GPIO
通常我们的DSP28335是作为一个电子电路系统的主控芯片,其外围挂载了很多器件或电路。在用户程序开始工作前,通常我们需要将IO口初始化成已知电位,且可根据电路情况进行调整。
上图是TI官方的例程示范,根据需要调整GPIO初始化函数中的相关配置,达到初始化的目的。
3.PIE中断控制器、IE初始化
这一环节的作用是为了避免我们后续初始化中断向量表后直接有中断产生的情况(意思就是我们的用户程序还没运行就有未知的中断发生,显然不是我们预期的结果)。
首先关闭所有中断。
然后初始化中断控制寄存器。
28335有12组中断控制寄存器,一一对应着IE的12个中断。
禁止CPU中断,清除CPU中断标志位。
在这里很多人可能会有疑问,这个PIE与IE到底是什么,怎么都要初始化?其实,CPU一次只能执行一个中断,当我们同时打开多个中断并都产生中断标志时,我们就需要对其进行管理,而PIE是中断的控制器,能够依据用户设置对中断进行管理。
上图非常清晰地体现了PIE与IE的关系。
4.初始化PIE向量表
PIE可管理96个中断,那么这96个中断的中断服务函数的入口地址我们需要进行指定,PIE中断向量表存储相对应中断服务函数的入口地址。在某个中断服务函数需要运行时PIE将查询中断向量表,并将表中入口地址赋予CPU中断执行。
上图是PIE管理的中断类型及其向量表偏移地址。
上图是PIE部分组的中断向量地址。
一般调用InitPieVectTable()函数将中断服务函数入口地址存入中断向量表中对应位置。在后续的用户程序中,我们可以灵活的修改默认的中断服务函数,但是要重新刷新入口地址(后续用到时详细说明)。
5.用户代码
系统初始化在这里已经全部完成,接下来就是用户代码。
我们根据工程需要初始化相关外设,编写用户程序实现相关功能。然后就到了自由发挥的大舞台喽!
截止到目前为止,DSP28335的工程创建、系统初始化配置都已经完成了,接下来我们将开始系统模块和常用外设的学习。
全部0条评论
快来发表一下你的评论吧 !