1254|1

1万

帖子

16

TA的资源

版主

楼主
 

【极海 APM32E103VET6S MINI开发板评测】之五:软件触发ADC [复制链接]

 

我认为ADC和定时器是STM32F103之中的难点,因为线头太多,而今天我要搞个最简单的ADC,那就是软件触发的ADC

首先CUBEMX接上次的增加一个PC3,就是点开PC3选择ADC13道。

然后,到模拟那个左边项,用默认就行。

最主要是程序的编制,我参考网上的软件触发的方法,程序如下:

/* USER CODE BEGIN 0 */

uint16_t Get_Adc(uint32_t ch)   
{
    ADC_ChannelConfTypeDef ADC1_ChanConf;
    
    ADC1_ChanConf.Channel=ch;                                   //通道
    ADC1_ChanConf.Rank=1;                                       //第1个序列,序列1
    ADC1_ChanConf.SamplingTime=ADC_CONVERSIONCLOCKCYCLES_SAMPLETIME_239CYCLES5;        //采样时间
    //ADC1_ChanConf.Offset=0;                 
    HAL_ADC_ConfigChannel(&hadc1,&ADC1_ChanConf);        //通道配置
	
    HAL_ADC_Start(&hadc1);                               //开启ADC
	
    HAL_ADC_PollForConversion(&hadc1,10);                //轮询转换
 
	return (uint16_t)HAL_ADC_GetValue(&hadc1);	        //返回最近一次ADC1规则组的转换结果
}

uint16_t Get_Adc_Average(uint32_t ch,uint8_t times)
{
	uint32_t temp_val=0;
	uint8_t t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		HAL_Delay(5);
	}
	return temp_val/times;
}
  /* USER CODE END 0 */
/**
  * [url=home.php?mod=space&uid=159083]@brief[/url] The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
  uint16_t dutyCycle=0;
		uint8_t dir=1;
	uint16_t   adcx=0;					//定义ADC采集存放的变量
	float 		ADC_V=0;					//存放电压
  /* USER CODE END 1 */

 

 

在main.c里定义两个变量,然后在while里加入代码:

adcx = Get_Adc_Average(ADC_CHANNEL_13,10);	//获取ADC1的通道1,10次的平均值
		ADC_V=(float)adcx*(3.3/65536);         		//获取计算后的带小数的实际电压值,比如3.1111

由于没有涉及到串口,我就用断点仿真,当我把PC3接到地时GND,值为0000

当我接到VDD时显示是0x0FDB好像。

这样就完成了软件触发。

 

 

最新回复

极海 APM32E103VET6S能直接使用CUBEMX?这兼容做得可以   详情 回复 发表于 2022-9-25 20:17
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复
举报

6060

帖子

6

TA的资源

版主

沙发
 

极海 APM32E103VET6S能直接使用CUBEMX?这兼容做得可以

个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表