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

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.lryc.cn/news/452206.html

相关文章:

  • Android SystemUI组件(08)睡眠灭屏 锁屏处理流程
  • C# 表达式与运算符
  • SpringBoot--最大连接数和最大并发数
  • CF687D Dividing Kingdom II 题解
  • 高空抛物AI检测算法:精准防控,技术革新守护城市安全
  • html+css+js实现Collapse 折叠面板
  • RM服务器研究(一)
  • 云岚到家xxl job 配置
  • 国内动态短效sk5
  • 【路径规划】路径平滑算法,A星算法拐点的圆弧化处理
  • 【寻找one piece的算法之路】——双指针算法!他与她是否会相遇呢?
  • UFS 3.1架构简介
  • 注册安全分析报告:科研诚信查询平台无验证方式导致安全隐患
  • 04.useTitle
  • ROS2中的srv、action、发布订阅三种方式
  • HarmonyOS/OpenHarmony 自定义弹窗页面级层级控制解决方案
  • C/C++进阶(一)--内存管理
  • docker-compose 快速部署clickhouse集群
  • 闯关训练三:Git 基础知识
  • Java--IO基本流
  • 结合大语言模型的机械臂抓取操作简单介绍
  • Vivado - BD(差分时钟、简单分频、RESET、KEY)
  • 7--苍穹外卖-SpringBoot项目中套餐管理 详解(一)
  • 【尚硅谷】RocketMQ 消息队列学习笔记
  • C题(三)芝麻开门 --- strcmp函数应用
  • C++函数模板、选择排序实现(从大到小)
  • EasyExcel使用介绍
  • 字段临时缓存包装器
  • Python(三)——列表
  • MySQL--三大范式(超详解)