Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ihbai
rt-thread
提交
3e8c03e9
R
rt-thread
项目概览
ihbai
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
3e8c03e9
编写于
3月 10, 2020
作者:
B
Bernard Xiong
提交者:
GitHub
3月 10, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3421 from ErnestChen1/master
[bsp] fix UART DMA TX
上级
a189eb6c
c1821b85
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
62 addition
and
2 deletion
+62
-2
bsp/stm32/libraries/HAL_Drivers/config/l4/uart_config.h
bsp/stm32/libraries/HAL_Drivers/config/l4/uart_config.h
+37
-1
bsp/stm32/libraries/HAL_Drivers/drv_usart.c
bsp/stm32/libraries/HAL_Drivers/drv_usart.c
+25
-1
未找到文件。
bsp/stm32/libraries/HAL_Drivers/config/l4/uart_config.h
浏览文件 @
3e8c03e9
...
@@ -61,7 +61,19 @@ extern "C" {
...
@@ -61,7 +61,19 @@ extern "C" {
}
}
#endif
/* UART1_DMA_RX_CONFIG */
#endif
/* UART1_DMA_RX_CONFIG */
#endif
/* BSP_UART1_RX_USING_DMA */
#endif
/* BSP_UART1_RX_USING_DMA */
#if defined(BSP_UART1_TX_USING_DMA)
#ifndef UART1_DMA_TX_CONFIG
#define UART1_DMA_TX_CONFIG \
{ \
.Instance = UART1_TX_DMA_INSTANCE, \
.request = UART1_TX_DMA_REQUEST, \
.dma_rcc = UART1_TX_DMA_RCC, \
.dma_irq = UART1_TX_DMA_IRQ, \
}
#endif
/* UART1_DMA_TX_CONFIG */
#endif
/* BSP_UART1_TX_USING_DMA */
#if defined(BSP_USING_UART2)
#if defined(BSP_USING_UART2)
#ifndef UART2_CONFIG
#ifndef UART2_CONFIG
#define UART2_CONFIG \
#define UART2_CONFIG \
...
@@ -85,6 +97,18 @@ extern "C" {
...
@@ -85,6 +97,18 @@ extern "C" {
#endif
/* UART2_DMA_RX_CONFIG */
#endif
/* UART2_DMA_RX_CONFIG */
#endif
/* BSP_UART2_RX_USING_DMA */
#endif
/* BSP_UART2_RX_USING_DMA */
#if defined(BSP_UART2_TX_USING_DMA)
#ifndef UART2_DMA_TX_CONFIG
#define UART2_DMA_TX_CONFIG \
{ \
.Instance = UART2_TX_DMA_INSTANCE, \
.request = UART2_TX_DMA_REQUEST, \
.dma_rcc = UART2_TX_DMA_RCC, \
.dma_irq = UART2_TX_DMA_IRQ, \
}
#endif
/* UART2_DMA_TX_CONFIG */
#endif
/* BSP_UART2_TX_USING_DMA */
#if defined(BSP_USING_UART3)
#if defined(BSP_USING_UART3)
#ifndef UART3_CONFIG
#ifndef UART3_CONFIG
#define UART3_CONFIG \
#define UART3_CONFIG \
...
@@ -108,6 +132,18 @@ extern "C" {
...
@@ -108,6 +132,18 @@ extern "C" {
#endif
/* UART3_DMA_RX_CONFIG */
#endif
/* UART3_DMA_RX_CONFIG */
#endif
/* BSP_UART3_RX_USING_DMA */
#endif
/* BSP_UART3_RX_USING_DMA */
#if defined(BSP_UART3_TX_USING_DMA)
#ifndef UART3_DMA_TX_CONFIG
#define UART3_DMA_TX_CONFIG \
{ \
.Instance = UART3_TX_DMA_INSTANCE, \
.request = UART3_TX_DMA_REQUEST, \
.dma_rcc = UART3_TX_DMA_RCC, \
.dma_irq = UART3_TX_DMA_IRQ, \
}
#endif
/* UART3_DMA_TX_CONFIG */
#endif
/* BSP_UART3_TX_USING_DMA */
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
...
...
bsp/stm32/libraries/HAL_Drivers/drv_usart.c
浏览文件 @
3e8c03e9
...
@@ -876,12 +876,36 @@ void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
...
@@ -876,12 +876,36 @@ void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
uart
=
(
struct
stm32_uart
*
)
huart
;
uart
=
(
struct
stm32_uart
*
)
huart
;
dma_isr
(
&
uart
->
serial
);
dma_isr
(
&
uart
->
serial
);
}
}
static
void
_dma_tx_complete
(
struct
rt_serial_device
*
serial
)
{
struct
stm32_uart
*
uart
;
rt_size_t
trans_total_index
;
rt_base_t
level
;
RT_ASSERT
(
serial
!=
RT_NULL
);
uart
=
rt_container_of
(
serial
,
struct
stm32_uart
,
serial
);
if
((
__HAL_DMA_GET_IT_SOURCE
(
&
(
uart
->
dma_tx
.
handle
),
DMA_IT_TC
)
!=
RESET
)
||
(
__HAL_DMA_GET_IT_SOURCE
(
&
(
uart
->
dma_tx
.
handle
),
DMA_IT_HT
)
!=
RESET
))
{
level
=
rt_hw_interrupt_disable
();
trans_total_index
=
__HAL_DMA_GET_COUNTER
(
&
(
uart
->
dma_tx
.
handle
));
rt_hw_interrupt_enable
(
level
);
if
(
trans_total_index
==
0
)
{
rt_hw_serial_isr
(
serial
,
RT_SERIAL_EVENT_TX_DMADONE
);
}
}
}
void
HAL_UART_TxCpltCallback
(
UART_HandleTypeDef
*
huart
)
void
HAL_UART_TxCpltCallback
(
UART_HandleTypeDef
*
huart
)
{
{
struct
stm32_uart
*
uart
;
struct
stm32_uart
*
uart
;
RT_ASSERT
(
huart
!=
NULL
);
RT_ASSERT
(
huart
!=
NULL
);
uart
=
(
struct
stm32_uart
*
)
huart
;
uart
=
(
struct
stm32_uart
*
)
huart
;
rt_hw_serial_isr
(
&
uart
->
serial
,
RT_SERIAL_EVENT_TX_DMADONE
);
_dma_tx_complete
(
&
uart
->
serial
);
}
}
#endif
/* RT_SERIAL_USING_DMA */
#endif
/* RT_SERIAL_USING_DMA */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录