STM32F103 - 配置规则通道参数 - 05 - unfinished -unfinished-unfinished

2023-11-12

五 、配置规则通道参数

//设置指定ADC的规则组通道,一个序列,采样时间   常规通道配置
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );    //ADC1,ADC通道,采样时间为239.5周期  

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
{
  uint32_t tmpreg1 = 0, tmpreg2 = 0;
  assert_param(IS_ADC_ALL_PERIPH(ADCx));    /* 检查参数 */
  assert_param(IS_ADC_CHANNEL(ADC_Channel));
  assert_param(IS_ADC_REGULAR_RANK(Rank));
  assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));
 
  if (ADC_Channel > ADC_Channel_9)    /* if ADC_Channel_10 ... ADC_Channel_17 is selected */
  {
    tmpreg1 = ADCx->SMPR1;  /* Get the old register value */
    tmpreg2 = SMPR1_SMP_Set << (3 * (ADC_Channel - 10));    /* Calculate the mask to clear */   
    tmpreg1 &= ~tmpreg2;    /* Clear the old channel sample time */    
    tmpreg2 = (uint32_t)ADC_SampleTime << (3 * (ADC_Channel - 10));    /* Calculate the mask to set */    
    tmpreg1 |= tmpreg2;    /* Set the new channel sample time */   
    ADCx->SMPR1 = tmpreg1;    /* Store the new register value */
  }
  else    /* ADC_Channel include in ADC_Channel_[0..9] */
  {
    tmpreg1 = ADCx->SMPR2;    /* 获取旧的寄存器值 */   
    tmpreg2 = SMPR2_SMP_Set << (3 * ADC_Channel);    /* 计算掩码以清除 */
    tmpreg1 &= ~tmpreg2;    /* 清除旧通道的采样时间 */   
    tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel);    /* 计算要设置的掩码 */    
    tmpreg1 |= tmpreg2;    /* 设置新通道采样时间 */    
    ADCx->SMPR2 = tmpreg1;    /* 存储新的寄存器值 */
  }
  
  if (Rank < 7)    /* For Rank 1 to 6 */
  {
    tmpreg1 = ADCx->SQR3;/* Get the old register value */
    tmpreg2 = SQR3_SQ_Set << (5 * (Rank - 1));/* Calculate the mask to clear */
    tmpreg1 &= ~tmpreg2;/* Clear the old SQx bits for the selected rank */
    tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 1));/* Calculate the mask to set */
    tmpreg1 |= tmpreg2;/* Set the SQx bits for the selected rank */
    ADCx->SQR3 = tmpreg1;/* Store the new register value */
  }
  
  else if (Rank < 13)/* For Rank 7 to 12 */
  {
    tmpreg1 = ADCx->SQR2;/* Get the old register value */
    tmpreg2 = SQR2_SQ_Set << (5 * (Rank - 7));/* Calculate the mask to clear */
    tmpreg1 &= ~tmpreg2;/* Clear the old SQx bits for the selected rank */
    tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 7));/* Calculate the mask to set */
    tmpreg1 |= tmpreg2;/* Set the SQx bits for the selected rank */
    ADCx->SQR2 = tmpreg1;/* Store the new register value */
  }
  
  else/* For Rank 13 to 16 */
  {
    tmpreg1 = ADCx->SQR1;/* Get the old register value */
    tmpreg2 = SQR1_SQ_Set << (5 * (Rank - 13));/* Calculate the mask to clear */
    tmpreg1 &= ~tmpreg2;/* Clear the old SQx bits for the selected rank */
    tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 13));/* Calculate the mask to set */
    tmpreg1 |= tmpreg2;/* Set the SQx bits for the selected rank */
    ADCx->SQR1 = tmpreg1;/* Store the new register value */
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103 - 配置规则通道参数 - 05 - unfinished -unfinished-unfinished 的相关文章

  • stm32f103 hal库中timer使用

    stm32f103 hal库中timer使用 使用步骤1 初始化定时器2 HAL TIM Base Init amp htim2 基本参数配置3 重写void HAL TIM Base MspInit TIM HandleTypeDef t
  • STM32F103 配置Systick

    Systick系统滴答时钟 Systick h ifndef SYSTICK H define SYSTICK H include 34 stm32f10x h 34 void SysTick Init void void Delay ms
  • stm32f103-gpio源码理解

    提要 xff1a 参照野火的stm32f103开发指南 xff0c 对标准库的构造进行理解 xff1a xff08 1 xff09 使用结构体 xff0c 使用宏 xff0c 使用枚举 xff08 2 xff09 因为参数是可变的 xff0
  • STM32F103系列PWM波

    话不多说 xff0c 直接上我能跑通的代码 pwm h span class token macro property span class token directive hash span span class token direct
  • 花两天时间写的stm32f103串口BootLoader(有keil工程)

    因为在论坛和官网都没搜到完全合适的BootLoader xff0c 所以自己移植完成了一个BootLoader工程 另外附APP文件工程 xff0c 可做实验 用良心保证 xff0c 看完后可以做一个成功的实验 上位机选用SecureCrt
  • STM32F103 KEIL 标准库直接添加DSP库

    前言 近期由于比赛需要 xff0c 想要在STM32上移植DSP库进行FFT变换 xff0c 找了很多资料都是利用CUBEMX进行导入的方法 xff0c 本人使用的是标准库 xff0c 对HAL库并不熟悉 xff0c 所以考虑到移植的方便采
  • Keil 模拟器 STM32F103 上手指南

    一般嵌入式操作系统因为它的特殊性 xff0c 往往和硬件平台密切相关连 xff0c 具体的嵌入式操作系统往往只能在特定的硬件上运行 对于刚接触 RT Thread 操作系统的读者并不容易马上就获得一个和 RT Thread 操作系统相配套的
  • STM32F103最小系统图例

    一 STM32F103最小系统 1 最小系统的构成2 连接图3 电源电路4 复位电路5 时钟电路6 程序下载电路7 启动配置电路 1 最小系统的构成 单片机芯片 供电电路 时钟电路 复位电路 程序下载电路 启动配置电路 2 连接图 3 电源
  • STM32F103移植FreeRTOS警告记录

    1 xff1a 新建MDK工程 xff0c 选择文件存放路径 xff0c 选择芯片型号 xff0c 创建一个USER文件 xff0c 复制自动创建的文件到USER文件中 xff0c 关闭程序 创建一个OBJ目标文件夹 xff0c 打开软件选
  • [STM32F1]关于STM32F103芯片按钮机制串口发送程序

    就是目前遇到一个项目 xff0c 是监视各个按钮状态并将各个按钮的状态发送至上位机 xff0c 上位机进行整体程序逻辑动作 一般情况下串口发送可以直接一直发送给上位机 xff0c 通过解析不同数据位0和1的状态可以知道具体哪个按钮按下 xf
  • STM32F103 PB3,PB4,PA15,IO不可控问题

    STM32默认启动时PB4 PB3 PA15三个引脚不是普通IO xff0c 而是JTAG的复用功能 xff0c 分别为JNTRST JTDI JTDO 由上可以知要使PB3可以用 须关闭JTAG DP SW DP 可以不管 添加以下配置即
  • 使用STM32F103做CAN的收发通信

    下面也是搭建嵌入式系统所必须的一个部分 参考网站 xff1a https www cnblogs com craigtao p 3645148 html https blog csdn net qq 29413829 article det
  • STM32F103控制PCA9685产生16路PWM波控制SG90舵机

    STM32控制PCA9685产生16路PWM波控制SG90舵机 如果你能点开这篇文章 xff0c 说明你已经知道PCA9685是多么强大 xff0c NXP公司原本做这片芯片是为了提供给LED使用 xff0c 在其官方文档里也能看到所有PW
  • STM32F103 GPIO内部电路图

    GPIO结构图 GPIO工作模式 输入模式 输入浮空 输入上拉 输入下拉 模拟输入 输出模式 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能 输入浮空 输入上拉 输入下拉 模拟输入 开漏输出 开漏复用功能 推挽式输出 推挽式复用功能
  • 基于STM32的超声波感应垃圾桶

    目录 成果演示 材料 主要代码 总结 成果演示 材料 STM323f103开发板 最小系统均可 超声波模块 HC SR04模块 舵机一个 垃圾桶模型 主要代码 超声波模块 include ultrasonsic h include dela
  • 如何根据芯片手册时序图编写驱动程序

    如何根据芯片手册时序图编写驱动程序 对于电子开发者来说 刚刚拿到一个芯片 常用的芯片可以参考网上的例程来做深入了解 对于一个不常用的芯片来说 Datasheet几乎是使用芯片的唯一的资料 所以根据Datasheet时序图写出对应的驱动程序就
  • STM32定时器-基本定时器

    目录 定时器分类 基本定时器功能框图讲解 基本定时器功能 时钟源 计数器时钟 计数器 自动重装载寄存器 定时时间的计算 定时器初始化结构体详解 实验 定时器分类 STM32F1 系列中 除了互联型的产品 共有 8 个定时器 分为基本定时器
  • STM32进入STOP模式并唤醒实验总结

    项目需求 需要实现设备低功耗功能 实现过程中遇到几个问题 以此记录总结 stm32f103ret6 问题一 执行PWR EnterSTOPMode PWR Regulator LowPower PWR STOPEntry WFI 后 程序继
  • STM32基本IO的寄存器介绍

    STM32基本IO的寄存器介绍 说明 简介 端口配置低寄存器 32位 数据寄存器 32位 置位 复位寄存器 32位 复位寄存器 16位 锁存寄存器 32位 说明 最近自己在学习STM32 跟着原子哥的STM32教学视频学习 参考的资料有来自
  • 解决keil中 点击setting 程序中断问题

    自己写了一个LED常亮的程序 入门嘛 但是程序在下载后 点击 debug setting 在软件识别J link后 程序是成功的 但是LED不亮了 下面是解决方法 记住把2标记处的对勾去掉就可以了 这个功能是 在你连接完成时自动在Reset

随机推荐

  • maven 检查依赖冲突和版本冲突

    在项目发布的时候 一般都需要进行依赖冲突检查或者重复类的检查 这个时候我一般会使用下面的两个命令 mvn U clean package Dmaven test skip true enforcer enforce DcheckDeploy
  • python argparse变量到class变量的转换代码

    github上的项目总喜欢使用argparse bash来运行 这对于快速运行一个项目来说可能有好处 但在debug的时候是很难受的 因为我们需要在 sh文件中修改传入参数 并且不能使用jupyter 以下是把parser转换成显式clas
  • Docker容器 - 启动报错:No space left on device

    目录 运行 报错 解决问题 具体操作 重新运行 运行 docker run it 镜像名 bin bash 报错 docker Error response from daemon mkdir var lib docker overlay2
  • WSL2 忘记用户密码

    步骤一 将默认用户切换为root 在Windows里启动命令提示符 输入 ubuntu2004 config default user root 这就已经将我的ubuntu20 04的默认用户切换为了root 不同的WSL版本可能命令的第一
  • python程序作功率谱、倒频谱

    1 功率谱 from scipy fftpack import fft fftshift ifft from scipy fftpack import fftfreq import numpy as np import matplotlib
  • 服务器cpu占用过高一般是什么原因,如何解决服务器cpu使用率过高的問題

    方法 步骤 1 打开任务管理器 关闭一些占用cpu较高的进程 但是不要关闭System Idle Process这个进程 这个进程是系统管理的进程 另外有很多个svchost exe 这些进程也不要随便关闭 不然会引起关机或者系统重启 2
  • 磁盘分区管理

    普通分区 root zhaikaiyun fdisk dev sdb 给磁盘sdb创建分区 Welcome to fdisk util linux 2 23 2 Changes will remain in memory only unti
  • GB2312 汉字拼音对照表(6727字)

    http zh transwiki org wiki index php GB2312 E6 B1 89 E5 AD 97 E6 8B BC E9 9F B3 E5 AF B9 E7 85 A7 E8 A1 A8 啊 a 阿 a e 埃 a
  • Java.lang.Byte类之shortValue()方法的功能说明

    转自 Java lang Byte类之shortValue 方法的功能说明 下文笔者将讲述Java lang Byte类中shortValue 方法的功能简介说明 如下所示 shortValue 方法的功能 java lang Byte s
  • pycharm错误ERROR: Command errored out with exit status 1:

    报错 ERROR Command errored out with exit status 1 错误原因 python版本与pycharm要求的版本不一致 解决方法 1 在pycharm中找到File 打开Settings 2 在Setti
  • FMQL在linux下GPIO的映射关系与使用

    最近几年国产化芯片的使用如火如荼 部分国产手册说明杂且描述不清 尤其是一些映射关系使用文字描述非常不直观 博主在使用GPIO功能输出的时候反复看了几遍再去尝试控制耗费了不少时间 现结合相关文档总结GPIO映射表格 方便读者使用 1 GPIO
  • 性能测试——结果量含义(系统吞吐量(TPS)、用户并发量)

    性能测试 首先 开发软件的目的是为了让用户使用 我们先站在用户的角度分析一下 用户需要关注哪些性能 对于用户来说 当点击一个按钮 链接或发出一条指令开始 到系统把结果已用户感知的形式展现出来为止 这个过程所消耗的时间是用户对这个软件性能的直
  • Run-Time Check Failure #2 – Stack around the variable 'a' was corrupted.

    Run Time Check Failure 2 Stack around the variable a was corrupted 今天在用VS调代码的时候 会出现这个问题 经过查找以及DEBUG 最终发现是由于建立的数组下标溢出造成的
  • 在linux上开关swap

    swapon a 会开启 etc fstab上定义的所有swap swapoff a会关闭所有swap cat proc meminfo会显示swap的情况 另外下面的命令也会显示swap swapon s Filename Type Si
  • 什么是域名,怎么买服务器

    1 域名 域名 是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称 用于在数据传 输时标识计算机的电子方位 www baidu com com是顶级域名 baidu是一级域名 www是二级域名 每个域名可以对应一个i
  • tars协议序列化分析

    引言 tars序列化过程 TARS编码协议是一种数据编解码规则 它将整形 枚举值 字符串 序列 字典 自定义结构体等数据类型按照一定的规则编码到二进制数据流中 对端接收到二进制数据流之后 按照相应的规则反序列化可得到原始数值 简单理解 TA
  • os.walk详解

    https www jianshu com p bbad16822eab python中os walk是一个简单易用的文件 目录遍历器 可以帮助我们高效的处理文件 目录方面的事情 1 载入 要使用os walk 首先要载入该函数 可以使用以
  • 关于MP3文件中找不到TAG标签的问题

    今天做项目需要上传mp3文件 在postman中测试的时候发现找不到这个mp3文件中的TAG标签 心想着不应该啊 我这是正规音频啊 如果是图片把后缀改成mp3没有TAG是肯定的 但是我这个音频为什么也没有呢 经过百度一番 初步判断有可能问题
  • xcode常用快捷键 快捷生成代码分享

    快速打印 NSLog lt text gt 快速string NSString 快速for循环 for int i 0 i lt lt max gt i lt code gt 快速setter和getter property lt type
  • STM32F103 - 配置规则通道参数 - 05 - unfinished -unfinished-unfinished

    五 配置规则通道参数 设置指定ADC的规则组通道 一个序列 采样时间 常规通道配置 ADC RegularChannelConfig ADC1 ch 1 ADC SampleTime 239Cycles5 ADC1 ADC通道 采样时间为2