news 2026/9/24 8:24:09

STM32_ADC扫描模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32_ADC扫描模式

实现电压器实时模拟信号转数字信号测量,最终结果会显示为波形图

#include "stm32f10x.h"
#include "usart.h"

void APP_USART1_Init(void);
void APP_TIM1_Init(void);
void APP_ADC1_Init(void);

int main(void)
{
APP_USART1_Init();
APP_TIM1_Init();
APP_ADC1_Init();

while(1)
{
//#1.等待注入序列转换完成(JEOC标志位由0转为1)
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_JEOC)== RESET);

//#2.读取转换的结果(读取JDR寄存器中的值)
uint16_t jdr1 = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1);
uint16_t jdr2 = ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2);

//#3.将读取到的二进制结果再转换为电压值
float v1,v2;
v1 = jdr1 * (3.3f / 4095);
v2 = jdr2 * (3.3f / 4095);

//#4.将转换后的结果通过串口发送出去
My_USART_Printf(USART1, "%.3f,%.3f\n", v1 , v2);
}
}

void APP_USART1_Init(void){
//#1.初始化IO引脚 AP9 AF_PP
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitTypeDef GPIO_InitStruct = {0};

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_Init(GPIOA, &GPIO_InitStruct);

//#2.初始化USART1模块
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

USART_InitTypeDef USART_InitStruct = {0};

USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_BaudRate = 115200;
USART_InitStruct.USART_Mode = USART_Mode_Tx;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;

USART_Init(USART1, &USART_InitStruct);

USART_Cmd(USART1, ENABLE);

//#3.闭合USART模块的总开关
USART_Cmd(USART1, ENABLE);
}

void APP_TIM1_Init(void){
//#1.开启定时器1的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

//#2.初始化时基单元
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct = {0};

TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period = 999;
TIM_TimeBaseInitStruct.TIM_Prescaler = 71;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStruct);

//#3.将TRGO设置为update模式
TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);

//#4.闭合TIM1的总开关
TIM_Cmd(TIM1, ENABLE);
}

void APP_ADC1_Init(void){
//#1.初始化IO引脚 PA0 PA1 模拟模式
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitTypeDef GPIO_InitStruct;

GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;

GPIO_Init(GPIOA, &GPIO_InitStruct);

//#2.配置ADC的时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div6);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

//#3.初始化ADC1基本参数
ADC_InitTypeDef ADC_InitStruct = {0};

ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
ADC_InitStruct.ADC_NbrOfChannel = 1;
ADC_InitStruct.ADC_ScanConvMode = DISABLE;

ADC_Init(ADC1, &ADC_InitStruct);

//#4.配置注入序列的额外参数
//#4.1配置注入序列的长度
ADC_InjectedSequencerLengthConfig(ADC1, 2);

//#4.2配置注入序列的通道信息(写到计划表的哪几行,采样时间)
ADC_InjectedChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_13Cycles5);
ADC_InjectedChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_13Cycles5);

//#4.3选择外部触发信号
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_T1_TRGO);

//#4.4 闭合注入序列外部触发开关
ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE);

//#4.5闭合ADC模块总开关
ADC_Cmd(ADC1, ENABLE);
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 0:48:03

Qwen3-1.7B-FP8:17亿参数AI双模式推理新体验

Qwen3-1.7B-FP8:17亿参数AI双模式推理新体验 【免费下载链接】Qwen3-1.7B-FP8 Qwen3-1.7B的 FP8 版本,具有以下功能: 类型:因果语言模型 训练阶段:训练前和训练后 参数数量:17亿 参数数量(非嵌入…

作者头像 李华
网站建设 2026/9/20 22:58:11

YOLOv8极速CPU版实测:毫秒级工业目标检测体验

YOLOv8极速CPU版实测:毫秒级工业目标检测体验 1. 引言:工业级目标检测的“速度与精度”双重要求 在智能制造、自动化质检、智能安防等工业场景中,实时性和稳定性是AI视觉系统的核心指标。传统基于GPU的目标检测方案虽然性能强大&#xff0c…

作者头像 李华
网站建设 2026/9/20 22:58:11

实测MediaPipe Hands镜像:彩虹骨骼可视化效果惊艳分享

实测MediaPipe Hands镜像:彩虹骨骼可视化效果惊艳分享 1. 背景与技术价值 近年来,随着AI眼镜、增强现实(AR)和虚拟现实(VR)设备的爆发式增长,手势识别技术作为自然交互的核心手段再次成为研究…

作者头像 李华
网站建设 2026/9/22 12:26:31

Qwen-Image-Edit-MeiTu:AI修图新体验,让细节与美感更出众

Qwen-Image-Edit-MeiTu:AI修图新体验,让细节与美感更出众 【免费下载链接】Qwen-Image-Edit-MeiTu 项目地址: https://ai.gitcode.com/hf_mirrors/valiantcat/Qwen-Image-Edit-MeiTu 导语:近日,Valiant Cat AI Lab推出基于…

作者头像 李华
网站建设 2026/9/20 22:59:09

MediaPipe Pose技术揭秘:骨骼检测原理

MediaPipe Pose技术揭秘:骨骼检测原理 1. 技术背景与核心价值 随着计算机视觉技术的快速发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟现实和人机交互等领域的关键技术。传统方法依赖复杂的深度学习…

作者头像 李华
网站建设 2026/9/24 0:19:24

优化USB3.0传输速度设计:眼图闭合因素深度剖析

深度拆解USB3.0眼图闭合:从波形塌陷到5Gbps满速的实战突围你有没有遇到过这样的情况?芯片明明支持USB3.0,理论速率5 Gbps,可实测传输大文件时速度卡在3.x Gbps,甚至频繁掉速、自动降级成USB2.0?别急着怀疑固…

作者头像 李华