赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
只会用if的大神提醒您,敌军还有30秒到达战场,碾碎他们!白银局不要怕!
软件:keil5、stm32cubemx、串口调试助手
硬件:stm32f103系列的开发板、杜邦线*1、串口工具
仅此而已!!!正好6神
1、打开cubemx 选择完你用的芯片就到了这里啦这里我以stm32c8t6为例:
选择serial wire模式
2、时钟配置(这里先不配置参数,因为选完adc通道还需要配置)
3、当然需要万能的串口打印啦(用于我们调试完查看实验结果的功能)选择异步通讯,其他参数默认即可;
4、重头戏来啦!这就是我们用的外设接口啦这里我们选择ADC1、通道1其他参数默认即可;
5、前面讲到因为又adc的加入时钟频率我们最后配置成72mhz,adc就自动分频了。
6、上面已经配置完成了所有初始化需要的文件那么现在我们写个英文的工程名称、选择开发环境mdk也就是我们用的keil啦!
7、让生成的代码中包含。.c、.h文件然后生成代码! 点open project自动打开keil
1.首先main.c中添加获取函数
- while (1)
- {
-
- adc_get_vcc();
- delay_ms(1000);//可以换成HAL_Delay
-
- }
2.adc.c中添加包含头文件和变量以及函数
- #include "stdio.h" // 添加头文件用于打印
-
- float adcy; //定义变量
- uint16_t adcx=0;
- /*
- 函数定义:获取实际电压
- 返回值:无
- */
- uint32_t adc_get_vcc(void)
- {
- adcx = adc_get(); //获取到ad转换后的数字量
- printf("数字量:%d",adcx ); //打印出数字量
- adcy = (float)adcx*3.3/4096; //将数字量转化成实际电压
- printf("实际电压:%f",adcy );
- delay_ms(100); //可以换成HAL_Delay(100);
- }
-
- /*
- 函数定义:获取adc转换完成后的数据
- 返回值:uint32_t型的模拟数值
- */
- uint32_t adc_get(void){
-
- HAL_ADC_Start(&hadc1); //启动adc
- HAL_ADC_PollForConversion(&hadc1,10); //等待adc转换完成
- return ((uint16_t)HAL_ADC_GetValue(&hadc1)); //返回ad转化后的数字量
-
- }
3.adc.h添加函数声明
- void adc_get_vcc(void);
- uint32_t adc_get(void);
4.urat.c里面包含头文件和重写打印函数
- #include "stdio.h"
-
- int fputc(int ch, FILE *f) {
- HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
- return ch;
- }
查看实验结果:
实验条件条件1:杜邦线将引脚PA1接GND,实验结果:实际电压0.000000。
实验条件条件2:杜邦线将引脚PA1接3v3, 实验结果:实际电压3.2......v左右。
结论:实验结果显然符合实验目的。
本文主要简单讲解了ADC的配置步骤当然,ADC也可以通过中断方式、DMA模式传输。这里没有做更多的说明,后面在陆续出文章。我深知这些虽然很简单但当初也是这么一步步艰难走来的所以不要放弃、一点点学。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。