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 的相关文章

  • 使用RT-Thread studio(RT-Thread4.0.3)的PWM功能(STM32F103的PA15口)步骤

    打开PWM组件 修改board h的宏 这里注意移植的时候要将HAL TIM Base MspInit函数名改为HAL TIM PWM MspInit 修改board c xff0c 在文件最后增加以下内容 xff08 因为用的是PA15所
  • STM32F103笔记(二)——GPIO原理

    GPIO的工作原理与两个实验实例 一 STM32F103 GPIO说明1 stm32 GPIO引脚的主要功能2 GPIO相关配置寄存器的简介3 STM32F103 GPIO的8种工作方式4种输入模式4种输出模式 二 点亮LED实例 xff0
  • 基于STM32F103入门1——点亮LED灯

    今天学习了STM32固件库点灯程序 点灯也可以玩过很多好玩的东西 xff0c 在这里做一下总结 STM32点灯程序合集 1 xff1a 新建固件库工程文件1 1找到一个固件库模板1 2 xff1a 打开KEIL5新建工程1 3 xff1a
  • 【stm32f103】认识GPIO

    认识GPIO 什么是GPIOGPIO基本结构保护二极管输出模式推挽输出开漏输出 输出数据寄存器 xff08 参考手册8 2 xff09 GPIOx ODRGPIOx BSRR 输入模式 GPIO工作模式输入模式 xff08 模拟 浮空 上拉
  • STM32F103 舵机控制控制程序PWM配置

    上一篇博文我讲了如何按自己想的配置PWM定时器 下来发现会不会有同学根本不想用重映像 xff0c 原本的引脚就可以 xff0c xff1a xff09 xff0c 所以在开始这篇之前 xff0c 先把TIM2定时器的设置程序发一下 xff1
  • Matlab代码导入STM32F103流程

    文章目录 软件准备STM32CubeMX简介配置STM32CUBEMX配置SIMULINKSIMULINK对STM32F103进行点灯试验一般算法导入到STM32问题故障解决参考 软件准备 安装MATLAB2019a xff0c 64位 下
  • stm32f103最小系统板详细介绍

    一 什么是单片机最小系统 常见的单片机最小系统为单片机能独立运行程序及控制外围电路的最简单电路 xff0c 主要由单片机 晶振电路 复位电路三部分构成 Stm32f103c8t6也不例外 xff0c 构成最小的运行电路也需要以上三部分 St
  • STM32f103时钟系统简介

    主要是讲解怎么看懂这个图 一 内置RC振荡器 xff08 HSI RC xff09 频率是约为8MHz xff0c 因为其频率不是很稳定 其可作为系统时钟的一个选项 二 晶振振荡器 xff08 HSE OSC xff09 从图中可以看到其是
  • STM32F103最小系统图例

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

    文章目录 前言1 移植FreeRTOS2 测试FreeRTOS3 移植工程 前言 该篇环境为 xff1a STM32F103ZET6 Keil 库函数版本 F4 F7 H7移植同理 FreeRTOS源码 xff1a 链接 xff1a htt
  • STM32F103 CAN总线配置总结

    stm32的can总线的配置如下 xff1a CAN InitStructure CAN TTCM 61 DISABLE 禁止时间触发通信模式 CAN InitStructure CAN ABOM 61 DISABLE CAN InitSt
  • stm32f103之HC_SR04超声波测距

    参考资料 xff1a stm32与HC SR04超声波传感器测距 HC SR04超声波测距注意事项 STM32 驱动HC SR04超声波测距模块 HC SR04初识 HC SR04 超声波原理图讲解与时序分析与arduino使用 HC SR
  • 拓展模块使用教程和心得(三):ULN2003模块与28BYJ48步进电机(测试平台:STC8A8K,STM32F103)

    成就更好的自己 关于ULN2003模块和对应的28BYJ48步进电机 xff0c 网上现有的资料与教程对于初学者有点不太友好 xff0c 造成的现象是仅仅只能让步进电机转起来 xff0c 但是没有对于控制转速和转角的实践分析 xff0c 本
  • stm32f103c8t6+dht11测量温湿度(单总线协议)

    核心问题 如何根据电路和时序来写程序 接口协议 单总线 意味着一根数据线实现接收和发送 所以相应的GPIO口要设置为2种模式 输入 输出 电路 如果没有在电路中作5k上拉 可以把GPIO模式设置成GPIO Mode IPU实现软件上拉的效果
  • STM32F103 GPIO输出模式2MHz,10MHz,50MHz波形对比

    在STM32F103中GPIO的输出模式有三种速度配置 如图所示 经过测试发现 这三种速度的输出模式与IO的翻转频率没有关系 它们影响的可能是驱动能力 下面是在IO极限频率 18MHz 下 三种模式的波形
  • STM32F103 UART4串口使用DMA接收不定长数据和DMA中断发送

    一 前言 使用DMA通信的好处是 不占用单片机资源 不像普通串口中断 发送一个字节触发一次中断 发送100个字节触发100次中断 接收一个字节触发一次中断 接收200个字节触发200次中断 数据接收完毕触发一次DMA中断 发送数据完毕触发一
  • 基于STM32F103 实现按键状态机

    文章目录 开发板 开发环境 前言 按键消抖 按键硬件原理图 软件延时实现思路 实验目的 代码 按键状态 按键信息 按键相关定义 按键底层配置及状态获取 总结 开发板 正点原子STM32F103ZET6战舰 开发环境 stm32cubeMX
  • STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式

    机器人开发过程中 对于直流电机来说 编码器至关重要 它不仅可以使我们对电极进行精确的速度闭环 位置闭环 还可以通过时间积分 根据运动学关系 获得速度 位置等信息 STM32的定时器有编码器模式 大大的方便我们的开发 使用STM32cubeM
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • 解决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