OpenEdv-开源电子网

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

STM32多路外设中断的管理问题

[复制链接]

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-11-3
在线时间
0 小时
发表于 2014-8-23 21:38:21 | 显示全部楼层 |阅读模式
5金钱
项目需要,用STM32F103做了一个数据管理模块,需要用到5路串口,1路SPI,开2个定时器,还需要1路CAN。
串口收发均采用中断模式,SPI工作在从模式下,中断接收并发送,CAN采用定时查询和接收方式通信。
目前存在的问题模块空跑,即模块没有数据通信时工作正常
模块有一路串口的同时收发时模块工作不正常,模块会停在硬件错误HardFault_Handler函数死循环里面
考虑到由于同时开启多个中断,可能是中断管理混乱造成的。
请问大家有什么好办法没有?
是不是一定要上操作系统,如uCos?

最佳答案

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

HardFault_Handler一般是有溢出了,中断多不会引起HardFault_Handler的.
stm32初学中
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

2

主题

164

帖子

1

精华

禁止访问

积分
1316
金钱
1316
注册时间
2012-5-13
在线时间
127 小时
发表于 2014-8-23 21:38:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-23 21:38:22 | 显示全部楼层
hardfault八成是你指针/数组使用不当造成的,不应该是中断导致的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-11-3
在线时间
0 小时
 楼主| 发表于 2014-8-23 21:38:22 | 显示全部楼层
经过反复的尝试,目前理想的结果是将SPI的收发和串口以及CAN的通信做一个隔离。利用IO控制线的高低电平来将SPI的收发和串口及CAN的收发分隔开来,以保证在SPI通信时,串口不工作或着忽略串口工作,当SPI不通信时进行串口收发,通过测试发现数据正常。
stm32初学中
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-11-3
在线时间
0 小时
 楼主| 发表于 2014-8-31 15:32:18 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥,现在片子能动起来了,但是会有问题,当片子单独只有SPI通信时,收发都没有什么问题。当有一路SPI和一路串口时,就会出现arm向上位机发送数据中有错数的情况,例如发数字1,2,3,4,5,接收到的结果为1,2,2,4,5。数据个数没有错误。
现在环境是用arm做SPI从设备,用的是SPI1接口,串口用的是串口1,上位机用的是FPGA写的SPI时序。ARM的SPI用中断收发,做了一个简单协议,串口用中断收发,把收发函数都放到一个中断函数中处理。
目前SPI中断优先级为抢占2,子优先级3,串口优先级为抢占4,子优先级3。
SPI波特率为1M
请问有什么办法可以处理一下吗?
stm32初学中
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-31 17:05:34 | 显示全部楼层
回复【4楼】crazymachael:
---------------------------------
这我也不太清楚了,不好意思。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-11-3
在线时间
0 小时
 楼主| 发表于 2014-9-1 09:41:04 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥,我昨天调了一天,发现是我的串口中断对SPI的发送有影响。发送没完成串口中断就来了,从而对SPI的发送产生了影响。现在的解决办法是等SPI发送完一帧完整帧的时候在响应串口中断,但是发送中断可以通过清除发送标志位来进行,那接收中断怎么办。有没有清除接收中断的函数。
stm32初学中
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-1 23:18:43 | 显示全部楼层
回复【6楼】crazymachael:
---------------------------------
串口中断和SPI发送数据,我也用到过啊,冲突并不会导致死机哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-11-3
在线时间
0 小时
 楼主| 发表于 2014-9-2 21:13:04 | 显示全部楼层
 回复【7楼】 正点原子 :
---------------------------------
原子哥,您要是有空的话能不能帮我看看我的工程有什么问题

STM32_CardArm库函数.zip

331.46 KB, 下载次数: 94

stm32初学中
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-2 23:34:11 | 显示全部楼层
回复【8楼】crazymachael:
---------------------------------
真没空。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2013-11-3
在线时间
0 小时
 楼主| 发表于 2014-9-3 00:36:45 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
谢谢原子哥了
stm32初学中
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-2 01:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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