news 2026/6/27 5:02:43

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/6/23 0:37:49

基于MediaPipe的健身APP原型开发:骨骼检测集成实战教程

基于MediaPipe的健身APP原型开发:骨骼检测集成实战教程 1. 引言:AI驱动的智能健身新范式 1.1 业务场景与技术背景 随着居家健身和在线运动课程的兴起,用户对动作规范性反馈的需求日益增长。传统视频教学缺乏实时纠错能力,而专业…

作者头像 李华
网站建设 2026/6/20 20:41:44

LongAlign-13B-64k:64k长文本对话AI新体验

LongAlign-13B-64k:64k长文本对话AI新体验 【免费下载链接】LongAlign-13B-64k 项目地址: https://ai.gitcode.com/zai-org/LongAlign-13B-64k 导语:THUDM(清华大学知识工程实验室)发布LongAlign-13B-64k大语言模型&#…

作者头像 李华
网站建设 2026/6/12 21:34:34

Phi-4-Flash推理:3.8B参数实现10倍数学解题提速

Phi-4-Flash推理:3.8B参数实现10倍数学解题提速 【免费下载链接】Phi-4-mini-flash-reasoning 项目地址: https://ai.gitcode.com/hf_mirrors/microsoft/Phi-4-mini-flash-reasoning 导语 微软最新发布的Phi-4-mini-flash-reasoning模型以3.8B参数实现了数…

作者头像 李华
网站建设 2026/6/23 0:37:34

从0开始学手势识别:MediaPipe Hands镜像快速上手

从0开始学手势识别:MediaPipe Hands镜像快速上手 1. 引言:为什么选择MediaPipe Hands做手势识别? 在人机交互、虚拟现实、智能监控等前沿领域,手势识别正成为连接人类意图与数字世界的桥梁。传统基于硬件的手势捕捉设备成本高、…

作者头像 李华
网站建设 2026/6/25 18:32:03

Qwen3-8B-AWQ:4位量化AI的双模智能新体验

Qwen3-8B-AWQ:4位量化AI的双模智能新体验 【免费下载链接】Qwen3-8B-AWQ 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-8B-AWQ 导语 阿里达摩院最新发布的Qwen3-8B-AWQ模型,通过4位AWQ量化技术实现了高性能与低资源消耗的平衡&…

作者头像 李华
网站建设 2026/6/24 0:09:47

StepVideo-TI2V:AI图文转视频新工具开源!

StepVideo-TI2V:AI图文转视频新工具开源! 【免费下载链接】stepvideo-ti2v 项目地址: https://ai.gitcode.com/StepFun/stepvideo-ti2v 导语:StepFun公司正式开源图文转视频生成模型StepVideo-TI2V,该工具通过创新的分布式…

作者头像 李华