关于GPIO和GPIO中断

编程入门 行业动态 更新时间:2024-10-23 09:36:47

关于<a href=https://www.elefans.com/category/jswz/34/1767258.html style=GPIO和GPIO中断"/>

关于GPIO和GPIO中断

1.GPIO分组

GPIO:有三组A(0-31);B(32-63);C(64-87)

2.GPIO寄存器

1.控制寄存器GpioCtrlRegs

  1. Mux:0表示普通
  2. DIR:0表示输入
  3. Pud:0表示使能上拉
  4. QUALPRDn:用来定义采样周期,用于滤波
  5. QSELx:用来定义采样窗有几个采样周期

2.数据寄存器GpioDataRegs

  1. GpioDAT:若IO输入可读取其电平;若IO输出写1输出高电平
  2. GPioSET:写1置1
  3. GpioCLEAR:写1置0
  4. GPioTOGGLE:写1反转

3.中断寄存器GpioIntRegs
DSP的外部中断源共有7个,分别为XINT1-XINT7。其中XINT1和XINT2对应GPIO0-GPIO31;XINT3,4,5,6,7对应GPIO32-GPIO63。

  1. GPIOXINTnSEL:选IO口
  2. XINT1CR.bit.POLARITY:选触发方式
  3. XINT1CR.bit.ENABLE:确定使能

3.什么叫采样滤波?QUALPRDx和GPxSEL什么关系


就得在GPIO输入的时候,通过好多个周波内对GPIO的值进行确认,如果这几个周波内的值都一样,就确定GPIO的输入值。这个时候QUALPRDx和GPxSEL刚好对应了一个周波的周期几个周波

4.GPIO中断

首先得用于中断的GPIO口,然后确定外部中断所用的中断源。然后就是外部中断触发方式,外部中断是否使能。

5.例子

void EXTI_Init(void)
{
配置GPIO34,在B组
GpioCtrlRegs.GPBMUX1.bit.GPIO34=0;//普通
GpioCtrlRegs.GPBDIR.bit.GPIO34=0;//输入
GpioCtrlRegs.GPBPUD.bit.GPIO34=0;//上拉
GpioCtrlRegs.GPBCTRL..bit.QUALPRD0=1;//周期2*1个系统时钟
GpioCtrlRegs.GPBQSEL1.bit.GPIO34=1;//三次采样
//配置GPIO的中断
GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL=34;//3是用的XINT3
XIntruptRegs.XINT3CR.bit.POLARITY=1;//上升沿触发
XIntruptRegs.XINT3CR.bit.ENABLE=1;//允许外部中断
//中断那一套:开PIE中断,开总中断,开位中断,中断入口,中断函数
EALLOW;
PieVectTable.XINT3=&EXTI_IRQ1;
EDIS;
PieCtrlRegs.PIEIER12.bit.INTx1 = 1;//使能PIE组12的INT1,指的就是XINT3
IER|=M_INT3;
EINT;
ERTM;
}
//定义中断函数
interrupt void EXTI_IRQ1(void)
{//程序PieCtrlRegs.PIEACK.bit.ACK1=1;
}

更多推荐

关于GPIO和GPIO中断

本文发布于:2024-02-12 06:37:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1686636.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:GPIO

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!