打印

新手请教

[复制链接]
1885|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhengpinhong|  楼主 | 2012-3-1 21:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问下,为什么当我使用DMA接收字符串的时候,当USART中断服务函数void USART1_IRQHandler()为空函数的时候可以正常接收,而把它注释以后只要一往单片机发送数据,单片机就不动了,就像是因为没有清除中断标志位而停在了中断函数中一样。那个空的中断服务函数void USART1_IRQHandler() {}起到了什么作用呢?
沙发
李富贵| | 2012-3-1 21:48 | 只看该作者
谁让你来搞单片机的?

使用特权

评论回复
板凳
zhengpinhong|  楼主 | 2012-3-1 23:41 | 只看该作者
问过别人,别人解释是:因为发生了中断就一定会跳转到中断向量去,如果你那里没指定函数,程序就跑飞了。不知道是不是如此。

使用特权

评论回复
地板
zhengpinhong|  楼主 | 2012-3-1 23:43 | 只看该作者
这话??求解?

使用特权

评论回复
5
berg| | 2012-3-2 00:23 | 只看该作者
当触发中断条件,切允许中断响应后,程序一定会跳转到中断地址去执行。
你用C写了一个空函数在哪里,在系统编译过程中,系统编译器会自动生成返回语句。所以没有问题。
而注销后,此时没有中断程序在哪里,没有中断返回命令,程序就会跑飞。
此时的中断空函数,并不是什么都不执行。
至少系统会自动压入堆栈,弹出堆栈,返回SP指针等操作时存在的。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
zhengpinhong + 1 原创内容
6
哲哲55| | 2012-3-4 14:04 | 只看该作者
stm32的中断函数没问题的,如果你不用的话,编译器也自动给你处理了,存在返回的,不会跑飞的,
楼上的说的应该有点问题吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

0

粉丝