Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
8973fa9d
R
rt-thread
项目概览
BaiXuePrincess
/
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看板
提交
8973fa9d
编写于
8月 29, 2018
作者:
Lawlieta
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp][stm32f4xx-HAL] Add uart3 driver
上级
240451b9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
69 addition
and
5 deletion
+69
-5
bsp/stm32f4xx-HAL/Kconfig
bsp/stm32f4xx-HAL/Kconfig
+6
-2
bsp/stm32f4xx-HAL/drivers/drv_usart.c
bsp/stm32f4xx-HAL/drivers/drv_usart.c
+63
-3
未找到文件。
bsp/stm32f4xx-HAL/Kconfig
浏览文件 @
8973fa9d
...
...
@@ -303,8 +303,12 @@ config RT_USING_UART1
config RT_USING_UART2
bool "Using UART2"
default n
default n
config RT_USING_UART3
bool "Using UART3"
default n
config RT_USING_UART6
bool "Using UART6"
default n
...
...
bsp/stm32f4xx-HAL/drivers/drv_usart.c
浏览文件 @
8973fa9d
...
...
@@ -193,8 +193,31 @@ void USART2_IRQHandler(void)
}
#endif
/* RT_USING_UART2 */
#if defined(RT_USING_UART3)
/* UART3 device driver structure */
static
struct
drv_uart
uart3
;
struct
rt_serial_device
serial3
;
void
USART3_IRQHandler
(
void
)
{
struct
drv_uart
*
uart
;
uart
=
&
uart3
;
/* enter interrupt */
rt_interrupt_enter
();
/* UART in mode Receiver -------------------------------------------------*/
if
((
__HAL_UART_GET_FLAG
(
&
uart
->
UartHandle
,
UART_FLAG_RXNE
)
!=
RESET
)
&&
(
__HAL_UART_GET_IT_SOURCE
(
&
uart
->
UartHandle
,
UART_IT_RXNE
)
!=
RESET
))
{
rt_hw_serial_isr
(
&
serial3
,
RT_SERIAL_EVENT_RX_IND
);
/* Clear RXNE interrupt flag */
__HAL_UART_CLEAR_FLAG
(
&
uart
->
UartHandle
,
UART_FLAG_RXNE
);
}
/* leave interrupt */
rt_interrupt_leave
();
}
#endif
/* RT_USING_UART3 */
#if defined(RT_USING_UART6)
/* UART
2
device driver structure */
/* UART
6
device driver structure */
static
struct
drv_uart
uart6
;
struct
rt_serial_device
serial6
;
void
USART6_IRQHandler
(
void
)
...
...
@@ -214,7 +237,7 @@ void USART6_IRQHandler(void)
/* leave interrupt */
rt_interrupt_leave
();
}
#endif
/* RT_USING_UART
3
*/
#endif
/* RT_USING_UART
6
*/
/**
* @brief UART MSP Initialization
...
...
@@ -260,6 +283,22 @@ void HAL_UART_MspInit(UART_HandleTypeDef *uartHandle)
GPIO_InitStruct
.
Alternate
=
GPIO_AF7_USART2
;
HAL_GPIO_Init
(
GPIOA
,
&
GPIO_InitStruct
);
}
else
if
(
uartHandle
->
Instance
==
USART3
)
{
/* USART3 clock enable */
__HAL_RCC_USART3_CLK_ENABLE
();
__HAL_RCC_GPIOB_CLK_ENABLE
();
/**USART3 GPIO Configuration
PB10 ------> USART3_TX
PB11 ------> USART3_RX
*/
GPIO_InitStruct
.
Pin
=
GPIO_PIN_10
|
GPIO_PIN_11
;
GPIO_InitStruct
.
Mode
=
GPIO_MODE_AF_PP
;
GPIO_InitStruct
.
Pull
=
GPIO_PULLUP
;
GPIO_InitStruct
.
Speed
=
GPIO_SPEED_FREQ_VERY_HIGH
;
GPIO_InitStruct
.
Alternate
=
GPIO_AF7_USART3
;
HAL_GPIO_Init
(
GPIOB
,
&
GPIO_InitStruct
);
}
else
if
(
uartHandle
->
Instance
==
USART6
)
{
/* USART6 clock enable */
...
...
@@ -300,6 +339,16 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef *uartHandle)
*/
HAL_GPIO_DeInit
(
GPIOA
,
GPIO_PIN_2
|
GPIO_PIN_3
);
}
else
if
(
uartHandle
->
Instance
==
USART3
)
{
/* Peripheral clock disable */
__HAL_RCC_USART3_CLK_DISABLE
();
/**USART3 GPIO Configuration
PB10 ------> USART3_TX
PB11 ------> USART3_RX
*/
HAL_GPIO_DeInit
(
GPIOB
,
GPIO_PIN_10
|
GPIO_PIN_11
);
}
else
if
(
uartHandle
->
Instance
==
USART6
)
{
/* Peripheral clock disable */
...
...
@@ -338,6 +387,17 @@ int hw_usart_init(void)
RT_DEVICE_FLAG_RDWR
|
RT_DEVICE_FLAG_INT_RX
,
uart
);
#endif
/* RT_USING_UART2 */
#ifdef RT_USING_UART3
uart
=
&
uart3
;
uart
->
UartHandle
.
Instance
=
USART3
;
uart
->
irq
=
USART3_IRQn
;
serial3
.
ops
=
&
drv_uart_ops
;
serial3
.
config
=
config
;
/* register UART3 device */
rt_hw_serial_register
(
&
serial3
,
"uart3"
,
RT_DEVICE_FLAG_RDWR
|
RT_DEVICE_FLAG_INT_RX
,
uart
);
#endif
/* RT_USING_UART3 */
#ifdef RT_USING_UART6
uart
=
&
uart6
;
uart
->
UartHandle
.
Instance
=
USART6
;
...
...
@@ -348,7 +408,7 @@ int hw_usart_init(void)
rt_hw_serial_register
(
&
serial6
,
"uart6"
,
RT_DEVICE_FLAG_RDWR
|
RT_DEVICE_FLAG_INT_RX
,
uart
);
#endif
/* RT_USING_UART
2
*/
#endif
/* RT_USING_UART
6
*/
return
0
;
}
INIT_BOARD_EXPORT
(
hw_usart_init
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录