STM32自学☞AD单通道

news2024/10/7 12:42:02

d9d1a5d6dc824881a5d8a99849a2beae.jpg

 

程序的最终运行成果:

当转动电位器时,数值和电压值发生变化

ad.c文件

#include "stm32f10x.h"

#include "stm32f10x_adc.h"

#include "ad.h"

#include "stdint.h"

void ad_Init(void)

{

 /*

 初始化步骤:

 1.开启GPIO时钟和ADC时钟,配置ADCCLK

 2.配置GPIO,模拟输入模式

 3.配置多路开关

 4.配置ADC转换器

 5.开启ADC

 6.校准ADC

 */

  //开启时钟

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

 //配置ADCCLK

 RCC_ADCCLKConfig(RCC_PCLK2_Div6);

 //配置GPIO

 GPIO_InitTypeDef GPIO_InitStructure;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

  GPIO_Init(GPIOA, &GPIO_InitStructure);

 //选择规则组进入的通道

 ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);

 //结构体初始化ADC

 ADC_InitTypeDef ADC_InitStruct;

 ADC_InitStruct.ADC_Mode=ADC_Mode_Independent; //工作模式为独立模式

 ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right; //ADC数据为右对齐

 ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; //软件触发

 ADC_InitStruct.ADC_ContinuousConvMode=DISABLE; //单次转换  

 ADC_InitStruct.ADC_ScanConvMode=DISABLE; //扫描模式

 ADC_InitStruct.ADC_NbrOfChannel=1; //扫描模式下要用到的通道数为1

 ADC_Init(ADC1,&ADC_InitStruct);

 //开启ADC电源

 ADC_Cmd(ADC1,ENABLE);

 //复位校准

 ADC_ResetCalibration(ADC1);

 //等待复位校准

 while(ADC_GetResetCalibrationStatus(ADC1)==SET);

 //开始校准

 ADC_StartCalibration(ADC1);

 //等待开始校准

 while(ADC_GetCalibrationStatus(ADC1)); 

}

//获取转换值函数

uint16_t ad_Getvalue(void)

{

 ADC_SoftwareStartConvCmd(ADC1,ENABLE);

 while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);

 return ADC_GetConversionValue(ADC1);

}

ad.h文件

#ifndef _AD_H

#define _AD_H

#include "stdint.h"

void ad_Init(void);

uint16_t ad_Getvalue(void);

#endif

main.c文件

#include "stm32f10x.h"

#include "delay.h"

#include "OLED.h"

#include "ad.h"

uint16_t advalue; //数值

float voltage; //电压值

int main (void)

 //初始化函数

 OLED_Init();

 ad_Init();

 OLED_ShowString(1,1,"advalue:");

 OLED_ShowString(2,1,"voltage:");

 while(1)

 {

  advalue=ad_Getvalue();

  voltage=(float)advalue/4095*3.3;

  OLED_ShowNum(1,9,advalue,4);

  OLED_ShowNum(2,9,voltage,1);

  OLED_ShowString(2,10,".");

  OLED_ShowNum(2,11,(uint16_t)(voltage*100)%100,2);

  OLED_ShowString(2,13,"V");

  delay_ms(1000);

 }

}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1479551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pause、alarm、kill——进程——day13

今天主要讲线程中信号的三个函数 1.pause 1.pauseint pause(void); 功能:让进程睡眠,直到接收到信号(捕捉)才能继续向下执行eg: #include "head.h"void handler(int signo) {return; }int main(void) {signal(SIGINT,handler);printf("pause up!\…

uniapp基于Android学生课程签到成绩管理系统_ilzd 微信小程序

通过前面的功能分析可以将教师事务管理系统的功能分为管理员和学生、教师三个部分,系统的主要功能包括课程信息、学生签到、学生成绩等内容。任何用户只要进入网站不需登录也可浏览到的信息,后台管理是针对已登录的用户看到满意的教师事务管理系统而设计…

文心一言 VS 讯飞星火 VS chatgpt (205)-- 算法导论15.4 1题

一、求〈1,0,0,1,0,1,0,1〉和〈0,1,0,1,1,0,1,1,0〉的一个LCS。需要写代码的时候,请用…

C++ //练习 10.7 下面的程序是否有错误?如果有,请改正。

C Primer&#xff08;第5版&#xff09; 练习 10.7 练习 10.7 下面的程序是否有错误&#xff1f;如果有&#xff0c;请改正。 (a) vector<int>vec; list<int> lst; int i;while(cin>>i)lst.push_back(i);copy(lst.cbegin(), lst.cend(), vec.begin());(b) …

DDS笔记

1.DDS 直接数字式频率合成器&#xff08;Direct Digital Synthesizer,DDS&#xff09;是通过相位和幅值 的映射实现任意频率的正弦曲线样本的方法 系统时钟CLK频率为fclk&#xff0c;输出信号频率为fout&#xff0c;频率字输入K的位宽为N位。 相位累加器通常由一个N位加法器和…

Docker之自定义镜像上传阿里云

目录 一、Alpine制作jdk镜像 1. 下载镜像 2. 创建并编辑Dockerfile 3. 执行Dockerfile构建镜像 4. 测试 二、Alpine制作jre镜像 1. 下载jre 2. 上传gz压缩包&#xff0c;删除无用的文件&#xff0c;并重新压缩 3. 创建并编辑Dockerfile 4. 执行Dockerfile并构建镜像…

【电商干货】5分钟了解电商数据API测试完整流程,建议收藏!可获取免费测试key!

电商API是什么&#xff1f; API是application programming interface&#xff08;应用程序接口&#xff09;的简称&#xff0c;是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部…

CentOS安装GUI图形界面

CentOS安装图形界面 CentOS minimal环境安装图形界面。 列出所有可用的Environment Groups yum group list yum groupinfo "GNOME Desktop"选择GNOME Desktop软件包组进行安装 yum groupinstall -y GNOME Desktop1 如果要通过GUI配置网络需要安装Server with GU…

删除有序数组中的重复项Ⅱ

问题 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明…

有哪些视频媒体?邀请视频媒体报道活动的好处

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 视频媒体在当今的媒体生态中占据了重要的地位。以下是一些主要的视频媒体类型&#xff1a; 电视台&#xff1a;如中央电视台、各省级卫视台、地方电视台等&#xff0c;他们拥有专业的视…

vue2后台管理系统demo,包含增删查改、模糊搜索、分页

因一直敲小程序&#xff0c;vue不熟练&#xff0c;自己练手项目&#xff0c;就包含增删查改以及模糊搜索分页 一、页面简单但功能齐全 二、数据是mock模拟 三、启动步骤 1、 json-server --watch data.json 启动mock数据 2、npm i 下载依赖 3、npm run serve 四、github地址…

PSO-CNN-LSTM多输入时序预测|粒子群算法优化的卷积-长短期神经网络时序预测(Matlab)——附代码+数据

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序数据分享下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台…

Flutter(四):SingleChildScrollView、GridView

SingleChildScrollView、GridView 遇到的问题 以下代码会报错: class GridViewPage extends StatefulWidget {const GridViewPage({super.key});overrideState<GridViewPage> createState() > _GridViewPage(); }class _GridViewPage extends State<GridViewPage&g…

go并发模式之----阻塞/屏障模式

常见模式之一&#xff1a;阻塞/屏障模式 定义 顾名思义&#xff0c;就是阻塞等待所有goroutine&#xff0c;直到所有goroutine完成&#xff0c;聚合所有结果 使用场景 多个网络请求&#xff0c;聚合结果 大任务拆分成多个子任务&#xff0c;聚合结果 示例 package main ​…

两台电脑异地怎么共享文件?

在现代社会中&#xff0c;无论是个人用户还是企事业单位&#xff0c;都经常面临着跨地域的文件共享需求。由于各种限制和条件的限制&#xff0c;如网络环境、设备限制等&#xff0c;可能导致文件共享变得非常困难。本文将介绍一款名为【天联】的组网产品&#xff0c;通过它可以…

mysql快速生成1000万的测试数据

创建存储过程 DELIMITER //CREATE PROCEDURE generate_data() BEGINDECLARE i INT DEFAULT 1;-- 创建表CREATE TABLE IF NOT EXISTS test_table (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),age INT,email VARCHAR(255));-- 插入1000万行数据WHILE i < 10000000…

Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验(前导)

ACM9238 高速双通道ADC模块自助服务手册AD9238 Zynq—AD9238数据采集DDR3缓存千兆以太网发送实验&#xff08;一&#xff09;-CSDN博客 一、AD9238 模块在各方面参数性能上与AD9226保持一致。但是在设计上优化了信号调理电路&#xff0c;将单端信号先转成差分信号&#xff0c…

新闻稿软文投放推广发布需要注意什么

在全球化的背景下&#xff0c;各国之间的联系与互动变得越来越频繁。无论是经济、文化还是科技领域&#xff0c;各国之间的交流和合作都在不断加深。而在这个信息爆炸的互联网时代&#xff0c;人们获取信息的主要途径也逐渐转向了网络。 在这种情况下&#xff0c;软文推广成为…

node 之 解决下包速度慢的问题

1.为什么下包速度慢 在使用 npm 下包的时候,默认从国外的https://registry.npmis.org/ 服务器进行下载&#xff0c;此时&#xff0c;网络数据的传输需要经过漫长的海底光缆&#xff0c;因此下包速度会很慢。 2.淘宝npm 镜像服务器 淘宝在国内搭建了一个服务器&#xff0c;专门把…

Unity之ConversaDialogueSystem 对话插件使用

一、插件下载或购买 官方购买地址&#xff1a;Conversa Dialogue System | 可视化脚本 | Unity Asset Store 百度网盘地址&#xff1a;提取码&#xff1a;syq1 此插件没有官方案例&#xff0c;插件作者也明确回复说后期不会出教程&#xff0c;所以此教程根据插件demo案例进行学…