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

STM32 软件触发ADC采集

图片

0.91寸OLED屏幕大小的音频频谱,炫酷!

STM32另一个很少人知道的的功能——时钟监测

晶振与软件的关系(深度理解)

STM32单片机一种另类的IO初始化方法

ADC是一个十分重要的功能,几乎任何一款单片机都会包含这个功能(当然除了部分IO型芯片)。本文就通过stm32f103c8t6来学习一下ADC的操作流程,以最基本的软件触发ADC模式。

首先找到手册中ADC模块部分,如下图,就是ADC模块的相关框图,可以看到十分繁杂。

图片

那么对于软件触发ADC方式如何操作呢。

如下图,就是最基本的ADC采样方式,不经过外部触发,采样转换完成不触发中断。

图片

接下来一次介绍ADC的操作步骤。以ADC1的通道0为例。

有两个模块必不可少,一个是时钟,一个是GPIO。时钟存在于RCC模块中。

图片

stm32系列ADC的时钟来源于APB2时钟分频。先把APB2时钟分频到36M,然后将ADC时钟分频到12M,这样ADC时钟就配置好了。

图片

随后是GPIO的初始化,要实现ADC采集功能,将对应的GPIO设置成模拟输入模式。

void gpio_init(){    RCC->APB2ENR|=(1<<2)|(1<<9);//GPIOA时钟使能  GPIOA->CRL&=~(0X0F<<0);//PA0 模拟输入模式  }

接下来就是ADC模块的初始化了​​​​​​​

void adc_init(){  ADC1->CR2|=(1<<0);  ADC1->CR1&=~(0X0F<<16);//independent mode  //ADC1->CR1&=~(7<<13);//1个通道  //ADC1->CR1|=(1<<11);  ADC1->CR1&=~(1<<8);//扫描模式关闭  
  ADC1->CR2|=(1<<20);  ADC1->CR2|=(7<<17);    ADC1->CR2&=~(1<<11);//right align    ADC1->CR2|=(1<<3);  while(ADC1->CR2&(1<<3));  ADC1->CR2|=(1<<2);  while(ADC1->CR2&(1<<2));    ADC1->CR2&=~(1<<1);      ADC1->SMPR2&=~(7<<0);  ADC1->SQR3&=~(0X1F<<0);  }

最后是控制ADC采集的过程。​​​​​​​

unsigned int start_adc(){  ADC1->CR2|=(1<<22);//开始转换  while(!(ADC1->SR&(1<<1)));  return(ADC1->DR);}

之前介绍过关于OLED的显示功能,那么我们就通过OLED将ADC采集到的值显示到OLED上。如下就是实际效果

STM32 软件触发ADC采集

数字电子技术电门电路之万物皆可与非门(掌握数字电路核心基础)

模拟信号和数字信号区别——其实数字信号是不存在的

0.96寸OLED屏幕控制器SSD1306详解

0.96寸OLED控制器SSD1306其他两种显示模式

STM32 | 精确控制PWM脉冲个数

炫彩LED

微距下的蓝牙耳机

频率与周期的精密控制——用SPI输出PWM脉冲


http://www.kler.cn/a/326839.html

相关文章:

  • 练习LabVIEW第三十八题
  • MATLAB下的四个模型的IMM例程(CV、CT左转、CT右转、CA四个模型),附下载链接
  • GPT-SoVITS 部署方案
  • python人工智能算法
  • QChart中柱形图的简单使用并实现【Qt】
  • 在K8s平台部署个人博客
  • 基于MATLAB的苹果外观特征检测
  • 【计算机网络 - 基础问题】每日 3 题(二十六)
  • 针对考研的C语言学习(定制化快速掌握重点4)
  • IDEA几大常用AI插件
  • Splashtop 加入 Microsoft 智能安全协会
  • VBA解除Excel工作表保护
  • 浅析Android中的View事件分发机制
  • 19.2 编写dockerfile和k8s yaml
  • 迁移学习案例-python代码
  • Redis一些简单通用命令认识常用数据类型和编码方式认识Redis单线程模型
  • OJ题之单链表排序
  • 智慧城市运营模式--联合公司运营
  • ThinkPHP发送邮件教程:从配置到发送指南!
  • ChatGPT的150个角色提示场景实测(9)讲故事
  • django drf 分页器
  • 【Spring基础3】- Spring的入门程序
  • 【从0开始搭建微服务并进行部署】SpringBoot+dubbo+zookeeper
  • 数据结构——栈的基本操作
  • ELK-02-skywalking-v10.0.1安装
  • 为什么要自定义异常