打印

关于设置中断优先级

[复制链接]
2615|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
古道122|  楼主 | 2008-8-28 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做一个多路采样并与电脑通信的程序。
现在单独的都能够正常运行,采样和通讯的数据都是正确的,
使用了TIM2进行定时,在TIM2中断中进行AD的采样,AD使用DMA方式进行多路采样。而通讯的话,使用了USART1的中断,在USART1中断程序中进行数据的接收。
以上如果使用在一起的话就产生问题了,STM32接收到的数据比较混乱,怀疑是由于进入USART1中断处理的时候,又产生了定时器的中断,所以会使接收不正确。尝试着设置了一下NVIC中的中断优先级,但是尝试了几种0和1的组合,但是还是没有效果。
想问一下大家:
1。USART1的中断进入的话,是在接收到什么信号再进入的吗?我这里感觉就算没有接收到数据也老是进入中断。

2。在NVIC的中断的设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)
这个Group_2是指什么意思吗?
另外NVIC_IRQChannelPreemptionPriority
NVIC_IRQChannelSubPriority
分别设置的是什么吗?

3。如果使用DMA方式的话,会不会和ADC的DMA相冲突吗?
沙发
香水城| | 2008-8-28 13:41 | 只看该作者

关于设置中断优先级的问题

请参考我的博客**:STM32(Cortex-M3)中的优先级概念

不明白你的问题1,“在接收到什么信号再进入的吗?”这是什么意思?
不明白你的问题3,“如果使用DMA方式的话”,谁使用?

使用特权

评论回复
板凳
古道122|  楼主 | 2008-8-28 13:58 | 只看该作者

解释

问题1:USART1处于接收时,当接收中断标志位为1(即DR中的数据不为空)的时候,会产生一个中断,然后进入到相应的USART1_IRQHandler中断中去执行吧?
我在中断中放了个点亮和熄灭灯的语句,目前的情况是在没有发送数据的时候,小灯会一直亮着(以一定高频率闪烁)。所以想问一下,为什么没有发送数据时,会一直进入中断进行执行吗?
开启的中断:USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

问题3: 是指USART使用DMA的话,是不是AD的DMA就不能使用了?还是可以同时使用?

使用特权

评论回复
地板
古道122|  楼主 | 2008-8-28 14:45 | 只看该作者

哈哈

问题解决了,呵呵,主要是我同时也开了发送中断,所以一直进入,关掉就正常了

使用特权

评论回复
5
香水城| | 2008-8-28 15:32 | 只看该作者

如果USART使用DMA,ADC可以同时使用DMA,不影响操作

使用特权

评论回复
6
古道122|  楼主 | 2008-8-28 16:39 | 只看该作者

哦,谢谢香主

另外想问一下,USART在通讯的时候,Tx一个byte的时间是怎么定的吗?我设置了baud rate是115200,数据8b,stop bit 1b,无校验。Rx的时间是5个byte每个11us左右,而Tx的时间共31个byte(在数组内),共用了大约2.8ms,这个差得也太多了吧?
PS:Rx是在USART中断内执行的,Tx是在外部执行的循环,和这个有关系吗?

使用特权

评论回复
7
古道122|  楼主 | 2008-8-29 09:49 | 只看该作者

呵呵

今天观察了一下,计算是王道哈。昨天是我看错了- -!果然是遵循115200的速度传送的

使用特权

评论回复
8
fqingy2003| | 2008-9-1 17:07 | 只看该作者

其实这是STM32的一个DEBUG

我使用过的CPU当中没有这样的问题,一开发送中断就响应中断,都是开完中断后当把数据写入发送缓冲区以后才产生中断的,可是这个STM32偏偏一开发送中断就进入中断

使用特权

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

本版积分规则

84

主题

381

帖子

1

粉丝