找回密码
 注册
关于网站域名变更的通知
查看: 301|回复: 5
打印 上一主题 下一主题

28335外部中断配置过程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-24 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
28335外部中断基本特点$ U- ], `$ @1 W4 r

" ^% b6 U. d6 S; F) N0 F

" r& l! `* T* a' I% [7个可屏蔽中断源和1个不可屏蔽外部中断源
/ |3 B, m. ^8 o) S5 p* V' `GPIO0-31可选的中断源为XINT1(可屏蔽中断),XINT2和XNMI(不可屏蔽中断)2 @0 E$ w6 r9 F2 t# f
GPIO32-GPIO63可选的中断源为XINT3-7) _1 O; ]6 M5 N/ A5 @; v3 r: g0 ~4 @+ d
外部中断的触发方式可选上升沿或下降沿触发
5 F' I7 @: C* _4 C+ `: f% [**外部中断外设和其他外设不一样,在中断函数中只用清除PIE中断即可不用清除外设中断**。
) }. S4 Y4 O6 m1 ?$ K5 ^0 ]" w7 x# Y5 Z1 o5 g" d; e5 V7 ~+ R( i% j
外部中断配置过程
" M2 i0 i1 z4 S# q6 z
/ _0 k+ s0 T6 P( U, X+ }

  u  H! F. ?& S2 i* Z其实28335的外部中断配置相对其他外设的配置来说比较简单。不过需要注意XNMI和CPU定时器1中断一起使用时,需要将其中断的映射位置配置好。! R/ L1 p- \( p' @# Q$ P6 U

, U8 Q& n# a8 R- R
. a4 l8 s0 ?, ~  J, i: @: ?
**首先将需要配置的GPIO端口配置为通用输入端口**。**上拉不上拉**,采样次数和与不与系统时钟同步都无所谓,不会影响中断的配置。不过如果噪声过大的话,建议使能上拉和选择合适的输入采样滤波。这里以GPIO34为例,将其配置为上升沿触发XINT3的中断输入源。下面所有寄存器的配置受到EALLOW的保护,因此需要解除保护在进行设置。5 _' c: Y) x  M( X7 x  D
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; //相应端口配置为通用IO! q' ]/ Z0 c3 o8 O5 V9 n- X7 p9 R
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0; //输入" y2 L8 Q- R- I  y) o
GpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = 1; //输入滤波采样周期为2*1 Tsysclk(系统时钟)
6 `8 F2 N9 H! m( w. e7 c( }! `GpioCtrlRegs.GPBQSEL1.bit.GPIO34 = 1; //三次采样3 l$ w! H/ ]7 u' h' K! k4 Y
GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0; //使能内部上拉
9 C8 v' e" }: a5 @9 c! n, v6 S" s将GPIO配置到响应的中断源上。
( h0 \1 O2 w% q$ i2 i. w0 e//下面这句话按手册应该赋值为2,但是写34也没错,想一想为什么?
9 h4 G1 g6 C2 ~GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 34; //选择34端口为外部中断3中断源
1 X# ]7 a, i% c0 R8 F5 u选择触发中断的方式。! a! K( p8 d- r9 k  r# X7 H
XIntruptRegs.XINT3CR.bit.POLARITY = 1; //上升沿触发
+ s. n% Q5 d; Z  ~使能外部中断( G9 K6 A$ E+ L( d4 l/ f' l" Z
XIntruptRegs.XINT3CR.bit.ENABLE = 1; //使能外部中断
# ?" L9 Q1 d7 Q. o5 Y* O* u6 b最后使能PIE中断和CPU中断,如果需要还可以重新定义中断入口函数。! c; h9 K: `. \& m
PieCtrlRegs.PIEIER12.bit.INTx1 = 1; //使能PIE外部中断3
' j7 _0 S8 n( q% j8 x8 }1 CIER |= M_INT12; //使能第十二组CPU中断! g/ [; f) n& [( g" w8 E2 `  s
PieVectTable.XINT3 = &Xint3_ISR; //从新定义中断入口函数
. O0 ~) D9 ]+ j; F5 P' G* k- j- m上面基本上已经完成了外部中断的配置,但是对于XNMI来说需要加入下面这句话,以防止CPUTimer1中断连接到不可屏蔽中断上。4 m3 N: [+ L2 x8 v
XIntruptRegs.XNMICR.bit.SELECT = 0; //Timer1连到int13,XNMI连接到NMI
+ K: T0 u- r* J2 |5 Q' ^1 M* U6 q3 W  n% j0 G( m

  r! n, X  n/ a! X* W

该用户从未签到

2#
发表于 2021-12-24 16:22 | 只看该作者
XNMI和CPU定时器1中断一起使用时,需要将中断的映射位置配置好

该用户从未签到

3#
发表于 2021-12-24 16:23 | 只看该作者
在中断函数中只用清除PIE中断

该用户从未签到

4#
发表于 2021-12-24 16:23 | 只看该作者
防止CPUTimer1中断连接到不可屏蔽中断上

该用户从未签到

5#
发表于 2021-12-24 16:24 | 只看该作者
GPIO32-GPIO63可选的中断源为XINT3-7
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2021-12-24 16:24 | 只看该作者
    外部中断的触发方式可选上升沿
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 00:43 , Processed in 0.156250 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表