STM32的ADC(DMA)在数码管上无法显示值 2C

数码管的程序是正确的,配置程序也是仿照例程写的,有哪位前辈遇到过类似的问题呢
DMA循环读数,ADC循环采样

int main(void)
{

    extern __IO uint32_t ADC_ConvertedValue;
    __IO uint16_t ADC_ConvertedValue2;
    __IO uint16_t ADC_ConvertedValueLocal=15;


    NumInit();          
    SysTickInit();  
    ADC1_Init();        
    Timer3Init();
    Timer3Delay_ms(100);



while(1)
    {
            ADC_ConvertedValue2=ADC_ConvertedValue&0x0000FFFF;
            ADC_ConvertedValueLocal=(int)ADC_ConvertedValue2/4096*3300;
            SetNumDisplayDecimal(ADC_ConvertedValueLocal);  //值显示在数码管上
    }//End of While(1)
} 

#include "adc.h"

#define ADC1_DR_Address    ((u32)0x40012400+0x4c)

__IO uint32_t ADC_ConvertedValue;
//__IO u16 ADC_ConvertedValueLocal;



 void ADC1_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    /* Enable DMA clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

    /* Enable ADC1 and GPIOC clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);

    /* Configure PA6  as analog input */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 
    GPIO_Init(GPIOA, &GPIO_InitStructure);          
}


 void ADC1_Mode_Config(void)
{
    DMA_InitTypeDef DMA_InitStructure;
    ADC_InitTypeDef ADC_InitStructure;

    /* DMA channel1 configuration */
    DMA_DeInit(DMA1_Channel1);
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;  
    DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&ADC_ConvertedValue;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
    DMA_InitStructure.DMA_BufferSize = 1;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;  
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;     
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;
    DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
    DMA_Init(DMA1_Channel1, &DMA_InitStructure);

    /* Enable DMA channel1 */
    DMA_Cmd(DMA1_Channel1, ENABLE);

    /* ADC1 configuration */

    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  
    ADC_InitStructure.ADC_ScanConvMode = DISABLE ;  
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;  
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; 
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  
    ADC_InitStructure.ADC_NbrOfChannel = 1;     
    ADC_Init(ADC1, &ADC_InitStructure);

    //ADC_TempSensorVrefintCmd(ENABLE);

    /*ÅäÖÃADCʱÖÓ£¬ÎªPCLK2µÄ8·ÖƵ£¬¼´9Hz*/
    RCC_ADCCLKConfig(RCC_PCLK2_Div8); 
    /*ÅäÖÃADC1µÄͨµÀ6Ϊ55.  5¸ö²ÉÑùÖÜÆÚ£¬ÐòÁÐΪ1 */ 
    ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_55Cycles5);

    /* Enable ADC1 DMA */
    ADC_DMACmd(ADC1, ENABLE);

    /* Enable ADC1 */
    ADC_Cmd(ADC1, ENABLE);


    ADC_ResetCalibration(ADC1);

    while(ADC_GetResetCalibrationStatus(ADC1));

    ADC_StartCalibration(ADC1);

    while(ADC_GetCalibrationStatus(ADC1));


    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}


void ADC1_Init(void)
{
    ADC1_GPIO_Config();
    ADC1_Mode_Config();
}

0

1个回答

你先把采集到的ADC通过串口打印出来看数据是否正确 然后再调试SEG显示代码 找出错误原因 希望对你有帮助!!

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
adc (模数转换)显示到数码管,检测电压值
采用51单片机,接受ad转换器转换的二进制进行处理显示到数码管上,显示检测电压值
AD采集数据在数码管上显示
AD采集到的数据在数码管上显示,方便,程序用C编的,有仿真图
温度传感器数据在数码管上显示
温度传感器数据在数码管上显示
正点原子STM32F407 DMA+ADC 连续采样24路ADC的值 并且将ADC的值用屏幕显示
资源是基于Stm32F407的代码,可以在正点原子探索者上面非常好的运行,代码的作用是轮询扫描共计24路的ADC接口并且将 得到的ADC的值保存在数组中,最终通过屏幕的方式显示出来(使用开发板的时候很多IO被内置上下拉,这不是程序错了,是实际的硬件连接导致的,在实际使用中这个是不需要担心)
利用单片机AD转换口扩展按键的检测程序
stc单片机AD转换口扩展按键的检测程序,汇编程序。提供大家参考。
STM32实现DMA读取ADC数据
昨天学习了DMA写了一个用DMA读取ADC数据的程序,记录下整个过程和一点心得nn nnDMA配置详细说明nn(MDK的汉字2复制过来就是乱码,我重新打了一遍注释,晕~)nnn//DMA1各通道配置n//外设->存储器/16位数据宽度n//DMA_CHx:DMA通道CHxn//cpar:外设地址n//cmar:存储器地址n//cndtr:数据传输量(因为我是一个16位的数据,所以是一)nvo...
蓝桥杯DS18B20学习(读取温度显示在数码管上)
DS18B20是最常见的数字温度传感器,有着诸多优点,比如:体积小;精度高(12位时精度可以达到0.625摄氏度,出厂默认12位);接线简单,无需外围短路;封装形式多样,能满足不同应用需求等等。DS18B20工作时序十分复杂,信号传输只在微妙之间,稍有不慎(例如延时函数的使用不够恰当)就可能导致其整个传感器的工作时序混乱。因此,在写DS18B20的控制程序时一定要弄清工作时序并使用合适的延时函数。...
STM32F103学习笔记(二):多通道直流电压ADC(DMA方式)
目的:对5个通道信号进行采集,转换结果显示在oled显示屏上。nnDMA数据一次传输10*5(5个通道,每个通道采集10次),求10次采集的平均值,作为最后ADC转换结果。nn硬件:stm32f103c8t6, 1.3寸7线oled。nnADC(DMA传输)nn由于要实现多通道信号同时采集,必须使用DMA方式,不然可能会导致数据采集过程中的丢失,使采集精度不准确。nnadc.h代码如下:nnn#i...
STM32CubeMX实现DMA模式下的AD转换
STM32CubeMX实现DMA模式下的AD转换
STM32的DMA多通道多数据AD转换
STM32 ADC多通道转换n描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZ。在每次转换结束后,由DMA循环将转换的数据传输到内存中。ADC可以连续采集N次求平均值。最后通过串口传输出最后转换的结果。nn程序如下:n#i nclude "stm32f10x.h" //这个头文件包括STM32F10x所有外围寄存器、位、内存
作用是把adc的数据用DMA送到内存(一个数组),用另一通道DMA送到串口
nextern uint16_t SendBuff[SENDBUFF_SIZE];nn/*n * 函数名:USART1_Confign * 描述 :USART1 GPIO 配置,工作模式配置。115200 8-N-1n * 输入 :无n * 输出 : 无n * 调用 :外部调用n */n void USART1_Config(void)n{n GPIO_InitTypeDef GPIO_I...
STM32F2XX——ADC多通道DMA采集时AD值大于4095的问题解决方法
前言nn  最近在调试STM32F2XX系列ADC多通道DMA采集时,发现采集的AD值大于4095,有的65000多了,这是什么节奏?adc不是12位吗,最大才0xfff,即4095,怎么会出现这种情况呢?难到是adc数据对齐方式出现问题了,adc的对齐明明设置的是右对齐啊,神马情况?nnADC结构体参数分析nn  百思不得adc之姐,只能keil单步调试,一步一步查看adc结构体的参数。我使用的...
stm32 双adc 采集问题 dma数据有一个没有 adc2为0
blog.csdn.net/lanmanck原创n配置那些就不说了,我这里是同步规则采样,共4通道:n/* Regular ChannelÉèÖòɼ¯Ë³ÐòºÍʱ¼ä.ÉèÖóÉË«adcºó,dmaÓÃ32bit´«Êä,µÍ16bitÊÇadc1ͨµÀ,¸ß16bitÊÇadc2ͨµÀ */n    ADC_RegularChannelConfig(ADC1, CH0_AD
单片机用adc0804采集电压并在数码管上显示
单片机stc89c52rc,利用adc0804采集电压并在数码管上显示,有详细注释,开发板tx-1c
STM32F10X ADC多通道读取小教程(包含DMA)
前沿:nn 今天是雨水,哎可是我这还是大太阳!!!nnnn ADC采样,说白了就是采集电压,这个功能是极其重要的,通常的我们的都是对各种传感器采集电压,来进行判断,开环闭环控制,今天,向大家介绍ADC的多通道采样,和DMA的采样方式。DMA的采样方式,可有效节省CMU在ADC的运行时间,提高效率,尤其是在系统构建的时候,必须要考虑好,你的效率问题。nnnn这里我用的开...
STM32基础设计(6)---ADC转换(DMA方式)
本文简单介绍了STM32F103C8,通过DMA方式读取ADC并通过串口中断向电脑端打印出当前电源ADC的值。现在先将设计过程的主要步骤介绍如下:                1,串口配置                2,中断配置                3,DMA配置                4,ADC配置                5,中断服务函数             ...
STM32 ADC不使用DMA进行多通道采集
不需要预先设置采集顺序nnnvoid ADCInit()n{n GPIO_InitTypeDef GPIO_InitS;n ADC_InitTypeDef ADC_InitS;n n RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_ADC1,ENABLE);n RCC_ADCCLKConf...
STM32定时TIM2触发ADC采样,使用DMA保存结果
1.adc.h文件rnrn//ADC-------------------------------------------------------------------------//rnrn#ifndef __EVAL_ADC_Hrnrn        #define __EVAL_ADC_Hrnrnrnrnrn// Includes -----------------------------
怎样用STM32 ADC测量电压(DMA方式)
接上篇怎样用STM32 ADC测量电压(中断方式)nn由STM32参考手册可知,ADC2只能在双模式下用DMA。nnOnly ADC1 and ADC3 have this DMA capability. ADC2-converted data can be transferred in ndual ADC mode using DMA thanks to master ADC1.nn因此我们选用...
STM32 DMA 多通道 ADC 采集
1. 本次实践目标n    a. 完成外部 ADC 的采集, 连接引脚为 PC2 n    b. 完成 STM32 内置温度传感器 ADC 的采集n    c. ADC 的采集必须以 DMA 的方式工作,通过 FreeRTOS 系统中创建的一个进程读取采集结果,并打包通过网络发送至上位机nnn2. 查看 datasheet nnn    2.1 确认 STM32 内部温度传感器
DS18B20读取温度并显示在数码管上
下面是我的函数n分3个文件:头文件,DS18B20系列子函数文件,主函数部分(既数据处理和显示部分)n头文件n#ifndef __TEMP_H_n#define __TEMP_H_nn#include<reg52.h>n#ifndef ucharn#define uchar unsigned charn#endifnn#ifndef uint n#define uint unsign...
stm32通过DMA方式采集ADC数据
程序功能是把ADC1模块里通道14的输入电压转换后通过USART2发送到PC,在PC机上用串口调试助手观察接收数,极大的节省了cpu的时间,释放了cpu,提高效率!
(简单易懂)按下矩阵按键在数码管上显示对应数值
/按下矩阵按键在数码管上显示对应数值/rn#include “reg52.h” rn#define u8 unsigned charrn#define u16 unsigned intrn#define dig P0 //数码管对应IO口rn#define key P1 //矩阵对应IO口rnu8 num;//用来存放读取到的键值rnsbit LSA=P2^2;rnsbit LSB=P2^3;rnsbit LSC=...
基于STM32CUBEMX的ADC采样(多通道DMA方式与多通道非DMA方式)
STM32的ADC模式nn扫描模式:按照顺序扫描所有通道,对每一个通道进行AD转换nn连续模式:若只有序列中只有一个通道,则对该通道转换一次结束后立马开始下一次转换;若序列中有多个通道,则这个通道转换完后立马开始下一个通道的准换。nn单次模式(连续转换disabled):每次开启转换只能转换一次。若要再进行AD转换,需要再次start.nn间断模式(discontinuous):间断模式只能和单次...
STM32 DMA中断模式下ADC多通道数据采集+均值滤波
本程序实现STM32 DMA中断模式下ADC多通道数据采集,并经过简单的均值滤波,亲测可用。 若有错误之处,希望读者指出,大家共同学习,一起进步!
AD采集电压用数码管显示
msp430用AD采集电压并用数码管显示。
STM32:ADC采集数据实例(采用DMA模式)
硬件平台:stm32f10xZET6n开发环境:keil MDK uVision v4.10n开发语言:C、ST_lib_3.5固件库nn将STM32 开发板供电(DC5V),插上 JLINK,插上串口线(两头都是母n的交叉线),打开超级终端,配置超级终端为 115200 8-N-1,将编译好的程序下载到开发板,即可看到超级终端打印出如下信息:n当旋转开发板开发板上的滑动变阻器时, A
基于STM32CubeMX的adc之DMA传输
基于STM32CubeMX的ADC_DMA传输,有多路和单路
STM32——多通道ADC的DMA方式采集方法
前言:nn最近在调试STM32F205芯片ADC多通道DMA方式采集数据,总结下STM32多通道ADC的DMA方式采集的使用方法。nn硬件平台:STM32F205nn软件平台:keil v5nn函数库:标准库nn多通道ADC的配置nn#define Channel_Num 9 //9 ¸adc的通道数,本例使用9个通道n#define Sample_Num 10 //采样次数,本例使用平均滤波...
总程序.doc(两路AD转换,模拟测得温度。按键控制数码管显示哪路模拟温度值)
两路AD转换,模拟测得温度。按键控制数码管显示哪路模拟温度值。含有报警,掉电存储功能
STM32 多通道ADC采集详解(DMA模式和非DMA模式)
ADC相关问题:nn1.采集到的值如何转化计算?nn STM32系列芯片大都是12位只有少部分是16位的,如:F373芯片。nn12位分辨率意味着我们采集电压的精度可以达到:Vref / 4096。nn采集电压= Vref * ADC_DR / 4096;nnVREF:参考电压nnADC_DR:读取到ADC数据寄存器的值nnn2.什么是通道扫描模式?nn扫描模式用于多通道...
STM32 ADC 多通道采集非DMA模式
网上的列子大多数为DMA,所以写个帖子说一下非DMA怎么操作。由于多通道的时候采集的时候,AD是连续的按照设定好的铜带顺序进行采集的,所以一般会发生这个通道的数据把另一个通道的数据覆盖的问题,让人感觉每个通道好像错乱一样。比如我明明读的通道5缺显示的通道7的数据。我开始困扰了许久,以为是板子丝印错误了。下面说一下怎么配置的,简单的讲就是把所有通道的GPIO口都设置好,也就是模拟输入但是!!!要设置...
STM32L073实现DMA方式获取ADC多通道值,和DMA 串口发送
本程序实现了STM32L073用DMA方式获取三通道ADC转换数据,此功能在main函数中没有写出,功能以实现,串口通过DMA方式发送数据。用的是HAL库。
STM32——多路ADC通道+DMA+定时器循环采集传感器数据(二)
        承接上一篇,接着讲ADC_DMA功能配置,直接存储器访问(DMA,Direct Memory Access)用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。在配置后,可以在无需任何CPU操作的情况下通过DMA快速移动数据,可以节省CPU资源用于其他操作。        STM32F407的DMA部分有两个DMA控制器,总共有16个数据流(每个控制器8个),每一个DMA...
STM32F1xx 系列 多通道ADC DMA采集与非DMA采集
ADC 多通道 DMA 采集n#include "ADcx.h"n#include <stdio.h>n#include "stm32f10x.h"n#include "stm32f10x_rcc.h" n#include "stm32f10x_adc.h"n#include "stm32f10x_gpio.h"nnvoid ADcDMA_Configuration(void);n
数码管显示电位器AD值
#include"reg51.h"n#include"XPT2046.h"//--定义使用的IO--//n#define GPIO_DIG P0sbit LSA=P2^2;nsbit LSB=P2^3;nsbit LSC=P2^4;//--定义全局变量--//nunsigned char code DIG_CODE[17]={n0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0
ADC0809转换+proteus仿真+数码管显示
为初学者提供代码支持,同时自己也在学习单片机 希望共同进步
STM32的ADC+DMA多通道转换的时候数据错位的解决方法。
(一)问题描述:nn目前一个项目中,需要采集两路ADC的信号。为了使采集的信号稳定,笔者采用多次采集求取平均值,再加其他软件滤波方式。所以使用了ADC的循环采集和DMA传输。nn想要达到的效果:nn两路ADC个采集64个(2路总共128个)数据,然后使用DMA传输完成,触发中断。停止采集,等待数据处理完后再启动下一次采集。nn实际效果:nn采集完这128个数据,且DMA传输完成后,进入了中断。等我...
STM32通过TIM,ADC,DMA的配合使用实现双通道数据采样
第一次写博客,奉献给STM32了,一直以来都是潜水看博客,希望能够自己也能写一点东西,对自己学习和工作的一个总结,希望能够坚持下去。项目背景:以57.6kbps的速率采集两个通道的数据 n芯片:STM32F205VCT6 n总体的思路通过57.6kHz的定时器去触发ADC采样,采样后的数据在通过DMA存放于缓冲区定时产生中断。 n由于需要产生57.6KHz的频率,晶振选择9.6MKHz,CPU主频为
STM32F103RC+ADC+DMA多通道采样LCD显示
MINI STM32开发板上ADC采用DMA方式进行多通道采样,ADC采用循环采样方式,并将8通道采样数据显示在LCD上
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 stm32视频游戏开发 stm32物联网课程设计