新手请教

[复制链接]
 楼主| 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 | 显示全部楼层
这话??求解?
berg 发表于 2012-3-2 00:23 | 显示全部楼层
当触发中断条件,切允许中断响应后,程序一定会跳转到中断地址去执行。
你用C写了一个空函数在哪里,在系统编译过程中,系统编译器会自动生成返回语句。所以没有问题。
而注销后,此时没有中断程序在哪里,没有中断返回命令,程序就会跑飞。
此时的中断空函数,并不是什么都不执行。
至少系统会自动压入堆栈,弹出堆栈,返回SP指针等操作时存在的。

评分

参与人数 1威望 +1 收起 理由
zhengpinhong + 1 原创内容

查看全部评分

哲哲55 发表于 2012-3-4 14:04 | 显示全部楼层
stm32的中断函数没问题的,如果你不用的话,编译器也自动给你处理了,存在返回的,不会跑飞的,
楼上的说的应该有点问题吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部