logo资料库

STM32驱动内部ADC对MIC进行采样播放.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
C:\Users\D00036\Desktop\AL02_Test\AL02_STM32\Src\tim.c : TIM.c : This file provides code for the configuration of the TIM instances. :Dhg :2017-12-09 :该程序使用STM32 自带ADC对MIC进行采样或者对存在FLASH里的指定 声音文件进行播放,程序使用HAL库进行实验,原理简单,易懂! (1)目前采样频率为44khz,对MIC采样时注意前级运放的噪音控制,目前 本人实验使用MAX9812芯片效果较好,自己搭建的放大电路没有调整好! (2)目前播放指定音质采用的时WAV文件,16位声音数据;目前程序使用的 是单路播放输出,TM8211是双路16位DAC;有兴趣的朋友可以自己尝试! ****************************************************************************** * File Name * Description * * Auther * Date * Note 1 /** 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ****************************************************************************** 16 17 18 /* Includes ------------------------------------------------------------------*/ 19 #include "tim.h" 20 21 /* USER CODE BEGIN 0 */ 22 #include "adc.h" 23 #include "gpio.h" 24 25 uint16_t ADC1ConvertedValue; 26 27 uint16_t Data1; 28 uint32_t Number = 44; 29 volatile uint16_t Data_tmp; 30 31 /* USER CODE END 0 */ 32 33 TIM_HandleTypeDef htim1; 34 35 /* TIM1 init function */ 36 void MX_TIM1_Init(void) 37 { 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 htim1.Instance = TIM1; htim1.Init.Prescaler = 0; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.Period = 1632 - 1; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; if (HAL_TIM_Base_Init(&htim1) != HAL_OK) { sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) { sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); */ } } TIM_ClockConfigTypeDef sClockSourceConfig; TIM_MasterConfigTypeDef sMasterConfig; _Error_Handler(__FILE__, __LINE__); Page 1
C:\Users\D00036\Desktop\AL02_Test\AL02_STM32\Src\tim.c _Error_Handler(__FILE__, __LINE__); } /* USER CODE END TIM1_MspInit 0 */ /* Peripheral clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); /* USER CODE END TIM1_MspInit 1 */ } if(tim_baseHandle->Instance==TIM1) { /* USER CODE BEGIN TIM1_MspInit 0 */ /* TIM1 interrupt Init */ HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM1_UP_IRQn); /* USER CODE BEGIN TIM1_MspInit 1 */ 62 63 64 65 } 66 67 void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) 68 { 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 } 86 87 void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) 88 { 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 } 105 106 /* USER CODE BEGIN 1 */ 107 108 /******************************PLAY MIC SAMPLING if(tim_baseHandle->Instance==TIM1) { /* USER CODE BEGIN TIM1_MspDeInit 0 */ /* USER CODE END TIM1_MspDeInit 1 */ } /* Peripheral clock disable */ __HAL_RCC_TIM1_CLK_DISABLE(); /* TIM1 interrupt Deinit */ HAL_NVIC_DisableIRQ(TIM1_UP_IRQn); /* USER CODE BEGIN TIM1_MspDeInit 1 */ /* USER CODE END TIM1_MspDeInit 0 */ if (htim->Instance == htim1.Instance) { SOUND****************************************************/ 109 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 110 { 111 112 113 114 115 116 117 118 119 120 121 HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, 50); ADC1ConvertedValue = HAL_ADC_GetValue(&hadc1); } if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) { Page 2
C:\Users\D00036\Desktop\AL02_Test\AL02_STM32\Src\tim.c Data_tmp = ADC1ConvertedValue * 2; if(Data_tmp == Data1 ){} else { 122 123 124 125 126 127 128 129 130 131 /*********************************PLAY ASSIGN TM8211_Drive(Data_tmp ,Data_tmp); Data1 = Data_tmp; } SOUND*************************************************/ Data_tmp = (SOUND_DATA[Number + 1] << 8)|(SOUND_DATA[Number]) ; if(Number > 48000) { TM8211_Drive(Data_tmp ,Data_tmp); Data1 = Data_tmp; if(Data_tmp == Data1 ){} else { 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 } 154 155 /*********************************ASSIGN SOUND Number = 44; HAL_TIM_Base_Stop_IT(&htim1); Number += 4; } } else { } } CODE*************************************************/ 156 const uint8_t SOUND_DATA[ 48000 ]= { 157 0x52, 0x49, 0x46, 0x46, 0x46, 0xdd, 0x0a, 0x00, 0x57, 0x41, 0x56, 0x45, 0x66, 0x6d, 0x74, 0x20, 158 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 159 0x04, 0x00, 0x10, 0x00, 0x4c, 0x49, 0x53, 0x54, 0x22, 0xdd, 0x0a, 0x00, 0x49, 0x4e, 0x46, 0x4f, 160 0x49, 0x53, 0x46, 0x54, 0x0e, 0x00, 0x00, 0x00, 0x4c, 0x61, 0x76, 0x66, 0x35, 0x37, 0x2e, 0x34, 161 0x31, 0x2e, 0x31, 0x30, 0x30, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0xdd, 0x0a, 0x00, 0x00, 0x00, 162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 165 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 167 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, Page 3
C:\Users\D00036\Desktop\AL02_Test\AL02_STM32\Src\tim.c 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 176 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 177 /********************************此处省略NNNNN个数据************************************* *****/ 178 }; 179 /* USER CODE END 1 */ 180 181 /** 182 * @} 183 */ 184 185 /** 186 * @} 187 */ 188 189 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 190 Page 4
分享到:
收藏