DSP28335 IO口寄存器

DSP28335 GPIO模块
DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87)
对GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器、数据寄存器、中断寄存器。
1、控制寄存器

  GPxCTRL;    // GPIO x Control Register (GPIO0 to 31)
              //设置采样窗周期T=2*GPXCTRL*Tsysclk;
  GPxQSEL1;   // GPIO x Qualifier Select 1 Register (GPIO0 to 15)(32-47)
             
  GPxQSEL2;   // GPIO x Qualifier Select 2 Register (GPIO16 to 31)(48-63)
              //每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样
  GPxMUX1;    // GPIO x Mux 1 Register (GPIO0 to 15)(32-47)(64-79)

  GPxMUX2;    // GPIO x Mux 2 Register (GPIO16 to 31)(48-63)(80-95)
              //配置各个引脚的功能,0:I/O功能,1:外设功能。
  GPxDIR;     // GPIO x Direction Register (GPIO0 to 31)(32-63)(64-95)
              //配置每个引脚是输入还是输出,0:数字量输入;1:数字量输出。
  GPxPUD;     // GPIO x Pull Up Disable Register (GPIO0 to 31)(32-63)(64-95)
              //使能或禁止jie口的内部上拉
2、数据寄存器
  GPxDAT;     // GPIO Data Register (GPIO0 to 31)(32-63)(64-95)

  GPxSET;     // GPIO Data Set Register (GPIO0 to 31)(32-63)(64-95)

  GPxCLEAR;   // GPIO Data Clear Register (GPIO0 to 31)(32-63)(64-95)

  GPxTOGGLE;  // GPIO Data Toggle Register (GPIO0 to 31)(32-63)(64-95)
3、中断寄存器
   GPIOXINT1SEL; // XINT1 GPIO Input Selection

   GPIOXINT2SEL; // XINT2 GPIO Input Selection

   GPIOXNMISEL;  // XNMI_Xint13 GPIO Input Selection

   GPIOXINT3SEL; // XINT3 GPIO Input Selection

   GPIOXINT4SEL; // XINT4 GPIO Input Selection

   GPIOXINT5SEL; // XINT5 GPIO Input Selection

   GPIOXINT6SEL; // XINT6 GPIO Input Selection

   GPIOXINT7SEL; // XINT7 GPIO Input Selection

   GPIOLPMSEL;   // Low power modes GP I/O input select
可以对GPIO0-63进行外部中断设置

拓展   :

https://blog.csdn.net/E_ROAD_BY_U/article/details/53083151?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

配置外部中断:

1.外设级中断

外设产生中断时,该中断事件相关的中断标志位(IF)置1。此时,如果该中断相应的中断使能寄存器(IE)也置为1,外设就会向PIE控制器发出一个中断请求。如果外设级中断没有被使能(相应的使能位为0),那么外设就不会向PIE发出中断请求,相应的中断标志位会一直保持置位状态,除非用软件清除。当然,在中断标志位保持在1的时候,一旦该中断被使能了,那么外设立马会向PIE发出中断申请。

注:不管在什么情况下,外设寄存器中的中断标志位必须采用软件进行清除。

2.PIE级中断

当外设产生中断事件,相关中断标志位置位,中断使能位使能之后,外设就会把中断请求提交给我们的PIE模块。PIE模块将96个外设和外部引脚的中断进行了分组,分为12组,每组8个中断,分别是PIE1-PIE12。每个组的中断被多路汇集进入1个CPU中断,例如PDPINDA,PDPINDB,XINT1,XINT2,ADCINT,TINT0,WAKEINT这7个中断都在PIE1组内,这些中断都汇集到CPU中断的INT1。

PIE级的中断和外设级的中断比较:外设中断的中断标志位是需要软件清除的,而PIE级的中断标志位都是自动置位或者清除的。但是PIE多了一个PIEACK寄存器,同一时间只能放一个中断过去,只有等到这个中断被响应,给PIEACK置位,才能让同组的下一个中断过去,被CPU响应,而PIEACK当响应一次中断后就需要手动置0,因此需要软件在中断服务程序里写1清0

3.CPU级中断

CPU级的操作都是自动的,不管是中断标志位(IFR),还是中断的使能位(IER)。

但是可以通过软件设置开中断、关中断。(而且配置中断前都会先关闭中断、清零标志位)

原文地址:https://www.cnblogs.com/since1996/p/13924820.html