历史上的今天
返回首页

历史上的今天

今天是:2024年09月11日(星期三)

正在发生

2018年09月11日 | stm32 usart在DMA模式下只能发送一次

2018-09-11 来源:eefocus

  问题描述:使用STM32 cube生成usart2 DMA direct mode(不使用FIFO,normal模式,STM32f407)配置代码,usart2可以使用阻塞方式发送,使用DMA发送则只能发送第一次,复位后还只能发送一次。

  单步调试发现DMA方式下的发送在发送第一次之后,husart->State 标志变为 HAL_USART_STATE_BUSY就再也不变了。比较直接的解决思路就是在DMA发送中断中给这个标志修改为HAL_USART_STATE_READY,修改之后还是不好用(我认为是可以通过修改多个相关寄存器解决的,但是个人倾向于不深入了解其寄存器,而是用封装度更高的HAL系列函数)。

  读stm32f4xx_hal_usart.c(V1.5.0)文件的前面关于如何使用HAL函数的部分并与配置代码比较并没有发现问题,但是看stm32f1xx_hal_usart.c(V1.0.0)在同样的位置多了如下文字:

              (+++) Configure the USARTx interrupt priority and enable the NVIC USART IRQ handle
     (used for last byte sending completion detection in DMA non circular mode)

  翻看STM32F4系列早于1.5.0的文件都没有这句,可能是官方的疏忽或者是个人理解不到位,总之增加了USART2中断之后(cube生成的),usart DMA发送是完全正常了。


推荐阅读

史海拾趣

富瀚(Fullhan)公司的发展小趣事
观察电动机保护器是否在达到过载条件后迅速切断电源。如果保护器正常工作,电动机应停止运行,且保护器上的指示灯或显示屏会显示相应的过载保护信息。
Freqtech Ohg公司的发展小趣事

随着业务的不断增长,Freqtech Ohg公司开始实施全球化战略。公司首先在欧洲建立了研发中心,随后在亚洲市场设立了生产基地和销售网络。通过整合全球资源,Freqtech不仅降低了生产成本,还更快速地响应了不同地区客户的需求。同时,公司积极参与国际展会和技术交流,不断提升品牌知名度和影响力,为公司的全球化发展奠定了坚实基础。

安国国际(ALCOR)公司的发展小趣事

近年来,安国国际将发展重心放在U盘控制IC的开发上。随着USB技术的不断升级和SSD市场的蓬勃发展,安国积极抢占USB 3.0、USB 3.1及SSD控制IC的市场先机。公司的U盘控制IC不仅支持新一代3D NAND技术,还具备高性能、低功耗等优点,深受市场欢迎。通过持续的技术创新和市场拓展,安国在U盘控制IC领域取得了显著成绩。

Datasensor公司的发展小趣事

为了进一步扩大市场份额和增强技术实力,DATASENSOR公司积极进行收购和扩张。2004年,公司成功收购INFRA和SPECIALVIDEO公司,这两家公司在工业自动化领域拥有丰富的经验和先进的技术,为DATASENSOR公司带来了更多的市场机会和技术优势。此外,公司还在法国、德国、英国和西班牙等国家和地区设立了子公司,实现了全球化的战略布局。

Ho Chien Electronics Group Inc公司的发展小趣事

随着公司的不断发展壮大,DATALOGIC公司逐渐整合为三大业务模块:自动化产品、手持设备和自动扫描系统。为了更好地适应市场变化和满足客户需求,公司于1998年将自动化产品业务模块独立出来,成立新的公司,并启用DATALOGIC Sensor &More新标识。2000年,公司进一步启用全新的DATASENSOR品牌标识,标志着公司在工业自动化光电检测领域的新篇章。同时,公司投入大量资金用于生产改善、项目管理和高新技术领域的发展,为公司的持续创新和市场拓展提供了有力保障。

Fagor Electrónica公司的发展小趣事

然而,随着市场竞争的加剧和技术的快速变革,Fagor Electrónica也面临着前所未有的挑战。为了应对这些挑战,公司不断加大研发投入,积极引进先进技术和管理经验。同时,Fagor Electrónica还加强了与供应商和客户的合作,以共同应对市场变化。这些努力使得公司在激烈的市场竞争中保持了领先地位。

问答坊 | AI 解惑

【EEWORLD】救火车和你一起学ARM系列活动之六

IO引脚配置和输入输出实验 在前几个实验中,我们一直在研究ARM核心东西。本次实验,我们要把最基本的外设----IO引脚学习一下。学习中要注意的几个问题:1、定时器时钟源的倍频分频。2、理解匹配及如何产生中断。3、产生中断后,如何跳转到中断函数 ...…

查看全部问答>

大家帮我看看这个异常是怎么产生的?

是SPI初始化代码,也不是每次都会有异常,偶尔重新烧写NK的时候才出现。奇怪这如果错误了,怎么不是每次都出现! 定义: typedef struct __SPIRX_BUFFER_INFO {         ULONG        Read;  &nbs ...…

查看全部问答>

MC52i FTP连接建立不成功

首先向各位回帖帮助的朋友问个好!     我最近在调试一个西门子MC52i的无线模块,想利用其支持的FTP协议来远程传送文件数据,但利用AT指令资料里提供的内容无法正常的拨号建立FTP连接。问题如下: //初始化检测 AT     ...…

查看全部问答>

TVP5150求助

大家设在6410上调试过TVP5150吗?寄存器应该怎么配置?…

查看全部问答>

送分!

坐沙发者即送分!…

查看全部问答>

请问谁有F2812的 on-chip flash programmer

请问谁有F2812的 on-chip flash programmer 我用的CCS 是CCS3.1 不知道可以从哪下载 有那个插件的朋友能不能飞一个给我   我的邮箱: shasha_zhu@yahoo.com.cn…

查看全部问答>

IAR 下如何设置 JTAG 以调试 MSP430F135啊

我下了个代码,也有个板子,代码是 IAR 工程的 MSP430 程序 板子上的 是MSPF135 的,留有JTAG 接口 用H-JTAG 似乎找不到这个芯片啊, 更不要说烧写了hex文件了。 以前都是IAR +H-JTAG + JTAG 板子,调试程序的。 现在想知道,MSP430 ,在IAR 如 ...…

查看全部问答>

LCD后面写着TS1640,这是什么意思?

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑    …

查看全部问答>

求大神打救我的交通灯

我的绿灯不会闪烁,求大神求救#include<AT89X52.H>sbit NSG=P1^0;sbit NSY=P1^1;sbit NSR=P1^2;sbit WEG=P1^3;sbit WEY=P1^4;sbit WER=P1^5; void Delay(z){ unsigned char i; TMOD=0X10; for(i=0;i<z;i++) { &nbs ...…

查看全部问答>

STM32 USB 初始化

最近在搞STM32的USB模块,要做一个功能就是程序要知道USB是否在连接状态,现在用的是 bDeviceState 这个变量 我在USB_init()中把这个变量初始化为  bDeviceState = UNCONNECTED;,这个变量在 上电初始化之后,会被USB Reset 初始化为:b ...…

查看全部问答>