STM32的ADC多通道采样

   日期:2020-05-18     浏览:115    评论:0    
核心提示:基于STM32Cube的ADC多通道采样STMCube+MDK用hal库写的好处就是可以不用进行配置IO口发步骤.也有良好的兼容性,更换芯片的时候改代码也简单.首先打开STM32Cube点击new project选择芯片(此处我选的是STM32F051R8选择结束后如下配置一下芯片的相关配置我是ST-LINK下载所以选择SW模式.ADC是4通道采样1-4.打开串口一.只要左边的选项选好,右边的芯片的引脚就自动配置好.RCC我在左侧的表格里没勾选,因为我用的是内部时钟啊,不用嵌入式

基于STM32Cube的ADC多通道采样

STMCube+MDK

用hal库写的好处就是可以不用进行配置IO口发步骤.有良好的兼容性,更换芯片的时候改代码也简单.

  • 首先打开STM32Cube

    点击new project

    选择芯片(此处我选的是STM32F051R8

    选择结束后如下

配置一下芯片的相关配置

我是ST-LINK下载所以用SW模式.ADC是4通道采样1-4.
打开串口一.只要选项选好,右边的芯片的引脚就自动配置好.

RCC我在左侧的表格里不用勾选,因为我用的是内部时钟,不用选.下面是我配置的时钟

之所以是48M,还要分频呢.

下面直接上图片

其他的都默认.然后按ALT+P,设置下工程,格式如下

这个可以把代码格式更模块化。建议选择

#串口问题就一个重定向就解决了
 #ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif 
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;

}
void HAL_ADC_convcpltcallback(ADC_HandleTypeDef* hadc)
{
	flag=1;
 HAL_ADC_Stop_DMA(hadc); 
}
int main(void)
{

  HAL_Init();
  MX_GPIO_Init(); 
  MX_ADC_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  SystemClock_Config();
 HAL_ADC_Start_DMA(&hadc, (uint32_t*)&uhADCxConvertedValue, 4);

  while (1)
  { 
  
	if(flag==1)
	{	   
	flag=0;	
  HAL_Delay(400);	
	printf("ch1 = %d\n",uhADCxConvertedValue[0]);	
	HAL_Delay(400);		
	printf("ch2 = %d\n",uhADCxConvertedValue[1]);
	HAL_Delay(400);			
	printf("ch3 = %f\n",(uhADCxConvertedValue[2]*3.3)/4095);
	HAL_Delay(400);			
	printf("ch4 = %f\n",(uhADCxConvertedValue[3]*3.3)/4095);		
	HAL_Delay(400);			
	}	
	HAL_ADC_Start_DMA(&hadc, (uint32_t*)&uhADCxConvertedValue, 6);
	HAL_Delay(400);  
  }

}

onvCpltCallback(ADC_HandleTypeDef* hadc)
{
	flag=1;
 HAL_ADC_Stop_DMA(hadc); 
}



 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服