OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9355|回复: 4

学习"中断"笔记 第五季 ====> 中断!!我们来个了断

[复制链接]

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
发表于 2012-6-12 04:25:08 | 显示全部楼层 |阅读模式
 
好了, 中断我们搞了这么久,我们来个大总结!!

我们先搞个代码来说明我们学了东东.下面我们设的IO分别是: 按建的 IO口 是:  WK_UP  ===> PA0 口  (图上拉的是高电平,所以要设成下拉)
KEY0  ===> PA13  ;  KEY1  ===> PA15  ; LED0 ==>A8  ;   LED1 ==>D2; 




如下:

#include "sys.h"
#include "usart.h" 
#include "delay.h"


//***************************************首先,第一步我们要设置好中断输入的IO脚,中断信号总得有个门进是不是??*****************************

void Int_init(void)

{

  u32 temp,temp1;

//*******************************************************************   中断第一步 使能复用时钟   ***************************************************   

    RCC->APB2ENR|=0x01;   //复用时钟是什么,我不知道,反正中断一定要使能,要明白你们问原子老大,并XO他书上没写明白.

//*******************************************************************   中断第二步 使能相应的中断线   ***********************************************

   //打开PA0的中断线  

   AFIO->EXTICR[0] &= 0xFFFFFFF0;

   AFIO->EXTICR[0] |= 0xFFFFFFF0;  //<===这是脱裤子放屁,只是大家看明白一点而已.0代表A口,1代表B口,以此类推,6代表G口.参考手册第126--128页

   //打开PA13的中断线

   AFIO->EXTICR[3] &= 0xFFFFFF0F;

   AFIO->EXTICR[3] |= 0xFFFFFF0F;  //<===这是脱裤子放屁,只是大家看明白一点而已.

  //打开PA15的中断线

   AFIO->EXTICR[3] &= 0xFFFF0FFF;

   AFIO->EXTICR[3] |= 0xFFFF0FFF;  //<===这是脱裤子放屁,只是大家看明白一点而已.

//*******************************************************************   中断第三步 使能相应的中断线的触发条件**************************************

    EXTI->FTSR|= 1<<0;       //PA0的中断线下降沿触发

    EXTI->RTSR|=1<<13;     //PA13的中断线上升沿触发

    EXTI->RTSR|=1<<15;     //PA15的中断线上升沿触发

//*******************************************************************   中断第四步 使能相应的中断函数号  **********************************************

    NVIC->ISER[0]|=1<<6;    //使能PA0的中断函数

    NVIC->ISER[1]|=1<<8;    //使能PA13,PA15的中断函数.因为工厂偷工减料,PA10至PA15被迫同一个坑拉屎!!就是说,所有口(A到G)的10到15脚都用同一个中断函数入口

 

//*******************************************************************   中断第五步 开放相应的中断请求  ***********************************************

     EXTI->IMR   |=  1<<0;     // 开放 PA0的中断线请求

     EXTI->IMR   |=  1<<13;   // 开放 PA13的中断线请求

     EXTI->IMR   |=  1<<15;   // 开放 PA15的中断线请求

//*******************************************************************   中断第六步 设定相应口的 中断优先值   ******************************************

//                                                                                                                                                                                      如果不想设嵌套的中断,这步可以不要

     NVIC->IPR[2] &=0XFF00FFFF;    //抹掉对应的第6号中断

     NVIC->IPR[2]   |=0XFF40FFFF;    //写进优先级数0X10=0100

 

     NVIC->IPR[10] &=0XFFFFFF00;    //抹掉对应的第40号中断 , 因为工厂偷工减料,PA10至PA15被迫同一个坑拉屎!!就是说,所有口(A到G)的10到15脚都用同一个中断优先值     

     NVIC->IPR[10]   |=0XFFFFFF80;    //写进优先级数0X10=1000

 

//*******************************************************************   中断第六步 设定相应口的 中断优先值   ******************************************

//                                                                                                                                                                                      如果不想设嵌套的中断,这步可以不要

        temp1=0x5;                            //设成第3组,最高二位是抢断优先级优先值,后两位是普通优先值

        temp1<<=8;

        temp=SCB->AIRCR;              //读取先前的设置

        temp&=0X0000F8FF;          //清空先前分组

        temp|=0X05FA0000;            //写入钥匙

        temp|=temp1;   

        SCB->AIRCR=temp;              //设置分组

}

//**************************************************************************   坑爹的中断设置完!!!!!   ****************************************************


汗呀,比51的中断设置复杂太太多了!!!

4点半了,中断服务程式我们明天写,以上的 正确与否强烈要求原子老大斧正一下!!!!!!!

我的工作就是天天在玩
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-12 04:26:29 | 显示全部楼层
中断事件我没打开!!!行不行呀????原子老大.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-12 09:33:17 | 显示全部楼层
为什么要开启复用时钟:http://www.openedv.com/posts/list/4732.htm
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-6-12 09:39:53 | 显示全部楼层
配置io口的外部中断映射是在GPIO的复用功能寄存器中设置的,如果需要设置外部中断映射就要使能复用时钟。
喜欢单片机,没什么道理,就像爱吃水煮鱼,对味而已。
回复 支持 反对

使用道具 举报

2

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2012-5-7
在线时间
8 小时
发表于 2012-6-16 21:52:39 | 显示全部楼层
楼主怎么都是三更半夜的写帖子啊
耐心做事,好好做人。O(∩_∩)O!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 07:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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