本帖最后由 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
一周热门 更多>