|

楼主 |
发表于 2018-4-13 00:30:26
|
显示全部楼层
- #include "bsp.h"
- /*
- *********************************************************************************************************
- * 使用的串口,时钟和引脚配置
- *********************************************************************************************************
- */
- #define USARTx USART3
- #define USARTx_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE()
- #define USARTx_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
- #define USARTx_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
- #define USARTx_FORCE_RESET() __HAL_RCC_USART3_FORCE_RESET()
- #define USARTx_RELEASE_RESET() __HAL_RCC_USART3_RELEASE_RESET()
- #define USARTx_TX_PIN GPIO_PIN_8
- #define USARTx_TX_GPIO_PORT GPIOD
- #define USARTx_TX_AF GPIO_AF7_USART3
- #define USARTx_RX_PIN GPIO_PIN_9
- #define USARTx_RX_GPIO_PORT GPIOD
- #define USARTx_RX_AF GPIO_AF7_USART3
- /*
- *********************************************************************************************************
- * 变量
- *********************************************************************************************************
- */
- UART_HandleTypeDef UartHandle;
- /*
- *********************************************************************************************************
- * 函 数 名: HAL_UART_MspInit
- * 功能说明: 重定向HAL USART里面的此函数
- * 形 参:UART_HandleTypeDef类型结构体变量
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void HAL_UART_MspInit(UART_HandleTypeDef *huart)
- {
- GPIO_InitTypeDef GPIO_InitStruct;
- /*##-1- 使能GPIO和USART时钟 #################################*/
- /* Enable GPIO TX/RX clock */
- USARTx_TX_GPIO_CLK_ENABLE();
- USARTx_RX_GPIO_CLK_ENABLE();
- /* 使能USART时钟 */
- USARTx_CLK_ENABLE();
- /*##-2- 配置GPIO ##########################################*/
- /* 配置TX */
- GPIO_InitStruct.Pin = USARTx_TX_PIN;
- GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Alternate = USARTx_TX_AF;
- HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);
- /* 配置RX */
- GPIO_InitStruct.Pin = USARTx_RX_PIN;
- GPIO_InitStruct.Alternate = USARTx_RX_AF;
- HAL_GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStruct);
- }
- /*
- *********************************************************************************************************
- * 函 数 名: HAL_UART_MspInit
- * 功能说明: 重定向HAL USART里面的此函数
- * 形 参:UART_HandleTypeDef类型结构体变量
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
- {
- /*##-1- 复位串口 ##################################################*/
- USARTx_FORCE_RESET();
- USARTx_RELEASE_RESET();
- /*##-2- 关闭外设和GPIO时钟 #################################*/
- /* 配置TX IO到复位状态 */
- HAL_GPIO_DeInit(USARTx_TX_GPIO_PORT, USARTx_TX_PIN);
- /* 配置RX IO到复位状态 */
- HAL_GPIO_DeInit(USARTx_RX_GPIO_PORT, USARTx_RX_PIN);
- }
- /*
- *********************************************************************************************************
- * 函 数 名: bsp_InitUart
- * 功能说明: 初始化CPU的USART3串口硬件设备。未启用中断。
- * 形 参:无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void bsp_InitUart(void)
- {
-
- /*##-1- 配置串口外设 ######################################*/
- /* USART3工作在UART模式 */
- /* 配置如下:
- - 数据位 = 8 Bits
- - 停止位 = 1 bit
- - 奇偶校验位 = 无
- - 波特率 = 115200bsp
- - 硬件流控制 (RTS 和 CTS 信号) */
- UartHandle.Instance = USART3;
- UartHandle.Init.BaudRate = 115200;
- UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
- UartHandle.Init.StopBits = UART_STOPBITS_1;
- UartHandle.Init.Parity = UART_PARITY_NONE;
- UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- UartHandle.Init.Mode = UART_MODE_TX_RX;
- UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
- UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- if(HAL_UART_DeInit(&UartHandle) != HAL_OK)
- {
- Error_Handler();
- }
- if(HAL_UART_Init(&UartHandle) != HAL_OK)
- {
- Error_Handler();
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: fputc
- * 功能说明: 重定义putc函数,这样可以使用printf函数从串口1打印输出
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- int fputc(int ch, FILE *f)
- {
- HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
- return ch;
- }
- /*
- *********************************************************************************************************
- * 函 数 名: fgetc
- * 功能说明: 重定义getc函数,这样可以使用scanff函数从串口1输入数据
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- int fgetc(FILE *f)
- {
- int ret;
-
- HAL_UART_Receive(&UartHandle, (uint8_t *)&ret, 1, HAL_MAX_DELAY);
- return ret;
- }
- /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
复制代码
|
|