STM32
登录
直播中
康桃花
7年用户
916经验值
私信
关注
[问答]
STM32F103的USART3串口DMA接收缓冲区发生错误的原因
开启该帖子的消息推送
STM32F103
USART
STM32
F103的USART3串口DMA接收缓冲区发生错误的原因?如何解决?
回帖
(1)
吴纯英
2021-12-9 15:45:59
在测试STM32F103系列MCU串口DMA接收的过程中,使用了空闲中断(IDLE),在开始用USART1的时候都是正常的,后来换到USART3时,上位机发送8字节,进入空闲中断时读DMA接收缓冲区只有四个字节的数据,且数据不对,刚开始检查DMA配置和串口配置跟USART1都一样,百思不得其解,直到看到串口使能时钟的寄存器设置:
USART1的设置为
RCC->APB2ENR|=1<<14;
USART3的设置为
RCC->APB1ENR|=1<<18;
查看《STM32中文参考手册_V10.pdf》P.25的系统结构框图,USART1是挂载在APB2上,而USART3挂载在APB1上。
再看参考手册P.56中的时钟树框图,APB2的最大频率是72MHz,而APB1的最大允许频率是36MHz。
USART1的初始化函数为
uart_init(72,115200);
USART3照搬USART1的时钟频率设置参数是会出错的,把参数改为36Mhz再调试,接收就正确了。
在测试STM32F103系列MCU串口DMA接收的过程中,使用了空闲中断(IDLE),在开始用USART1的时候都是正常的,后来换到USART3时,上位机发送8字节,进入空闲中断时读DMA接收缓冲区只有四个字节的数据,且数据不对,刚开始检查DMA配置和串口配置跟USART1都一样,百思不得其解,直到看到串口使能时钟的寄存器设置:
USART1的设置为
RCC->APB2ENR|=1<<14;
USART3的设置为
RCC->APB1ENR|=1<<18;
查看《STM32中文参考手册_V10.pdf》P.25的系统结构框图,USART1是挂载在APB2上,而USART3挂载在APB1上。
再看参考手册P.56中的时钟树框图,APB2的最大频率是72MHz,而APB1的最大允许频率是36MHz。
USART1的初始化函数为
uart_init(72,115200);
USART3照搬USART1的时钟频率设置参数是会出错的,把参数改为36Mhz再调试,接收就正确了。
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32F103
USART
stm32f103
串口
3
程序为什么会频繁进入
串口
接收
中断呢
2021-11-16
1426
如何去实现
STM32F103
的
USART3
使用
DMA
模块的程序代码
2021-12-13
1427
求大佬分享
stm32f103
串口
dma
配置实例
2021-12-06
549
STM32F103
串口
使用
DMA
交替发送和
接收
2021-08-28
2547
STM32f103
串口
接收
不定长数据的方法有哪几种?
2021-12-07
1145
STM32
串口
环形
缓冲区
的实现方法
2020-12-24
1860
怎样去重写
STM32F103
串口
配置的模板函数呢
2021-12-07
1129
请问
串口
的
DMA
接收
缓冲区
是不是环形
缓冲区
2022-08-30
1232
如何解决
STM32F103
系列HAL库
DMA
串口
收发频繁出现帧
错误
的问题?
2021-12-14
3141
怎样去解决
STM32F103
DMA
串口
空闲
接收
卡顿的问题呢
2021-12-08
1802
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分