你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
技术帖
话题
资源
创客秀
视频
标签
积分商城
每日签到
STM32 2个串口互发数据卡死,丢字节!
[复制链接]
Terry123
提问时间:2016-10-14 00:35 /
阅读主题, 点击返回1楼
赞
0
收藏
1
评论
18
分享
发布时间:2016-10-14 00:35
请先
登录
后回复
18个回答
Terry123
回答时间:2016-10-14 23:04:18
a0a.1 32b0c
本帖最后由 tianyukobe 于 2016-10-14 23:09 编辑
安 发表于 2016-10-14 14:44
难道不能在线仿真吗?通过仿真,查看各个寄存器的值,变量的值
<div class="blockcode"><blockquote>//DMA发送
void Usart2SendData_DMA(uint8_t *pdata, uint16_t Length)
{
while(Uart2_Config.DmaSend_Flag == USART_DMA_SENDING);
Uart2_Config.DmaSend_Flag = USART_DMA_SENDING;
HAL_UART_Transmit_DMA(&huart2, pdata, Length);
}
void Usart3SendData_DMA(uint8_t *pdata, uint16_t Length)
{
while(Uart3_Config.DmaSend_Flag == USART_DMA_SENDING);
Uart3_Config.DmaSend_Flag = USART_DMA_SENDING;
HAL_UART_Transmit_DMA(&huart3, pdata, Length);
}
//DMA发送完成回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==USART2)
{
__HAL_DMA_DISABLE(huart->hdmatx);
Uart2_Config.DmaSend_Flag = USART_DMA_SENDOVER;
}
else if(huart->Instance==USART3)
{
__HAL_DMA_DISABLE(huart->hdmatx);
Uart3_Config.DmaSend_Flag = USART_DMA_SENDOVER;
}
}
复制代码
程序会卡在这while(Uart2_Config.DmaSend_Flag == USART_DMA_SENDING); 也就是回调函数不是百分百的能清除标志,我以为10ms双向发太快了,改成20ms,效果会好一点 但是还是会卡死
赞
0
评论
回复
支持
反对
assssdz
回答时间:2016-10-15 00:08:34
a1024a.1 32b0c
赞
0
评论
回复
支持
反对
废鱼
回答时间:2016-10-15 09:27:40
a0a.1 32b0c
计算一下波特率发送一组数据需要的时间。
赞
0
评论
回复
支持
反对
原田夜舞love
回答时间:2016-10-15 22:03:51
a1024a.1 32b0c
帮顶了!
赞
0
评论
回复
支持
反对
1
2
/ 2 页
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表