当前位置: 首页 > java >正文

ADC单通道采集实验

设置的步骤如下;

#include "adc.h"ADC_HandleTypeDef adc_handle ={0};
void adc_init(void)
{adc_handle.Instance= ADC1;                                               //ADC的基地址adc_handle.Init.DataAlign = ADC_DATAALIGN_RIGHT;                         //对齐方式adc_handle.Init.ScanConvMode =ADC_SCAN_DISABLE;                          //扫描方式 不扫描adc_handle.Init.ContinuousConvMode =DISABLE;                             //转换的方式    不连续转换adc_handle.Init.NbrOfConversion = 1;                                     //转换的个数    因为就一个通道所以就一个转换adc_handle.Init.DiscontinuousConvMode =DISABLE;                          //转换的模式 不用adc_handle.Init.NbrOfDiscConversion =0; adc_handle.Init.ExternalTrigConv =ADC_SOFTWARE_START;                    //触发的模式   软件触发HAL_ADC_Init(&adc_handle);HAL_ADCEx_Calibration_Start(&adc_handle);}
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
{if(hadc->Instance ==ADC1){RCC_PeriphCLKInitTypeDef adc_clk_init ={0}; GPIO_InitTypeDef gpio_init_struct ={0};__HAL_RCC_ADC1_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();gpio_init_struct.Pin= GPIO_PIN_1;gpio_init_struct.Mode=GPIO_MODE_ANALOG;HAL_GPIO_Init(GPIOA,&gpio_init_struct);adc_clk_init.PeriphClockSelection =RCC_PERIPHCLK_ADC;                     //外设的时钟选择adc_clk_init.AdcClockSelection = RCC_ADCPCLK2_DIV6;                       //选择预分频器是几分频的HAL_RCCEx_PeriphCLKConfig(&adc_clk_init);                                              //配置分频器}}void adc_channel_config(ADC_HandleTypeDef* hadc, uint32_t ch,uint32_t rank, uint32_t stime)  //第一个数据为哪一个ADC  第二个数据为哪一个通道,第三个数据为放在什么位置,第四个数据使采集时间
{ADC_ChannelConfTypeDef adc_ch_config ={0};adc_ch_config.Channel =ch;adc_ch_config.Rank= rank;adc_ch_config.SamplingTime = stime;HAL_ADC_ConfigChannel(hadc,&adc_ch_config);}uint32_t adc_get_result(uint32_t ch)
{adc_channel_config(&adc_handle,ch,ADC_REGULAR_RANK_1,ADC_SAMPLETIME_239CYCLES_5);  HAL_ADC_Start(&adc_handle);HAL_ADC_PollForConversion(&adc_handle,10);          //第二个数据为超时时间return (uint16_t)HAL_ADC_GetValue(&adc_handle);}

http://www.xdnf.cn/news/2277.html

相关文章:

  • 农经权利用mdb与dbf生成公示表
  • 上位机知识篇---寻址方式
  • 通过gap看margin和padding在布局中的应用
  • 摩尔投票法详细介绍
  • void指针为何能幻化有数据类型?
  • Linux下的I/O复用技术之epoll
  • Linux:进程间通信->命名管道
  • 【WSL】wsl2出现Exec format error的解决办法
  • 矫平机终极指南:特殊材料处理、工艺链协同与全球供应链管理
  • Java 线程的六种状态与完整生命周期详解
  • YOLOv8改进新路径:Damo-YOLO与Dyhead融合的创新检测策略
  • C语言学习之调试
  • 小白自学python第三天
  • 当高级辅助驾驶遇上“安全驾校”:NVIDIA如何用技术给无人驾驶赋能?
  • Python类和对象四(十三)
  • 2025雅思口语工具Top10:AI软件真实测评
  • 在springboot项目中,如何进行excel表格的导入导出功能?
  • JavaScript基础-算数运算符
  • (四) 实战Trae 编译调试C++项目(以minidocx为例)
  • Winform(2.多线程)
  • C19-while循环及for循环等价引入
  • CANFD技术在实时运动控制系统中的应用:协议解析、性能测试与未来发展趋势
  • (23)VTK C++开发示例 --- 读取所有的PolyData类型示例
  • 网络管理知识点
  • Java----内部类 以及 调用关系
  • Pygame终极项目:从零开发一个完整2D游戏
  • C++之map
  • ngrok 内网穿透技术系统性文档
  • 初始网络流(最小割)
  • 【C语言练习】005. 编写表达式并确定其值