历史上的今天
今天是: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发送是完全正常了。
史海拾趣
|
IO引脚配置和输入输出实验 在前几个实验中,我们一直在研究ARM核心东西。本次实验,我们要把最基本的外设----IO引脚学习一下。学习中要注意的几个问题:1、定时器时钟源的倍频分频。2、理解匹配及如何产生中断。3、产生中断后,如何跳转到中断函数 ...… 查看全部问答> |
|
是SPI初始化代码,也不是每次都会有异常,偶尔重新烧写NK的时候才出现。奇怪这如果错误了,怎么不是每次都出现! 定义: typedef struct __SPIRX_BUFFER_INFO { ULONG Read; &nbs ...… 查看全部问答> |
|
首先向各位回帖帮助的朋友问个好! 我最近在调试一个西门子MC52i的无线模块,想利用其支持的FTP协议来远程传送文件数据,但利用AT指令资料里提供的内容无法正常的拨号建立FTP连接。问题如下: //初始化检测 AT   ...… 查看全部问答> |
|
请问谁有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 如 ...… 查看全部问答> |
|
我的绿灯不会闪烁,求大神求救#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模块,要做一个功能就是程序要知道USB是否在连接状态,现在用的是 bDeviceState 这个变量 我在USB_init()中把这个变量初始化为 bDeviceState = UNCONNECTED;,这个变量在 上电初始化之后,会被USB Reset 初始化为:b ...… 查看全部问答> |




