关于GPIO和GPIO中断

本文详细介绍了GPIO的分组、寄存器功能(包括控制、数据和中断),重点讲解了采样滤波原理及QUALPRDx与GPxSEL的关系,并通过实例演示了GPIO配置和中断的设置过程。涵盖了GPIO基础、中断触发和中断处理技术。
摘要由CSDN通过智能技术生成

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;
}


PIE

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值