STM32L0 HAL 串口问题
来源:互联网 发布:恋夜秀场软件下载 编辑:程序博客网 时间:2024/06/05 15:12
这两天在玩STM32L0,但是串口怎么调试都有问题。数据位选择8B,显示如下:
数据位选择7B时:
而我的输出应该是:printf("123456\n");printf("testing\n");
下面时我的程序:
//时钟初始化void SystemClockConfig( void ){ RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInit;__HAL_RCC_SYSCFG_CLK_ENABLE( ); __HAL_RCC_PWR_CLK_ENABLE( ); __HAL_PWR_VOLTAGESCALING_CONFIG( PWR_REGULATOR_VOLTAGE_SCALE1 );//__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE;//内部高速时钟8M 和 外部低速32.768K RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_4; RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2; if( HAL_RCC_OscConfig( &RCC_OscInitStruct ) != HAL_OK ) { assert_param( FAIL ); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if( HAL_RCC_ClockConfig( &RCC_ClkInitStruct, FLASH_LATENCY_1 ) != HAL_OK ) { assert_param( FAIL ); } PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_RTC; PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_PCLK1; PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; if( HAL_RCCEx_PeriphCLKConfig( &PeriphClkInit ) != HAL_OK ) { assert_param( FAIL ); } HAL_SYSTICK_Config( HAL_RCC_GetHCLKFreq( ) / 1000 ); HAL_SYSTICK_CLKSourceConfig( SYSTICK_CLKSOURCE_HCLK ); // SysTick_IRQn interrupt configuration HAL_NVIC_SetPriority( SysTick_IRQn, 0, 0 );}UART.C
/******************************************************************************* Copyright 2017-2030 DaPu Co.* FileName: uart_new.c * Desc:* * * Author: CGH* Date: 2017/10/12* Notes: * * -----------------------------------------------------------------* Histroy: v1.0 2017/10/12, CGH create this file* ******************************************************************************//*------------------------------- Includes ----------------------------------*/#include "board.h"#include "uart_new.h"#include "gpio.h"#include "delay.h"/*------------------- Global Definitions and Declarations -------------------*//*------------------------ Constant / Macro Definitions ---------------------*//*------------------------- Type Declarations -------------------------------*//*------------------------- Function Prototype ------------------------------*//*------------------------- Variable Declarations ---------------------------*/UART_HandleTypeDef husart_debug;uint8_t RxDatabuf;/*------------------------- Function Implement ------------------------------*//** * 函数功能: 串口硬件初始化配置 * 输入参数: huart:串口句柄类型指针 * 返 回 值: 无 * 说 明: 该函数被HAL库内部调用 */void HAL_UART_MspInit(UART_HandleTypeDef* huart){ GPIO_InitTypeDef GPIO_InitStruct; Gpio_t TX,RX; if(huart->Instance==DEBUG_USARTx) { /* 串口外设时钟使能 */ DEBUG_USART_RCC_CLK_ENABLE(); DEBUG_USARTx_GPIO_ClK_ENABLE(); /* 串口外设功能GPIO配置 */ //GpioInit( &TX, UART_TX, PIN_ALTERNATE_FCT, PIN_PUSH_PULL, PIN_PULL_UP, GPIO_AF4_USART1 ); //GpioInit( &RX, UART_RX, PIN_INPUT, PIN_PUSH_PULL, PIN_PULL_UP, GPIO_AF4_USART1 ); GPIO_InitStruct.Pin = DEBUG_USARTx_Tx_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_AF4_USART1; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF4_USART1; HAL_GPIO_Init(DEBUG_USARTx_Tx_GPIO, &GPIO_InitStruct); GPIO_InitStruct.Pin = DEBUG_USARTx_Rx_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; //GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Alternate = GPIO_AF4_USART1; HAL_GPIO_Init(DEBUG_USARTx_Rx_GPIO, &GPIO_InitStruct); GpioWrite(&Led2,1); Delay(3); }}/** * 函数功能: 串口硬件反初始化配置 * 输入参数: huart:串口句柄类型指针 * 返 回 值: 无 * 说 明: 该函数被HAL库内部调用 */void HAL_UART_MspDeInit(UART_HandleTypeDef* huart){ if(huart->Instance==DEBUG_USARTx) { /* 串口外设时钟禁用 */ DEBUG_USART_RCC_CLK_DISABLE(); /* 串口外设功能GPIO配置 */ HAL_GPIO_DeInit(DEBUG_USARTx_Tx_GPIO, DEBUG_USARTx_Tx_GPIO_PIN); HAL_GPIO_DeInit(DEBUG_USARTx_Rx_GPIO, DEBUG_USARTx_Rx_GPIO_PIN); /* 串口中断禁用 */ HAL_NVIC_DisableIRQ(DEBUG_USART_IRQn); }}/** * 函数功能: 串口参数配置. * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */void MX_DEBUG_USART_Init(void){ int ret = -1; __HAL_RCC_USART1_FORCE_RESET( ); __HAL_RCC_USART1_RELEASE_RESET( ); __HAL_RCC_USART1_CLK_ENABLE( ); /* 使能串口功能引脚GPIO时钟 */ DEBUG_USARTx_GPIO_ClK_ENABLE(); husart_debug.Instance = DEBUG_USARTx; husart_debug.Init.BaudRate = DEBUG_USARTx_BAUDRATE; husart_debug.Init.WordLength = UART_WORDLENGTH_8B; husart_debug.Init.StopBits = UART_STOPBITS_1; husart_debug.Init.Parity = UART_PARITY_NONE; husart_debug.Init.Mode = UART_MODE_TX_RX; husart_debug.Init.HwFlowCtl = UART_HWCONTROL_NONE; husart_debug.Init.OverSampling = UART_OVERSAMPLING_16; ret = HAL_UART_Init(&husart_debug); if(ret != HAL_OK) { GpioWrite(&Led2,0); } else { GpioWrite(&Led3,1); } /* 串口中断起用 */ HAL_NVIC_SetPriority( USART1_IRQn, 1, 0 ); HAL_NVIC_EnableIRQ( USART1_IRQn ); /* Enable the UART Data Register not empty Interrupt */ HAL_UART_Receive_IT( &husart_debug, &RxDatabuf, 1 );}UART.H
/******************************************************************************* Copyright 2017-2030 DaPu Co.* FileName: uart_new.h * Desc:* * * Author: CGH* Date: 2017/10/12* Notes: * * -----------------------------------------------------------------* Histroy: v1.0 2017/10/12, CGH create this file* ******************************************************************************/#ifndefUART_NEW_H#defineUART_NEW_H/*------------------------------- Includes ----------------------------------*/#include "stm32l0xx_hal.h"#include <stdio.h>/*----------------------------- Global Defines ------------------------------*/#define DEBUG_USARTx USART1#define DEBUG_USARTx_BAUDRATE 9600#define DEBUG_USART_RCC_CLK_ENABLE() __HAL_RCC_USART1_FORCE_RESET();\\ __HAL_RCC_USART1_RELEASE_RESET();\\ __HAL_RCC_USART1_CLK_ENABLE()#define DEBUG_USART_RCC_CLK_DISABLE() __HAL_RCC_USART1_CLK_DISABLE()#define DEBUG_USARTx_GPIO_ClK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()#define DEBUG_USARTx_Tx_GPIO_PIN GPIO_PIN_9#define DEBUG_USARTx_Tx_GPIO GPIOA#define DEBUG_USARTx_Rx_GPIO_PIN GPIO_PIN_10#define DEBUG_USARTx_Rx_GPIO GPIOA#define DEBUG_USART_IRQn USART1_IRQn/*----------------------------- Global Typedefs -----------------------------*//*----------------------------- External Variables --------------------------*/extern UART_HandleTypeDef husart_debug;/*------------------------ Global Function Prototypes -----------------------*/extern void MX_DEBUG_USART_Init(void);#endif希望各路兄台帮忙看看!!!感谢不尽!
阅读全文
0 0
- STM32L0 HAL 串口问题
- STM32L0 HAL库 IO读写功能
- STM32 HAL库DMA串口使用问题集锦
- 安卓 hal 串口驱动学习。。。
- STM32F746 利用HAL库编写串口驱动程序
- stm32f405 HAL库串口接收错误。
- HAL 编程问题手记
- hal HAL_FLASH_Program 擦除的问题
- 串口问题
- 串口问题
- 串口问题
- ZSTACK HAL 硬件修改部分(端口,按键,串口SPI)
- STM32l151低功耗芯片串口通信(HAL库)
- stm32f7 HAL库 串口重定向 使用printf
- STM32F4的HAL库开启串口空闲中断
- STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)
- stm32l011F4之 HAL库串口不定长收发(fifo接收)
- STM32 HAL 库, 配置串口DMA接收及空闲中断
- Lua中的元表与元方法学习总结
- pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st
- 快速幂—LintCode
- opencv Python学习笔记(三)调色板加跟随鼠标绘图
- Linux free -m 详细说明
- STM32L0 HAL 串口问题
- 【《Real-Time Rendering 3rd》 提炼总结】(七) 第七章续 · 延迟渲染(Deferred Rendering)的前生今世
- Linux下安装nginx
- springboot启动正常,但出现404错误,导致无法访问
- Final、finally代码块、finalize()三者的区别
- linux连接代理服务器
- CentOS7更新yum源
- 截取某段字符后面的所有字符
- JDBC的粗略介绍