OpenEdv-开源电子网

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

串口USART1_IRQHandler如何被调用

[复制链接]

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
发表于 2016-1-27 01:16:35 | 显示全部楼层 |阅读模式
1金钱
在书上看到串口实验这章,关于中断处理函数这块有以下几个疑问:1、发现代码上没作任何与USART1_IRQHandler中断处理函数关联的处理,但为什么在串口接收中断时就能自动进入到此处理函数,难道是以固定这个函数名的方式来约定自动进入这个处理函数?如果命名为其它名称的函数是不是就不能在产生中断时调用此函数了?
2、除了接收中断外,如果要实现串口其它的中断处理,也是用同一个函数来处理它所有的中断吗,还是能够根据不同的中断定义不同的函数?
3、关于哪些外设的中断需要定义成什么样的函数名称和参数,在哪个手册上哪一章有这块的说明?

最佳答案

查看完整内容[请看2#楼]

1.是的。 2.不同外设不一定一样,有的一个接收,有的不同中断函数。 3.找到start...hd.s那个文件,搜一下irq就看到了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2016-1-27 01:16:36 | 显示全部楼层
1.是的。
2.不同外设不一定一样,有的一个接收,有的不同中断函数。
3.找到start...hd.s那个文件,搜一下irq就看到了。
小小蜗牛
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-27 09:48:29 | 显示全部楼层
USART1的任何中断都会进入这个函数。在这个函数中你需要写入针对不同中断的响应代码。 中断名称定义在库函数的中断向量表中。
回复

使用道具 举报

6

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
432
金钱
432
注册时间
2016-1-19
在线时间
38 小时
发表于 2016-1-27 13:09:16 | 显示全部楼层
中断函数名必须和库函数中定义的一致;如果你看到中断函数中没有语句串口却能收发,去查看下串口初始化的时候有没开DMA。
原来你也在这里
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
 楼主| 发表于 2016-1-30 22:28:27 | 显示全部楼层
jiutianshenjian 发表于 2016-1-27 01:16
1.是的。
2.不同外设不一定一样,有的一个接收,有的不同中断函数。
3.找到start...hd.s那个文件,搜一下 ...

好的,谢谢。终于明白了,根据你说的文件找到了相应的函数名称了。
还想问一下就是,经查看start...hd.s文件,看到所定义的都是函数名称,并没定义函数有什么参数,那是不是因为所有的中断处理函数都是不需要参数的?
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
 楼主| 发表于 2016-1-30 22:31:02 | 显示全部楼层
ricefat 发表于 2016-1-27 09:48
USART1的任何中断都会进入这个函数。在这个函数中你需要写入针对不同中断的响应代码。 中断名称定义在库函 ...

我用的是寄存器方式开发的,函数的定义就是在二楼所说的start...hd.s文件中。start...hd.s是不是就是你说的库函数的中断向量表,还是说,以库函数方式开发的话,又是在另一个文件中。
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
 楼主| 发表于 2016-1-30 22:31:18 | 显示全部楼层
大雄先生 发表于 2016-1-27 13:09
中断函数名必须和库函数中定义的一致;如果你看到中断函数中没有语句串口却能收发,去查看下串口初始化的时 ...

好的,感谢你的回答,谢谢
回复

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
434
金钱
434
注册时间
2013-3-18
在线时间
82 小时
发表于 2016-1-31 00:40:54 | 显示全部楼层
1、stm32 常用的几个中断包括USART1中断都不带参数,返回值也是void。
2、中断名并不是唯一的,你可以更改.S中的名称,然后你再定义一个同名的函数,也是可以的.
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-31 10:19:28 | 显示全部楼层
kingpage 发表于 2016-1-30 22:31
我用的是寄存器方式开发的,函数的定义就是在二楼所说的start...hd.s文件中。start...hd.s是不是就是你说 ...

具体的我忘了,一般来说这个名称没必要更改。只需要在中断函数中加入相应的标志位判断即可
回复

使用道具 举报

0

主题

63

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3867
金钱
3867
注册时间
2015-8-26
在线时间
285 小时
发表于 2016-2-1 09:16:15 | 显示全部楼层
学习学习
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
 楼主| 发表于 2016-2-2 12:45:41 | 显示全部楼层
holy404290384 发表于 2016-1-31 00:40
1、stm32 常用的几个中断包括USART1中断都不带参数,返回值也是void。
2、中断名并不是唯一的,你可以更改 ...

好的,感谢你的回答
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-8-18
在线时间
17 小时
 楼主| 发表于 2016-2-2 12:46:05 | 显示全部楼层
ricefat 发表于 2016-1-31 10:19
具体的我忘了,一般来说这个名称没必要更改。只需要在中断函数中加入相应的标志位判断即可

好的,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 08:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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