你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口DMA传输发送正常,但不进入DMA中断!

[复制链接]
symc001 提问时间:2018-11-20 14:08 /
STM32F103的处理器,串口1采用DMA收发,接收工作正常;
发送时,不能进入DMA_IT_TC中断。仿真调试发现DMA传输完成标志位已被置位。
为了提高系统效率,我需要在DMA传输完成中断里检查应用层的环形FIFO发送缓冲器是否还有数据需要发送,
如果需要发送就在中断里将待发送数据移入DMA发送缓冲,再次启动DMA发送;
如果应用层的环形FIFO发送缓冲器为空,则中断里清空待发送字节数后返回;
应用程序在往应用层的环形FIFO发送缓冲器填入数据时,需要检查传输完成标志位(自己定义的)【if(p->tx_status&E_uart_tc){//前次DMA传输已完成】。
该标志位为为1,标志DMA传输已完成,此时需要重新启动DMA传输;
if(p->tx_status&E_uart_tc){//前次DMA传输已完成
   p->tx_status = E_uart_sending;//清除传输完成消息
   DMA_Cmd(DMA1_Channel4, DISABLE);
   DMA1_Channel4->CNDTR = len;//重新设置待发送数据长度。
   DMA_Cmd(DMA1_Channel4, ENABLE);
  }

该标志位为0,标志DMA仍在传输中,此时只需要将待发送数据填入应用层的环形FIFO发送缓冲器。


现在卡在,DMA中断这里,导致这个思路进行不下去了。
请各路大神指导!谢过!


收藏 评论2 发布时间:2018-11-20 14:08

举报

2个回答
symc001 回答时间:2018-11-20 15:45:46
问题找到了。
是因为NVIC中断寄存器没有配置,也就是没有使能DMA中断。
这是一个低级错误,主要是该项目之前都是使用的串口中断,现在做串口优化没有重新阅读NVIC配置。
本帖关闭。
symc001 回答时间:2018-11-20 14:33:23
仿真界面如图。中断标志位已被置位,但是就是进不了中断入口【void DMAChannel4_IRQHandler(void)】。
在线等!!!
DMA仿真.png

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版