一.规则通道组&注入通道组

1.规则通道组

划分到规则通道组的通道称为规则通道,大多数情况下,如果只是一般模拟输入信号的转换,那么将该模拟输入信号的通道设置为规则通道即可。

最多可以有16个规则通道,当每个规则通道转换完成后,将转换结果保存到同1个规则通道数据寄存器,同时产生ADC转换结束事件,可以产生对应的中断和DMA请求。

2.注入通道组

划分到注入通道组的通道称为规则通道,如果需要转换的模拟输入信号的优先级较其他模拟输入信号高,那么可将该模拟输入信号的通道归入通道组中。

注入通道组最多可以有4个注入通道。

注入通道组转换的启动有两种方式:

1.触发注入

与中断处理类似。

2.自动注入

注入通道组将在规则通道组后被自动转换。每次启动规则通道组转换后,也会自动转换注入通道组。

二.CubeMX配置

 

 

 三.代码

/* USER CODE BEGIN Includes */
#include <stdio.h>
#include <string.h>
/* USER CODE END Includes */
  /* USER CODE BEGIN 2 */
  HAL_ADCEx_InjectedStart_IT(&hadc1);//以中断模式启动 ADC1 的注入组转换
  HAL_TIM_Base_Start(&htim2);        //启动定时器
	
  /* USER CODE END 2 */
/* USER CODE BEGIN 4 */
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc) {
  static uint32_t adc_value = 0;
  static float voltage = 0.0f;
  
  if (hadc->Instance == ADC1) {
    adc_value = HAL_ADCEx_InjectedGetValue(hadc, ADC_INJECTED_RANK_1);
    voltage = (float)adc_value * 3.3f / 4095.0f;
    
		char buff[50];
    sprintf(buff,"%.2f\r\n", voltage);
		 HAL_UART_Transmit_IT(&huart1, (uint8_t*)buff, strlen(buff));
  }
}
/* USER CODE END 4 */

 四.结果

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐