OpenEdv-开源电子网

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

学习RAM中断 "中断"第六季 初试牛刀

[复制链接]

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
发表于 2012-6-13 02:40:14 | 显示全部楼层 |阅读模式
 好了;将昨天写的丢UV3编译,出错了!!!!!! 那里错了呢,原来是这里:

   //打开PA0的中断线   

   AFIO->EXTICR0 &= 0xFFFFFFF0;

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

   //打开PA13的中断线

   AFIO->EXTICR4  &= 0xFFFFFF0F;

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

  //打开PA15的中断线

   AFIO->EXTICR4  &= 0xFFFF0FFF;

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


大家看到没有,因为UV3定义是的是数组,所以AFIO->EXTICR0要写成AFIO->EXTICR[0].

定义成数组之后就没有4了,4是3了.我搞错了.原来AFIO_EXTICR  寄存器有4个,从AFIO_EXTICR1到AFIO_EXTICR4,但在UV3定义成数组AFIO_EXTICR[4],

分别是AFIO_EXTICR[0],  AFIO_EXTICR[1],  AFIO_EXTICR[2],  AFIO_EXTICR[3].

以上的改成:


   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;  //<===这是脱裤子放屁,只是大家看明白一点而已.


好了这次     显示  "TEXT.axf" - 0 Error(s), 0 Warning(s).

好我们小试一下中断PA0 .我写的中断服务程式如下:

void EXTI0_IRQHandler(void)
{
u8 i=0;
for (i=0;i<10;i++)
{
PAout(8)=!PAout(8);
PDout(2)=!PDout(2);
delay_ms(100);
PAout(8)=!PAout(8);
PDout(2)=!PDout(2);
delay_ms(100);
}
EXTI->R=1<<0;
}

大家注意了,中断入口函数的开头写法是固定的,不能搞自由化,党中央的规定.

0口的中断函数是:
 EXTI0_IRQHandler(void)

1口的是:
 EXTI1_IRQHandler(void)

2口的是:
 EXTI2_IRQHandler(void)

3口的是:
 EXTI3_IRQHandler(void)

4口的是:
 EXTI4_IRQHandler(void)

3到9口的是:
 EXTI9_5_IRQHandler(void)

10到15口的是:
 EXTI15_10_IRQHandler(void)

好了,main()写简单点,我写成这样:

int main(void)
{
      Stm32_Clock_Init(9);
      delay_init(72);
      uart_init(72,9600);

      IO_Init();
      Int_init();

      while(1)
          {
        Aout(8)=1;
        Dout(2)=1;
          }

}

上机一跑... .... ... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... ....... .... 哈哈,成了.

一按WP_UP键 两个灯那个闪呀闪.  ^-^

灯在闪的时候再按几次,灯闪完就不闪了,说明中断不能自己打断自己, 如已响应了一个高电平,在执行中断函数的时候,再出现一个高电平,或多个电平,
系统都不再鸟它了.

那其它的中断函数呢,好!! 我们再来写一个PA13脚和PA14脚的中断函数试一下.

void EXTI15_10_IRQHandler(void)
{
u8 i=0;
for (i=0;i<10;i++)
{
PAout(8)=!PAout(8);
delay_ms(100);
PAout(8)=!PAout(8);
delay_ms(100);
}

EXTI->R=1<<13;
EXTI->R=1<<15;
}


丢进ARM,运行~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

哈哈,按KEY1 红灯在闪呀那个闪!!!!!!!!!!!!!!!!!!!!!!!  然后立马按WP_UP键 , WP_UP键 立马打断KEY1的中断,执行两个灯在闪的动作!!!!!!
两个灯闪完后,回到KEY执行执行完的中断程式,就一个红灯在闪!!!!!!!!!优先中断代码运行正常!!!!!!!!!!!噢哇!!!!!!鸡动ING..............

闪完后,然后按一下KEY0键,满怀信心去看灯亮.....................?????? 没亮!! 灯坏了??? 没理由呀,丢进上几季试输入的程式,一试.......KEY0没事呀.
那里出错了!!!

我找呀找,找呀找.........找到了!!

还是:

   //打开PA13的中断线

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

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

  //打开PA15的中断线

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

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


后两句将 前两句的位抹掉了..........我容易吗我,我只想大家好看点而已......T.T

好更改一下,将4行代码直接改成:


   //打开PA13的中断线 和 打开PA15的中断线

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

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

好,丢进ARM,再运行~~~~~~~~~~~~~~~~~~通了!!!!!!!!!!!!!!!!!!!!!!!!

无论按KEY0还是KEY1都进入中断,就是红灯闪呀闪~~~~~~~~~~~~~~

哈哈,玩一下,在KEY0和KEY1中断执行的时候,我连按几次WP_UP,几次打断EY0和KEY1的中断.哈哈.


好了,IO中断这学问偶毕业了,明天我们继续学习下边的.好好学习,天天向上.

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

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-13 02:46:22 | 显示全部楼层
原子老大将偶这个中断学习挂挂热帖.让以后的象我这样的初哥少走一点弯路.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-13 02:47:05 | 显示全部楼层
偶是笨,可是学一个星期了呢.才懂得的.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-13 02:49:24 | 显示全部楼层
在些,我强烈建议初哥们先学51单片机,再来搞ARM.这样会好过很多. 好象这个中断,51的外中断就3行搞定了.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-13 03:14:11 | 显示全部楼层
我看了下书,说下学习计划:

先学,定时器,可能很快懂.
然后去原子老大那搞一块OLED,玩玩SPI.
然后玩TFT.这就是我近来最想要搞的东东.FPGA在排队学,到时搞个大屏玩玩,偶仓里一大堆以前拆机拆下来的,舍不得丢,还好,以后有得玩了.
再后的以后再算.先玩玩显示.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-13 03:17:19 | 显示全部楼层
靠了,OLED就是12864嘛.有啥子不同呢,8080口偶常用,只是SPI老是不想写,这次逼自己写个吧,人嘛,总要逼呀.......才能有上进.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2012-3-21
在线时间
5 小时
发表于 2012-6-13 08:41:19 | 显示全部楼层
楼主好认真啊,凌晨还在奋战,值得学习啊~~~顶一个~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2012-6-13
在线时间
0 小时
发表于 2012-6-13 10:23:27 | 显示全部楼层
熬夜的人多的去了,我同学一周在实验室熬4个晚上,大一就把51单片机 AVR单片机 430单片机 ARM学了。佩服他啊.....
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-13 11:31:54 | 显示全部楼层
还是身体重要.
否则,毕业就可能不是学士/硕士而是烈士(或者准烈士),再牛逼有个啥用? 
 
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-6-13 12:05:56 | 显示全部楼层
嗯,身体才是玩乐的本钱
https://github.com/roxma
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
发表于 2012-6-13 13:10:46 | 显示全部楼层
回复【10楼】正点原子:
还是身体重要.
否则,毕业就可能不是学士/硕士而是烈士(或者准烈士),再牛逼有个啥用? 
 
---------------------------------
军哥你还老熬夜。。不过这几天没见你晚睡了。。。哈哈
自信人生一百年
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-6-13 13:52:01 | 显示全部楼层
回复【12楼】liuliuzelin:
---------------------------------
最近半个月基本在陪我老婆.她住院了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
发表于 2012-6-13 17:27:07 | 显示全部楼层
回复【楼主位】chinafox:
---------------------------------
这个应该是库的版本不同有一定差异造成。
我发现有的库就改动了不少
包括数据结构等


向楼主学习把中断分析那么仔细
回复 支持 反对

使用道具 举报

5

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2011-10-24
在线时间
31 小时
发表于 2012-6-13 21:20:38 | 显示全部楼层
顶顶。。。。。。
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-6-14 00:50:47 | 显示全部楼层
呃,我读了十几年的书,都没学怎么样学好功课,我真正懂得如何学习的是记得第一节是自上学后的第十二年,第一节高数课,我的高数老师给我们讲了十多分钟的学习方法。这十几分钟的课让我受用终生。从此不再怕学习了。自此我是不错的成绩玩完大学的。学习方中其中有一句话:学习的时候你要站在老师的角度來學,當你認為你能教人的時候,就表示你基本吃透了你要學的東西。
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-6-14 12:57:06 | 显示全部楼层
学无止境 苦海无涯 人生苦短 

 忆年少,锦衣纨绔,饫甘餍肥;叹如今,茅椽蓬牖,瓦灶绳床。只因:海誓山盟坠情网,挥金如土宴华堂。进山银库为一梦,美景却是祸萧墙。坐吃山空祖业去,醉生梦死梦不长。他日孤来独自忆,终日洗面泪衣裳。正是:厚地高天,堪叹古今情不尽;痴男怨女,可伶风月债难偿。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-6-14 13:00:25 | 显示全部楼层
我以前还是比较文艺的 呵呵
回复 支持 反对

使用道具 举报

2

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2012-5-7
在线时间
8 小时
发表于 2012-6-16 22:00:02 | 显示全部楼层
楼主受教了,谢谢!
耐心做事,好好做人。O(∩_∩)O!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 06:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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