国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32+HAL庫使用ADC輪詢模式采集音頻信號

這篇具有很好參考價(jià)值的文章主要介紹了STM32+HAL庫使用ADC輪詢模式采集音頻信號。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ADC模塊:咪頭聲音采集模塊

stm32 adc采集音頻信號,STM32實(shí)驗(yàn)記錄,stm32

ADC輪詢模式

缺點(diǎn):占用CPU的使用率

????????軟件開始ADC轉(zhuǎn)換后,一直等到轉(zhuǎn)換完成后,才向后執(zhí)行,這個(gè)代碼在初始化ADC之后執(zhí)行一次校準(zhǔn)(不執(zhí)行這一步也可以,但精度可能會(huì)低一些);然后就可以使用ADC輪詢轉(zhuǎn)換了,只需要三步:啟動(dòng)轉(zhuǎn)換等待轉(zhuǎn)換完成、讀取轉(zhuǎn)換數(shù)據(jù),即可完成一次ADC轉(zhuǎn)換。?

1 開啟外部高速時(shí)鐘stm32 adc采集音頻信號,STM32實(shí)驗(yàn)記錄,stm32


2 配置時(shí)鐘樹stm32 adc采集音頻信號,STM32實(shí)驗(yàn)記錄,stm32


3 USART配置stm32 adc采集音頻信號,STM32實(shí)驗(yàn)記錄,stm32


4 ADC配置stm32 adc采集音頻信號,STM32實(shí)驗(yàn)記錄,stm32


5 代碼配置

//串口重定向
#include "stdio.h"

int fgetc(FILE *f)
{
  uint8_t ch=0;
  HAL_UART_Receive(&huart2,&ch,1,0xffff);
  return ch;
}

int fputc(int ch,FILE *f)
{
  uint8_t temp[1]={ch};
  HAL_UART_Transmit(&huart2,temp,1,2);
  return ch;
}
/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2022 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* 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 */
__IO uint32_t AD_value;    			// ADC轉(zhuǎn)換值  
/* 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_ADC1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		HAL_ADC_Start(&hadc1);    //啟動(dòng)轉(zhuǎn)換
		if(HAL_OK == HAL_ADC_PollForConversion(&hadc1 , 50))//等待轉(zhuǎn)換完成,超時(shí)50ms
		{
			AD_value = HAL_ADC_GetValue(&hadc1);    //讀取ADC轉(zhuǎn)換結(jié)果	
		}		
		printf("%d\n",AD_value);
        HAL_Delay(10); 
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

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

  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  /** 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.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 4;
  RCC_OscInitStruct.PLL.PLLN = 72;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 4;
  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();
  }
}

/* USER CODE BEGIN 4 */
//中斷回調(diào)函數(shù)
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
	ADC_value = HAL_ADC_GetValue(&hadc1);    //獲取ADC轉(zhuǎn)換
}
/* 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 */

6 串口打印電壓(音頻)值stm32 adc采集音頻信號,STM32實(shí)驗(yàn)記錄,stm32文章來源地址http://www.zghlxwxcb.cn/news/detail-552894.html

到了這里,關(guān)于STM32+HAL庫使用ADC輪詢模式采集音頻信號的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32L051使用HAL庫操作實(shí)例(14)- ADC采集電壓

    STM32L051使用HAL庫操作實(shí)例(14)- ADC采集電壓

    目錄 一、前言 二、ADC外設(shè)簡要說明 三、STM32CubeMX配置(本文使用的STM32CubeMX版本為6.1.2) 1.MCU選型 2.時(shí)鐘使能 3.外部時(shí)鐘配置 4.串口配置 5.ADC引腳配置 6.配置STM32CubeMX生成工程文件 7.點(diǎn)擊GENERATE CODE生成工程文件 四、工程源碼 五、運(yùn)行狀態(tài) 一、前言 本文主要介紹通過HAL庫搭建

    2024年01月16日
    瀏覽(28)
  • STM32_HAL庫—ADC采集數(shù)據(jù)

    STM32_HAL庫—ADC采集數(shù)據(jù)

    目錄 一、簡介 二、實(shí)例 1. (單通道、阻塞式)配置及實(shí)現(xiàn)方式 2. (單通道、中斷式)配置及實(shí)現(xiàn)方式 3. (多通道、阻塞式)配置及實(shí)現(xiàn)方式 4. (多通道、DMA)配置及實(shí)現(xiàn)方式 ???????STM32?的ADC精度為 12 位,且每個(gè) ADC 最多有 16 個(gè)外部通道。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或

    2024年02月10日
    瀏覽(30)
  • 基于stm32+HAL庫的ADC電壓采集實(shí)驗(yàn)

    基于stm32+HAL庫的ADC電壓采集實(shí)驗(yàn)

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 只會(huì)用if的大神提醒您,敵軍還有30秒到達(dá)戰(zhàn)場,碾碎他們!白銀局不要怕! 軟件:keil5、stm32cubemx、串口調(diào)試助手 硬件:stm32f103系列的開發(fā)板、杜邦線*1、串口工具 僅此而已?。。≌?神 1、打開cube

    2023年04月15日
    瀏覽(25)
  • STM32CubeMX配置STM32G031多通道ADC采集(HAL庫開發(fā))

    STM32CubeMX配置STM32G031多通道ADC采集(HAL庫開發(fā))

    時(shí)鐘配置HSI主頻配置64M ?勾選打開8個(gè)通道的ADC ?使能連續(xù)轉(zhuǎn)換模式 ?配置好串口,選擇異步模式 配置好需要的開發(fā)環(huán)境并獲取代碼 ?修改main.c 串口重定向 ?串口重定向一定要勾選Use Micro LIB ?獲取ADC通道值 主函數(shù)? ?串口輸出

    2024年02月15日
    瀏覽(31)
  • 【STM32】CUBEMX之串口:串口三種模式(輪詢模式、中斷模式、DMA模式)的配置與使用示例 + 串口重定向 + 使用HAL擴(kuò)展函數(shù)實(shí)現(xiàn)不定長數(shù)據(jù)接收

    【STM32】CUBEMX之串口:串口三種模式(輪詢模式、中斷模式、DMA模式)的配置與使用示例 + 串口重定向 + 使用HAL擴(kuò)展函數(shù)實(shí)現(xiàn)不定長數(shù)據(jù)接收

    目錄 ? 總覽 使用CUBEMX創(chuàng)建工程的基本配置 CUBEMX中的配置 Keil中的配置 實(shí)物連接 串口輪詢模式 輪詢模式HAL庫函數(shù) 特點(diǎn) 實(shí)驗(yàn)一:發(fā)送數(shù)據(jù)給單片機(jī)并讓其返回相同值 串口重定向 串口中斷模式 在CUBEMX中打開串口中斷 中斷模式HAL庫函數(shù) 特點(diǎn) 實(shí)驗(yàn)二:使用中斷回調(diào)完成實(shí)驗(yàn)一

    2024年04月10日
    瀏覽(44)
  • STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫開發(fā))

    STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫開發(fā))

    ?時(shí)鐘配置HSI主頻配置64M ?勾選打開8個(gè)通道的ADC ?使能連續(xù)轉(zhuǎn)換模式 ?添加DMA ?DMA模式選擇循環(huán)模式 ?使能DMA連續(xù)請求 采樣時(shí)間配置160.5 轉(zhuǎn)換次數(shù)為8 ?配置好8次轉(zhuǎn)換的順序 ?配置好串口,選擇異步模式 配置好需要的開發(fā)環(huán)境并獲取代碼 ?修改main.c 串口重定向 ?串口重定向

    2024年02月08日
    瀏覽(40)
  • STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據(jù))(HAL庫開發(fā))

    STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據(jù))(HAL庫開發(fā))

    目錄 1、函數(shù)配置過程(這是標(biāo)準(zhǔn)庫配置過程): 2、STM32CubeMx配置過程 ?3、main函數(shù)源文件 采集5路ADC數(shù)據(jù),并用串口printf()函數(shù)打印出來。 實(shí)驗(yàn)現(xiàn)象:? ADC轉(zhuǎn)換的初始條件: 1、使能 2、觸發(fā)源條件完成(這個(gè)需要自己配置)利用:HAL_ADC_Start_DMA()函數(shù); ADC中HAL開發(fā)優(yōu)勢就是,

    2023年04月08日
    瀏覽(27)
  • 【STM32F407 ADC+DMA采集壓力變送器數(shù)據(jù)(HAL庫)】

    【STM32F407 ADC+DMA采集壓力變送器數(shù)據(jù)(HAL庫)】

    之前項(xiàng)目中需要對麥克傳感器的mpm480隔爆壓力變送器(4-20ma輸出)的數(shù)據(jù)進(jìn)行實(shí)時(shí)采集,使用STM32F407作為控制器,使用信號轉(zhuǎn)換模塊將壓力變送器4-20ma的輸出轉(zhuǎn)換為0-3.3v的信號量,輸入到STM32F407板子的ADC1的通道10,并使用DMA2通道0數(shù)據(jù)流0將采集的多個(gè)值從外設(shè)直接存入存儲器

    2024年02月16日
    瀏覽(20)
  • 基于STM32的ADC采樣及各式濾波實(shí)現(xiàn)(HAL庫,含VOFA+教程)_數(shù)據(jù)采集濾波算法stm32(3)

    基于STM32的ADC采樣及各式濾波實(shí)現(xiàn)(HAL庫,含VOFA+教程)_數(shù)據(jù)采集濾波算法stm32(3)

    2.2 VOFA+使用方法 VOFA+ 的數(shù)據(jù)協(xié)議引擎有 3種 : FireWater , JustFloat , RawData 。每種數(shù)據(jù)協(xié)議引擎都有自己特殊的使用效果,讀者朋友可以根據(jù)自己的實(shí)際需要去選擇使用。作者這里主要給大家演示一下 FireWater協(xié)議 下的VOFA+使用效果和方法。 FireWater協(xié)議 是 CSV風(fēng)格 的字符串流,

    2024年04月23日
    瀏覽(23)
  • STM32--ADC數(shù)值采樣/附ADC采集熱敏傳感器使用

    STM32--ADC數(shù)值采樣/附ADC采集熱敏傳感器使用

    目錄 一丶ADC介紹 二丶ADC工作原理及管腳分布 三丶代碼部分詳解 (一)庫函數(shù)介紹 (二)代碼部分整合 ????????ADC模塊中文名為模擬/數(shù)字轉(zhuǎn)換器,是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器,一般用于數(shù)值的采樣 ??可以將引腳上連續(xù)變化的模擬電壓轉(zhuǎn)換為內(nèi)存中存儲的數(shù)字變

    2024年02月03日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包