本帖最后由 damiaa 于 2024-7-19 17:16 编辑
【NUCLEO H533RE】之三 ADC功能测试
接上面的测试程序继续加功能,我这里是定时器里面查询adc不用开启中断。只要操作下面的4点就OK,第4会自动出来。
生成代码后加入全局变变量adc1_tim这个在定时中断中不断加,到5000后主程序就认为可以采样adc了。然后adc1_tim清零重新计数,进行采样,数据打印到串口2
相关代码如下:
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_USART2_UART_Init();
MX_TIM2_Init();
MX_TIM3_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart2,(uint8_t *)Uartrec2.RBuf,1);
HAL_TIM_Base_Start_IT(&htim3);
Uartrec2.read_flag =0;
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(adc1_tim >=5000)
{
adc1_tim=0;
char uart_buf[300]={0};
HAL_ADC_Start(&hadc1);
uint32_t adc1_val = HAL_ADC_GetValue(&hadc1);
sprintf(uart_buf,"adc is :%6d\n",(const int)adc1_val);
HAL_UART_Transmit_IT(&huart2,(const uint8_t*)&uart_buf[0], 16);
HAL_Delay(100);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
接电阻到3.3V A1 地 测试结果如下:
3.3v--2.4K--测试点--2.4k--地 (后面的数据):
3.3v--2.4K--测试点--1.2k--地 :
谢谢