3105|2

1291

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

【R7F0C809】引脚外部中断 [复制链接]

本帖最后由 强仔00001 于 2015-10-17 00:25 编辑

中断是单片机常用的功能之一,中断分为内部中断和外部中断两种。在R7f0c8096中有7个人外部中断和13个内部中断,注意这只是可屏蔽的中断。不算上不可屏蔽的中断。如下图就罗列了4款系列芯片的中断情况:
下图是几个中断类型的框图:
今天我就用R7f0c8096的引脚输入边沿检测中断来写个简单按键中断的程序。

这里官方给出了各中断请求源对应的中断请求标志、中断屏蔽标志和优先级指定标志的名称的列表:
关于中断寄存器不多。就只有4个寄存器。分别为:
(1)中断请求标志寄存器
(2)中断屏蔽标志寄存器
(3)优先级指定标志寄存器
(4)外部中断上升沿允许寄存器 0EGP0)和外部中断下降沿允许寄存器 0EGN0
当我们要使用引脚输入边沿检测中断时,我们可以按以下流程:
(1)首先把IO口设置为输入。
(2)设置引脚输入边沿检测的类型
(3)设置中断优先级
(4)打开中断,编写中断程序任务

首先设置IO口输入这里我可以参考端口功能这里的说明把IO设置为输入:
接着我们就要设置引脚输入边沿检测的类型了,这个是由两个寄存器(EGP0, EGN0)设置,详细的可以看下图的表格。

接着我们就要设置优先级了,优先级我们可以设定4个等级,如下图的表格:
还有的剩下就是打开相关的中断请求的标志和屏蔽标志了。

现在我使用板子上的按键控制,板子的按键接了P1.1,默认是没有引脚中断的功能,但可以通过重定向的功能,把PIOR21就可以了,板子上丝印写着INTP0,明显印错了,应该是INTP1才对。
源代码:
void EXTI_Init(void)
{
    PMK1 =1U;  /* 关闭 INTP1  */
    PIF1 =0U;  /* 清除 INTP1 中断标志位 */
   
    /*设置 INTP1 中断的优先级为2 */
    PPR11 = 1U;
    PPR10 = 1U;
    EGN0 = 2U;
    EGP0 = 0U;
}
void EXTI_Start(void)
{
    PIF1 =0U;  /* 清除 INTP1 中断标志位 */
    PMK1 =0U;  /* 启动 INTP1 中断 */
}
void EXTI_Stop(void)
{
    PMK1 =1U;  /* 关闭 INTP1 中断 */
    PIF1 =0U;  /* 清除 INTP1 标志位 */
}
__interrupt void INTP1_Interrupt(void)
{
   
      P0 ^=0b00000010U;
        PIF1 =0U;              /* 清除 INTP1 中断请求 */
      

}
效果图:
时间都过了一大半,看来进度要加快了,在画电路图中
源代码:
EXTI.zip (171.18 KB, 下载次数: 17)


最新回复

  详情 回复 发表于 2015-10-17 07:31
点赞 关注

回复
举报

1891

帖子

2

TA的资源

纯净的硅(中级)

沙发
 

点评

你又开始水了  详情 回复 发表于 2015-10-17 23:20
 
个人签名
分享铸就美好未来。。。




 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

板凳
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表