自学内容网 自学内容网

STM32单通道ADC连续采集

图片

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

RTT——一种代替串口打印的调试神器

经典振荡器电路及原理分析(超值文章)

超级简单的画PCB封装技巧,从此告别繁琐计算

前面介绍了关于ADC单通道单次采样软件触发的方式《STM32 软件触发ADC采集》,这回同样是单通道但是连续采样的方式。

对于连续采样,就不得不采用中断的方式,因为如果仍然采用阻塞查询方式的话,那单片机就别干其他的事了,永远处于等待采样完成。单次采样不需要考虑是因为能够控制何时进行采样,而连续采样是一开始就一直采样,直到关闭ADC。

图片

这里依然是用ADC1的0通道。

与单次采样不同的地方就是中断的设置和连续采样的设置。

其他的不多说,直接放源码。

对于GPIO的初始化没什么改变

void gpio_init(){  RCC->CFGR|=(2<<14);  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&=~(1<<8);//扫描模式关闭  ADC1->CR1|=(1<<5);//  
  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);    NVIC->ISER[0]|=1<<ADC1_2_IRQn; //18  NVIC->IP[18]=(2<<4)|(2<<0);    ADC1->CR2|=(1<<22);//开始转换  }

然后是ADC中断处理函数

float adc_value;void ADC1_2_IRQHandler(){  if(ADC1->SR&(1<<1))  {        adc_value=ADC1->DR;    ADC1->SR&=~(1<<1);  }}

以上就是核心代码,经过试验,效果如下

图片

拆机音频插座及其原理分析

一个简单实用的负电压生成电路(核心电路)

为什么共集电极放大电路无法放大电压

一眼分清三极管引脚名字的小技巧,从此再也不用对照手册啦

很少有人提起的关于STM32电池备份域的一些细节

JLINK无法烧写程序,原因让人意外

关于推挽电路的说明

炫彩LED

CX32l003输出PWM

Keil中添加对CX32L003系列芯片的支持


原文地址:https://blog.csdn.net/longgyue/article/details/142505054

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!