news 2026/3/25 17:20:18

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/3/21 8:56:15

Step-Audio 2 mini:如何让AI更懂你的声音?

Step-Audio 2 mini:如何让AI更懂你的声音? 【免费下载链接】Step-Audio-2-mini-Think 项目地址: https://ai.gitcode.com/StepFun/Step-Audio-2-mini-Think 导语 Step-Audio 2 mini作为一款端到端多模态大语言模型,通过融合语音理解…

作者头像 李华
网站建设 2026/3/22 9:47:25

手把手教你用AI手势识别镜像:彩虹骨骼效果惊艳实测

手把手教你用AI手势识别镜像:彩虹骨骼效果惊艳实测 1. 引言:从“比耶”到人机交互的未来 在智能硬件、虚拟现实和无障碍交互日益普及的今天,手势识别正成为连接人类意图与数字世界的桥梁。无论是AR/VR中的自然操控,还是智能家居…

作者头像 李华
网站建设 2026/3/25 11:24:17

触摸屏ITO导电层作用揭秘:图解说明材料原理

触摸屏里的“隐形电网”:ITO导电层如何让玻璃既透明又能感知触摸?你有没有想过,手机屏幕明明是一块完整的玻璃,为什么你的手指轻轻一碰,它就知道你在哪儿点?更神奇的是——这块玻璃还必须足够透明&#xff…

作者头像 李华
网站建设 2026/3/23 23:08:16

CNI研究

衡量 1.成本 2.风险 参考 https://juejin.cn/post/7049609041344987143/ https://cloud.tencent.com/developer/article/2402384 https://sigridjin.medium.com/network-architecture-deep-dive-amazon-vpc-cni-in-eks-406af36844cb

作者头像 李华
网站建设 2026/3/21 5:30:41

终极编码助手:DeepSeek-Coder-V2开源模型震撼发布

终极编码助手:DeepSeek-Coder-V2开源模型震撼发布 【免费下载链接】DeepSeek-Coder-V2-Instruct-0724 DeepSeek-Coder-V2-Instruct-0724,一款强大的开源代码语言模型,拥有与GPT4-Turbo相媲美的代码任务性能。它基于MoE技术,不仅提…

作者头像 李华
网站建设 2026/3/24 0:20:50

亲测AI手势识别镜像:彩虹骨骼效果惊艳,CPU也能流畅运行

亲测AI手势识别镜像:彩虹骨骼效果惊艳,CPU也能流畅运行 1. 引言:为什么我们需要本地化、高可视化的手势识别? 在人机交互日益智能化的今天,手势识别正逐步从实验室走向消费级应用——无论是智能驾驶中的非接触控制&a…

作者头像 李华