news 2026/4/22 6:59:20

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/4/18 4:24:41

DeepSeek-Coder-V2开源:338种语言的AI编程引擎

DeepSeek-Coder-V2开源:338种语言的AI编程引擎 【免费下载链接】DeepSeek-Coder-V2-Base 开源代码智能利器DeepSeek-Coder-V2,性能比肩GPT4-Turbo,支持338种编程语言,128K代码上下文,助力编程如虎添翼。 项目地址: h…

作者头像 李华
网站建设 2026/4/20 15:27:23

人体姿态估计商业化应用:MediaPipe Pose案例

人体姿态估计商业化应用:MediaPipe Pose案例 1. 引言:AI 人体骨骼关键点检测的商业价值 随着人工智能在视觉领域的深入发展,人体姿态估计(Human Pose Estimation)正逐步从实验室走向实际商业场景。该技术通过识别图像…

作者头像 李华
网站建设 2026/4/21 7:18:12

腾讯混元7B开源:256K上下文+双推理引擎新体验

腾讯混元7B开源:256K上下文双推理引擎新体验 【免费下载链接】Hunyuan-7B-Instruct 腾讯混元开源70亿参数指令微调模型,具备256K超长上下文处理能力,采用先进分组查询注意力技术。在多项中英文基准测试中表现卓越,尤其在数学推理与…

作者头像 李华
网站建设 2026/4/18 3:00:48

AI骨骼关键点检测教程:33个关节定位与优化参数详解

AI骨骼关键点检测教程:33个关节定位与优化参数详解 1. 引言:AI人体骨骼关键点检测的现实价值 随着计算机视觉技术的快速发展,人体姿态估计(Human Pose Estimation)已成为智能健身、动作捕捉、虚拟试衣、人机交互等领…

作者头像 李华
网站建设 2026/4/18 16:44:31

AI运动康复应用落地:MediaPipe姿态检测部署实操

AI运动康复应用落地:MediaPipe姿态检测部署实操 1. 引言:AI在运动康复中的关键角色 随着人工智能技术的深入发展,AI驱动的运动康复系统正逐步从实验室走向临床与家庭场景。传统康复训练依赖人工观察和经验判断,存在主观性强、反…

作者头像 李华
网站建设 2026/4/16 14:49:59

腾讯Youtu-Embedding:20亿参数中文嵌入新冠军

腾讯Youtu-Embedding:20亿参数中文嵌入新冠军 【免费下载链接】Youtu-Embedding 项目地址: https://ai.gitcode.com/tencent_hunyuan/Youtu-Embedding 导语:腾讯优图实验室推出的Youtu-Embedding模型以20亿参数规模,在中文文本嵌入领…

作者头像 李华