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

28335外部中断配置过程

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
28335外部中断基本特点( ^2 g  [  |( P: O

% x! F' w- W0 m7 r

# P3 ]4 b* y* d# m5 p9 Y+ ^, f. E7个可屏蔽中断源和1个不可屏蔽外部中断源4 _1 x' X* b8 }- E/ v$ ?8 s2 H
GPIO0-31可选的中断源为XINT1(可屏蔽中断),XINT2和XNMI(不可屏蔽中断)
' j7 z# ]2 B) u$ [: qGPIO32-GPIO63可选的中断源为XINT3-7/ ?" ?) X8 Z1 o+ h2 n3 ]
外部中断的触发方式可选上升沿或下降沿触发
: v$ Y4 u4 H, B**外部中断外设和其他外设不一样,在中断函数中只用清除PIE中断即可不用清除外设中断**。7 k. q7 l  s  T. J; S# w
8 A. m9 s) m/ f9 W' n) V$ W$ N
外部中断配置过程, H7 g- q  o$ I8 r9 [! x
* W  y4 |, _& T/ K

0 J+ I  s2 v6 N) v. C; \) N5 ?其实28335的外部中断配置相对其他外设的配置来说比较简单。不过需要注意XNMI和CPU定时器1中断一起使用时,需要将其中断的映射位置配置好。/ J# K7 o" G. z: i$ B
, @/ t" O/ M8 K1 V
/ ~; Y7 l4 ~9 A* i+ e  }
**首先将需要配置的GPIO端口配置为通用输入端口**。**上拉不上拉**,采样次数和与不与系统时钟同步都无所谓,不会影响中断的配置。不过如果噪声过大的话,建议使能上拉和选择合适的输入采样滤波。这里以GPIO34为例,将其配置为上升沿触发XINT3的中断输入源。下面所有寄存器的配置受到EALLOW的保护,因此需要解除保护在进行设置。
* h: O5 z2 z- }: P2 }GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; //相应端口配置为通用IO5 a. u- f; S+ @0 a% K6 A2 F! T
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0; //输入
# ^) ?6 u" [* OGpioCtrlRegs.GPBCTRL.bit.QUALPRD0 = 1; //输入滤波采样周期为2*1 Tsysclk(系统时钟)
# D2 J1 i( ]4 V/ z5 g- ^  G: F2 VGpioCtrlRegs.GPBQSEL1.bit.GPIO34 = 1; //三次采样) q' _' r0 `' t! n7 g
GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0; //使能内部上拉
4 q4 w% L. W  o6 l# L) T3 V& r! n将GPIO配置到响应的中断源上。! x: _" u7 K- n  ^6 G" }% ~
//下面这句话按手册应该赋值为2,但是写34也没错,想一想为什么?
3 j  z9 ^: f) x9 r7 o# wGpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 34; //选择34端口为外部中断3中断源$ }' p# L  V4 `" S" T
选择触发中断的方式。6 }: ^$ _, N$ X2 s
XIntruptRegs.XINT3CR.bit.POLARITY = 1; //上升沿触发
- Z; c  F9 L: S# w使能外部中断+ x5 m1 `" p5 i: k
XIntruptRegs.XINT3CR.bit.ENABLE = 1; //使能外部中断" k- {: J" \" T8 z
最后使能PIE中断和CPU中断,如果需要还可以重新定义中断入口函数。
- N& p5 B% d: t9 N. wPieCtrlRegs.PIEIER12.bit.INTx1 = 1; //使能PIE外部中断3
& q" _! D- Q! d+ J4 Z) HIER |= M_INT12; //使能第十二组CPU中断. ^) R% U8 E) ]+ |% V$ P( E8 M
PieVectTable.XINT3 = &Xint3_ISR; //从新定义中断入口函数, m& W! \% [1 i/ H8 s  k* X
上面基本上已经完成了外部中断的配置,但是对于XNMI来说需要加入下面这句话,以防止CPUTimer1中断连接到不可屏蔽中断上。
% o5 G( D- j# }+ U. a3 rXIntruptRegs.XNMICR.bit.SELECT = 0; //Timer1连到int13,XNMI连接到NMI/ C$ }# P8 ?; b/ [4 l' n( [
, U. t" k) O( b: {! l

6 g8 K5 e7 X0 t/ l) a5 R: ^

该用户从未签到

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-10-12 15:11 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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