欢迎光临散文网 会员登陆 & 注册

STM32Cubev6 ADC采样

2021-02-16 00:20 作者:僚机Wingplane  | 我要投稿

工作环境:

STM32CubeMXv6

Keil5

    ADC采样和时钟有关,所以我们需要先配置时钟,打开左侧的下拉框System Core,点击RCC选项;

    我选用的是8M的外部高速时钟(以实际情况为准),在下方的配置框中更改High Speed Clock(HSE)为Crystal/Ceramic Resonator;

    配置HSE为8Mhz,PCLK2为108Mhz;

        打开左侧的下拉框Analog,点击ADC1选项;

        勾选IN12,IN13,使能通道12,13

    配置时钟预分频(Clock Prescaler)为4(PCLK2 divided by 4),分辨率(Resolution)为12位(12 bits (15 ADC Clock cycles)),对齐方式(Data Alignment)为右对齐(Right alignment),开启扫描模式(Scan Conversion Mode)和连续转换模式(Continuous Conversion Mode),在(End Of Conversion Selection)转换完所有通道后再变化EOC(EOC flag at the end of all conversions)

    ADC常规转换模式中配置转换次数(Number Of Conversion)为2,外部触发转换为由软件启动的定期转换(Regular Conversion launched by software),其中Rank1配置为ADC通道12,Rank2配置为ADC通道13,两者的采样时间都为56个周期;

    以在Priority Group中选择中断优先级组;

    勾选ADC1,ADC2 and ADC3 global interrupts开启中断;

 设置完成后

    点击Project Manager页面,输入工程名和工程位置,选择工具链和IDE为MDK-ARM,版本为5.27;

    打开左侧Code Generater菜单勾选Generate peripheral initialization as a pair of'.c/.h'file per peripheral; 

 

    最后点击右上角的GENERATE CODE按钮后生成代码。

    生成代码后打开工程文件夹,用Keil5打开工程。

   编译,为了使得我们的代码尽可能解耦合,所以我们在工程文件夹中新建一个user_adc.c和对应的user_adc.h文件,在这个.c文件中我们写入以下函数

    在对应头文件user_adc.h中写入以下内容

    在主函数的include中加入user_adc.h

    在while主循环中可以通过调用Get_Adc_Vol函数得到对应通道的电压值

参考资料:

STM32F7开发指南-HAL库版本_V1.1

HAL库教程12:ADC与DMA采集多路AD值   https://yatao.blog.csdn.net/article/details/89326729

STM32Cubev6 ADC采样的评论 (共 条)

分享到微博请遵守国家法律