Stm32旧版库函数1——adxl335 模拟输出量 usart2

news2024/12/26 2:53:19

主函数:

/*******************************************************************************
//
// 使用单片机STM32F103C8T6
// 晶振:8.00M
// 编译环境 Keil uVision4
// 在3.3V的供电环境下,就能运行
// 波特率 19200 串口2 PA2(Tx)  PA3(Rx)
// stm32f100c8t6,8Mhz
// 使用ADC1_in0通道 PA0 
// 发送一次ad值就必须接受一个字符'3',然后再次发送
*******************************************************************************/
#include "stm32f10x_lib.h"
#include "usart.h"
#include "delay.h"
#include "sys_config.h"
#include "adc.h"
#include  <math.h>    //Keil library  


#define   uchar unsigned char
#define   uint unsigned int    


  /*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
** 输    入    : 无
** 输    出    : 无
** 返    回    : 无
********************************************************************************
*/

int main(void)
{
  RCC_Configuration();         //配置RCC
  NVIC_Configuration();         //配置中断,没有这一句郁闷了很久
  GPIO_Configuration();         //配置GPIO
  Adc_init();                //初始化ADC
  USART2_Configuration();     //配置串口1
  Delayms(500);                 //延时
  while(1)
 {
   
//    USART1_SendData(0X0D);     //换行
//    USART1_SendData(0X0A);     //回车
    Delayms(5);                 //延时
  }
}

/*************结束***************/

adc.c:

#include <stm32f10x_lib.h>
#include "adc.h"
    
  unsigned char i=0;
  u16 ad[3]={2040,2040,2040};

           
//初始化ADC
//这里我们仅以规则通道为例
//我们默认将开启通道1                                                                       
void  Adc_init(void)
{    
    //先初始化IO口
     RCC->APB2ENR|=1<<2;    //使能PORTA口时钟
    GPIOA->CRL&=0XFFFFF;//PA5 6 7模拟输入            
    RCC->APB2ENR|=1<<9;    //ADC1时钟使能      
    RCC->APB2RSTR|=1<<9;   //ADC1复位
    RCC->APB2RSTR&=~(1<<9);//复位结束        
    RCC->CFGR&=~(3<<14);   //分频因子清零    
    RCC->CFGR|=2<<14;          

    ADC1->CR1&=0XF0FFFF;   //工作模式清零
    ADC1->CR1|=0<<16;      //独立工作模式  
    ADC1->CR1&=~(1<<8);    //非扫描模式      
    ADC1->CR2&=~(1<<1);    //单次转换模式
    ADC1->CR2&=~(7<<17);       
    ADC1->CR2|=7<<17;       //软件控制转换  
    ADC1->CR2|=1<<20;      //使用用外部触发(SWSTART)!!!    必须使用一个事件来触发
    ADC1->CR2&=~(1<<11);   //右对齐    
    ADC1->SQR1&=~(0XF<<20);
    ADC1->SQR1&=0<<20;     //1个转换在规则序列中 也就是只转换规则序列1                

    ADC1->SMPR2&=0XFF007FFF;//通道5 6 7采样时间清空          
    ADC1->SMPR2|=  0XFF8000;      //通道5 6 7  239.5周期,提高采样时间可以提高精确度    

    ADC1->CR2|=1<<0;        //开启AD转换器    
    ADC1->CR2|=1<<3;        //使能复位校准  
    while(ADC1->CR2&1<<3);  //等待校准结束             
    //该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。         
    ADC1->CR2|=1<<2;        //开启AD校准       
    while(ADC1->CR2&1<<2);  //等待校准结束
    //该位由软件设置以开始校准,并在校准结束时由硬件清除  
}                  
//获得ADC值
//ch:通道值 5 6 7
u16 Get_Adc(u8 ch)   
{
    //设置转换序列              
    ADC1->SQR3&=0XFFFFFFF0;//规则序列1 通道ch
    ADC1->SQR3|=ch;                          
    ADC1->CR2|=1<<22;       //启动规则转换通道
    while(!(ADC1->SR&1<<1));//等待转换结束            
    return ADC1->DR;        //返回adc值    
}

u16 Adc_filter()
{
  u16 adc;
   if(i>2)
      i=0;
    ad[i]=Get_Adc(7);            //0通道
    i++;
    adc=(ad[0]+ad[1]+ad[2])/3;     //这样做是防止数值突变
    //Show_data_u16(adc);
    return adc;             
}

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

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

相关文章

equals方法:黑马版

目录 Object类的equals方法 Student类 测试类 第一步&#xff1a;使用比较 第二步&#xff1a;使用equals比较 第三步&#xff1a;在子类-Student类中重写equals方法 代码逐句分析 运行 Object类的equals方法 首先写一个类Student&#xff0c;属性有name和age&#xf…

UE5笔记【十二】蓝图函数BluePrint Function

上一篇讲了蓝图变量&#xff0c;这一篇说蓝图函数。BluePrint Function 函数&#xff0c;一般是为了将一段功能的代码提取出来&#xff0c;然后方便我们反复使用。重复的代码可以提取一个函数。类似的&#xff0c;相同的蓝图&#xff0c;我们也可以提取出一个蓝图函数来。 如…

青龙面板 香蕉

香蕉角本教程 介绍 香蕉视频 app —【多用户版】 一个账户每天稳定1元&#xff0c;可以自己提现&#xff0c;也可以兑换会员&#xff0c;脚本不停会员也不停&#xff01;可注册多个账户&#xff01;&#xff08;多账户福利自行看文章底部&#xff01;&#xff09; 拉取文件 …

【微服务】springboot 整合javassist详解

一、前言 Javassist 是一个开源&#xff0c;用于分析、编辑和创建Java字节码的类库&#xff0c;由东京工业大学数学和计算机科学系的 Shigeru Chiba &#xff08;千叶滋&#xff09;所创建。目前已加入了开放源代码JBoss 应用服务器项目&#xff0c;通过使用Javassist对字节码操…

linux redhat 8 创建逻辑卷

LVM与直接使用物理存储相比,有以下优点: 1. 灵活的容量. 当使用逻辑卷时,文件系统可以扩展到多个磁盘上,你可以聚合多个磁盘或磁盘分区成单一的逻辑卷. 2. 方便的设备命名 逻辑卷可以按你觉得方便的方式来起任何名称. 3.磁盘条块化. 你可以生成一个逻辑盘,它的数据可以被…

记录一次Mac本地启动nacos遇到的问题

nacos 官网&#xff1a;https://nacos.io/zh-cn/docs/quick-start.html 我这里下载的是2.0.3稳定的版本 本地启动&#xff1a;sh startup.sh -m standalone 问题1&#xff1a;Caused by: java.lang.IllegalStateException: No DataSource set 这里是数据源连接有问题&#xff…

Linux网络原理及编程(6)——第十六节 TCP可靠性保证的原理

目录 1、确认应答机制 2、超时重传机制 3、滑动窗口 4、流量控制 5、拥塞控制 6、延迟应答 &#xff08;各位好&#xff0c;博主新建了个公众号《自学编程村》&#xff0c;拉到底部即可看到&#xff0c;有情趣可以关注看看哈哈&#xff0c;关注后还可以加博主wx呦~~~&am…

Apache Flink 水印的工作机制详解与源码阅读

一、时间长河谁能解 在人类生存的地球上&#xff0c;存在着一种很神秘的东西&#xff1a;时间&#xff0c;它看不见摸不着&#xff0c;但速度恒定&#xff0c;单调递增且永无止境的往前推进&#xff0c;人类的历史被淹没在茫茫的时间长河中。同时在地球附近&#xff0c;一个星…

【自动化测试】如何平衡手工和自动化测试

作为一名测试人员&#xff0c;如何平衡手工和自动化测试&#xff0c;是一道绕不过去的课题。不可否认&#xff0c;自动化测试具有提高效率&#xff0c;加快回归速度并因此有助于及时交付项目的好处。但是&#xff0c;在考虑自动化之前&#xff0c;我们应该评估一些要点&#xf…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java毕业生就业管理系统243xa

首先选择计算机题目的时候先看定什么主题&#xff0c;一般的话都选择当年最热门的话题进行组题&#xff0c;就比如说&#xff0c;今年的热门话题有奥运会&#xff0c;全运会&#xff0c;残运会&#xff0c;或者疫情相关的&#xff0c;这些都是热门话题&#xff0c;所以你就可以…

vscode 关闭/忽略/ignore 单个/指定 git 仓库/repository 提示

文章目录1. 问题2. 解决方法2.1 只追踪 打开文件 所在的仓库2.2 忽略指定的仓库3. 参考1. 问题 vscode 当打开的项目中有多个 git 仓库时&#xff0c;默认会显示所有仓库的 status。 有些已经不再使用的仓库可能有多处更改&#xff0c;但我们并不想去处理它。 如果直接关闭 vs…

gcc 4.8.5 的string问题

gcc 4.8.5及一下版本 的string 因为内部内存管理采用了COW的方式&#xff0c;导致了string在多线程的状态下容易崩溃。崩的很没有规律&#xff0c;表现就是string在赋值的时候就莫名其妙的崩了&#xff0c;查看堆栈&#xff0c;你也看不出啥。崩溃的很随机。 为了避免崩溃&…

文本纠错--文本分割N-gram--Macbert模型的调用以及对返回结果的处理

文本根据词典进行纠错 输入一段可能带有错误信息的文字&#xff0c; 通过词典来检测其中可能错误的词。 例如&#xff1a;有句子如下&#xff1a;中央人民政府驻澳门特别行政区联络办公室1日在机关大楼设灵堂    有词典如下&#xff1a;中国人民&#xff0c;中央人民&#x…

漏斗分析 - AARRR模型案例分析

漏斗分析是一套流程式的数据分析方法&#xff0c;能够科学地反映各阶段用户转化情况。漏斗分析模型已经广泛应用于用户行为分析类产品&#xff0c;且功能十分强大&#xff1a;它可以评估总体或各个环节的转化情况、促销活动效果&#xff1b;也可以与其他数据分析模型结合进行深…

【三维目标检测】SSN(二)

SSN数据和源码配置调试过程请参考上一篇博文&#xff1a;【三维目标检测】SSN&#xff08;一&#xff09;_Coding的叶子的博客-CSDN博客。本文主要详细介绍SSN网络结构及其运行中间状态。 1 模型总体过程 SSN主要结构如下图所示&#xff0c;其核心在于提出了shape-aware heads…

认识分布式锁、使用分布式锁 Redission、实现秒杀案例

分布式锁 基本原理 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xff0c;让程序串行执行&…

[附源码]计算机毕业设计基于Vue的社区拼购商城Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

node.js-fs模块学习

目录 1.使用fs.readFile方法读取文件 2.使用fs.writeFile方法写入文件 3.fs小案例-整理成绩并写入到新文件中 4.fs模块-路径动态拼接的问题 1.使用fs.readFile方法读取文件 //导入fs模块 const fs require(fs)//调用fs读取文件 //参数1&#xff1a;读取文件的存放路径 //…

spring——Spring Bean属性注入——短命名空间注入——p 命名空间注入(setter注入)...

短命名空间注入 我们在通过构造函数或 setter 方法进行属性注入时&#xff0c;通常是在 <bean> 元素中嵌套 <property> 和 <constructor-arg> 元素来实现的。这种方式虽然结构清晰&#xff0c;但书写较繁琐。Spring 框架提供了 2 种短命名空间&#xff0c;可…

java基于Springboot的论坛管理系统-计算机毕业设计

项目介绍 在社会快速发展的影响下&#xff0c;论坛管理系统继续发展&#xff0c;使论坛管理系统的管理和运营比过去十年更加信息化。依照这一现实为基础&#xff0c;设计一个快捷而又方便的网上论坛管理系统是一项十分重要并且有价值的事情。对于传统的论坛管理系统控制模型来…