F407示波器

2019-07-21 04:48发布

本帖最后由 nmgbtzyf 于 2019-3-4 10:52 编辑

问题太多了,我一下不知道怎么问,我再想想看看哪里,是真搞不明白的,先上代码 能改中文的,都改了,里面路径都对不知道为什么头文件都是!这个能编辑通过。下载也运行,它自己能找到路径,就是打!号,无语
没有上,上位机的代码。现在上位机没办弄。下位机确定不了。上位机测试。程序在。这里
http://www.openedv.com/forum.php ... 5&highlight=F407USB
我也是搬人家的东西。自己搞不了,


只前提问的连接http://www.openedv.com/forum.php ... 48&page=1#pid932843

现在有点明白了,但是真的是不太理解,因为我要把,ADCDMA的缓冲地址给到USB传输地址上让USB传输数据
这里有一个 我找不到说明的问题,很多人这样问的,但是没找到一个肯定或能让人理解的解释。
谁能帮我说说


问题1 DMA_InitStructure.DMA_Memory0BaseAddr = (u32)ADC_ConvertedValueBuff;//存放数据的寄存器地址就是头文件里面定义的数据
这句是看人家的ADCDMA代码。
下面是DMA头文件、里定义。static uint8_t 一个数组,并清0
问题是。在源代码中。主程序是用串口传输的如下这句
ADC_ConvertedValueLoca[0] =(float) ADC_ConvertedValueBuff[0]/4096*(float)3.3;
在上传的代码里有,可以用KEIL看到——
但是,我不明白这个static。这里静态定义。哪U8的是8位的数据。它怎么能有4096这数呢只能是255.
在网找了很多,但都是说不清。我也理解不了,谁能帮我一下
还在USB实验的源代码。是
        //发送数据
        DCD_EP_Tx(&USB_OTG_dev,CDC_IN_EP,SendDataBuff,PackSize);
在文件上也是一个这样的定义
static uint8_t SendDataBuff[64*1024];  这里定义这么大的一个数组,
所以我认为USB是将这个数组不断的传输。SendDataBuff数组数据
而……ADC实验里。只是用串口不断传输ADC_ConvertedValueLoca[0] 这一个数据
在DMA函数里的这句
DMA_InitStructure.DMA_Memory0BaseAddr = (u32)ADC_ConvertedValueBuff;//存放数据的寄存器地址就是头文件里面定义的数据
因为源代码实验是三个通道的。所以这里定义的是个数组。如果一个通道是不是。只是一个U8的变量就可以了
如果我想让DMA给这个SendDataBuff大数组里写数据。我必须。从开一个任务让它不断的写数据。
DMA只能往变量 里写数据。不会自己往数组里写数据是不是
现在卡在这了
///////////////////////////////////////////////////////////////////////////
#ifndef __DMA_H
#define __DMA_H
#include "sys.h"
#define RHEOSTAT_NOFCHANEL      3
// ADC DR寄存器宏定义,ADC转换后的数字值则存放在这里
#define RHEOSTAT_ADC_DR_ADDR    ((u32)ADC1+0x4c)
static uint8_t ADC_ConvertedValueBuff[RHEOSTAT_NOFCHANEL]={0};


void My_DMA_Init(void);

#endif

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
nmgbtzyf
2019-07-21 11:49
谢谢2楼。这些知道,给DMA确定地址也是用(U32)强制的。
我不理解的是,ADC怎么给数组写数据。这个代码定义数组的目的是为了多通道。每个的ADC通道。只是往一个地址里写数据。这样只前的
数据就盖住了。它怎么样能给数组写数据。我不知道应该怎么作。在定义DMA时有一个参数是确定地址是否增加。实例选的是增加。可是数组
增加了,也下一个通道里写数据,与我的目的不一样,

一周热门 更多>