Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ADC值非常高,可以';我不能在串行端口读取它_C_Stm32_Adc_Stm32cubeide_Stm32cubemx - Fatal编程技术网

ADC值非常高,可以';我不能在串行端口读取它

ADC值非常高,可以';我不能在串行端口读取它,c,stm32,adc,stm32cubeide,stm32cubemx,C,Stm32,Adc,Stm32cubeide,Stm32cubemx,您好,我使用CubeMX和Hal lib获得了STM32F01C8T6的以下代码: uint32_t value; while (1) { HAL_ADC_Start (&hadc1); HAL_ADC_PollForConversion (&hadc1, 1000); value = HAL_ADC_GetValue (&hadc1); HAL_UART_Transmit (&huart1,value,

您好,我使用CubeMX和Hal lib获得了STM32F01C8T6的以下代码:

  uint32_t value;
  while (1)
  {
      HAL_ADC_Start (&hadc1);
      HAL_ADC_PollForConversion (&hadc1, 1000);
      value = HAL_ADC_GetValue (&hadc1);
      HAL_UART_Transmit (&huart1,value, 14, 50);
      HAL_ADC_Stop (&hadc1);
      HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
      HAL_Delay(500);
  }

ADC输入为3.3V,串行端口测试正常

在调试模式下,值为:536880200,在串行端口中,仅打印坏字,如!,(丁)_+(

引脚和ADC配置: [1] :

完整的main.c代码:

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "adc.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  /* USER CODE BEGIN 2 */
  uint32_t value;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
      HAL_ADC_Start (&hadc1);
      HAL_ADC_PollForConversion (&hadc1, 1000);
      value = HAL_ADC_GetValue (&hadc1);
      HAL_UART_Transmit (&huart1,value, 14, 50);
      HAL_ADC_Stop (&hadc1);
      HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
      HAL_Delay(500);
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB buses clocks
  */
  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_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
  PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6;
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    Error_Handler();
  }
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

/*用户代码开始标题*/
/**
******************************************************************************
*@file:main.c
*@brief:Main program body
******************************************************************************
*@注意
*
*©;版权所有(c)2021 STMicroelectronics。
*版权所有。
*
*本软件组件由ST根据BSD 3条款许可证进行许可,
*“许可证”;除非符合
*许可证。您可以通过以下方式获得许可证副本:
*opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/*用户代码结束头*/
/*包括------------------------------------------------------------------*/
#包括“main.h”
#包括“adc.h”
#包括“usart.h”
#包括“gpio.h”
/*私人包括----------------------------------------------------------*/
/*用户代码开始包括*/
/*用户代码端包括*/
/*私有类型定义-----------------------------------------------------------*/
/*用户代码开始PTD*/
/*用户代码结束PTD*/
/*私有定义------------------------------------------------------------*/
/*用户代码BEGIN PD*/
/*用户代码结束PD*/
/*私有宏-------------------------------------------------------------*/
/*用户代码开始PM*/
/*用户代码结束PM*/
/*私有变量---------------------------------------------------------*/
/*用户代码开始PV*/
/*用户代码结束PV*/
/*私有函数原型-----------------------------------------------*/
无效系统时钟配置(无效);
/*用户代码开始PFP*/
/*用户代码端PFP*/
/*专用用户代码---------------------------------------------------------*/
/*用户代码从0开始*/
/*用户代码结束0*/
/**
*@简要介绍应用程序入口点。
*@retval int
*/
内部主(空)
{
/*用户代码开始1*/
/*用户代码结束1*/
/*微控制器配置--------------------------------------------------------*/
/*重置所有外围设备,初始化闪存接口和Systick*/
HAL_Init();
/*用户代码开始初始化*/
/*用户代码结束初始化*/
/*配置系统时钟*/
SystemClock_Config();
/*用户代码BEGIN SysInit*/
/*用户代码结束SysInit*/
/*初始化所有配置的外围设备*/
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_ADC1_Init();
/*用户代码开始2*/
uint32_t值;
/*用户代码结束2*/
/*无限循环*/
/*用户代码在*/
而(1)
{
/*用户代码结束时*/
/*用户代码开始3*/
HAL_ADC_启动(&hadc1);
HAL_ADC_PollForConversion(&hadc1,1000);
value=HAL\u ADC\u GetValue(&hadc1);
HAL_UART_传输(和huart1,值14,50);
HAL_ADC_停止(&hadc1);
HAL_GPIO_开关引脚(LED_GPIO_端口,LED_引脚);
HAL_延迟(500);
}
/*用户代码结束3*/
}
/**
*@简要系统时钟配置
*@retval无
*/
无效系统时钟配置(无效)
{
RCC_oscintypedef RCC_OscInitStruct={0};
RCC_ClkInitTypeDef RCC_ClkInitStruct={0};
RCC_PeriphCLKInitTypeDef PeriphClkInit={0};
/**根据指定参数初始化RCC振荡器
*在RCC_oscintypedef结构中。
*/
RCC_OscInitStruct.OscillatorType=RCC_OscillatorType_HSE;
RCC_OscInitStruct.HSEState=RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue=RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState=RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSource_HSE;
RCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL9;
如果(HAL_RCC_OscConfig(&RCC_OscInitStruct)!=HAL_OK)
{
错误处理程序();
}
/**初始化CPU、AHB和APB总线时钟
*/
RCC_ClkInitStruct.ClockType=RCC_ClockType_HCLK | RCC_ClockType_SYSCLK
|RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSource_PLLCLK;
RCC\u ClkInitStruct.AHBCLKDivider=RCC\u SYSCLK\u DIV1;
RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;
如果(HAL\u RCC\u时钟配置(&RCC\u时钟结构、闪存延迟2)!=HAL\u正常)
{
错误处理程序();
}
PeriphClkInit.PeriphClockSelection=RCC\u PERIPHCLK\u ADC;
PeriphClkInit.AdcClockSelection=RCC_ADCPCLK2_DIV6;
if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit)!=HAL_OK)
{
错误处理程序();
}
}
/*用户代码开始4*/
/*用户代码结束4*/
/**
*@brief发生错误时执行此功能。
*@retval无
*/
无效错误\u处理程序(无效)
{
/*用户代码开始错误\u处理程序\u调试*/
/*用户可以添加自己的实现来报告HAL错误返回状态*/
__禁用_irq();
而(1)
{
}
/*用户代码结束错误\u处理程序\u调试*/
}
#ifdef使用_FULL_断言
/**
*@brief报告源文件的名称和源行号
*发生断言参数错误的位置。
*@param file:指向源文件名的指针
*@param-line:assert_-param错误行源编号
*@retval无
*/
无效断言失败(uint8\u t*文件,uint32\u t行)
{
/*用户代码开始6*/
/*用户可以添加自己的实现来报告文件名和行号,
例如:printf(“错误的参数值:第%d行的文件%s\r\n”,文件,第行)*/
/*用户代码结束6*/
}
#endif/*使用完整断言*/
/************************(C)STMicroelectronics版权所有******文件结束****/
ADC值在调试模式下太高,我无法在串行端口中读取它。如何修复它


谢谢。

第二个参数是char buffer[16]; int length = snprintf(buffer, sizeof buffer, "%u\n", (unsigned int)value); if (length > 0) { if (length >= sizeof buffer) { length = ((sizeof buffer) - 1); } HAL_UART_Transmit (&huart1, (uint8_t*)buffer, length, 50); }