hal库dma io口和us art接收数据的长度在主函数中能不能变

  0----Direct&Memory&Access&直接存储器访问   1----Digital&Media&Art&数字媒体艺术缩写   2----Dynamic&thermomechanical&analysis&动态
Direct Memory Access 直接存储器访问/DMA
DMA原理&DMA&是所有现代电脑的重要特色,他允许不同速度的硬件装置来沟通,而不需要依于&CPU&的大量&中断&负载。否则,CPU&需要从&来源&把每一片段DFM的资料复制到&暂存器,然后把他们再次写回到新的地方。在这个时间中,CPU&对于其他的工作来说就无法使用。&  DMA&传输重要地将一个内存区从一个装置复制到另外一个。当&CPU初始化这个传输动作,传输动作本身是由&DMA&控制器&来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存去。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA&传输对于高效能&嵌入式系统&算法和网络是很重要的。     在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。&一个完整的DMA传输过程必须经过下面的4个步骤。1.DMA请求  CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。 2.DMA响应   DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。 3.DMA传输  DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。   在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。 4.DMA结束  当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停&止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。   由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。
Digital Media Art 数字媒体艺术缩写/DMA
  一&DMA:Digital&Media&Art&数字媒体艺术缩写   二&股市DMA指标原理和详解   DMA指标又叫平行线差指标,是目前股市分析技术指标中的一种中短期指标,它&   常用于大盘指数和个股的研判。第一节 DMA指标的原理及计算方法  一、&DMA指标的原理&   DMA指标是属于,也是一种趋势分析指标。DMA是依据快慢两条移动平均线的差值情况来分析价格趋势的一种技术分析指标。它主要通过计算两条基&   准周期不同的移动平均线的差值,来判断当前买入卖出的能量的大小和未来价格走势的趋势。&   二、&DMA指标的计算方法&   DMA指标的计算方法比较简单,其计算过程如下:&   DMA=短期平均值—长期平均值&   AMA=短期平均值&   以求10日、50日为基准周期的DMA指标为例,其计算过程具体如下:&   DMA(10)=10日平均值—50日平均值&   AMA(10)=10日(DMA)的平均值&   公式:   DDD&:&(MA(CLOSE,SHORT)-MA(CLOSE,LONG));   AMA&:&MA(DDD,M)   和其他指标的计算一样,由于选用的计算周期的不同,DMA指标也包括日DMA指标、周DMA指标、月DMA指标年DMA指标以及分钟DMA指标等各种类型。经常被用于股市研判的是日DMA指标和周DMA指标。虽然它们的计算时的取值有所不同,但基本的计算方法一样。另外,随着股市软件分析技术的发展,投资者只需掌握DMA形成的基本原理和计算方法,无须去计算指标的数值,更为重要的是利用DMA指标去分析、研判股票行情。&第二节 DMA指标的一般研判标准  一、DMA和AMA的值及线的运动方向&   1、当DMA和AMA均大于0(即在图形上表示为它们处于零线以上)并向上移动时,一般表示为股市处于中,可以买入或持股;&   2、当DMA和AMA均小于0(即在图形上表示为它们处于零线以下)并向下移动时,一般表示为股市处于中,可以卖出股票或观望。&   3、当DMA和AMA均大于0(即在图形上表示为它们处于零线以上),但在经过一段比较长时间的向上运动后,如果两者同时从高位向下移动时,一般表示为股票&   行情处于退潮阶段,股票将下跌,可以卖出股票和观望;&   4、当DMA和AMA均小于0时(即在图形上表示为它们处于零线以下),但在经过一段比较长时间的的向下运动后,如果两者同时从低位向上移动时,一般表示为&   短期行情即将启动,股票将上涨,可以短期买进股票或持股待涨。&   二、DMA曲线和股价曲线的配合使用&   由于DMA指标有领先股价涨跌的功能,因此,投资者也可以将DMA曲线和股价曲线配合使用。&   1、当DMA曲线与股价曲线从低位(DMA和AMA数值均在0以下)同步上升,表明空头力量已经衰弱、多头力量开始积聚,短期内股价有望,投资者应&   可以开始少量逢低买入。&   2、当DMA曲线与股价曲线从0值附近向上攀升时,表明多头力量开始大于空头力量,股价将在成交量的配合下,走出一波向上扬升的上涨行情。此时,投资者&   应逢低买入或坚决持股待涨。&   3、当DMA曲线从高位回落,经过一段时间强势盘整后再度向上并创出新高,而股价曲线也在高位强势盘整后再度上升创出新高,表明股价的上涨动力依然较&   强,投资者可继续持股待涨。&   4、当DMA[曲线从高位DMA和AMA数值均在远离0]值的上方回落,经过一段时间盘整后再度向上,但到了前期高点附近时未能创出新高却调头向下时,而且,&   股价曲线也同时下跌时,这可能就意味着股价上涨的动力开始减弱,将开始一轮比较强劲的下跌行情。此时投资者应千万小心,一旦股价从下,应果断及时地离场。&   5、当DMA曲线与股价曲线从中位(DMA和AMA数值均在0以上)继续同步下降,表明短期内股价将继续下跌趋势,投资者应继续持币观望或逢高卖出。&   6、当DMA曲线在长期弱势下跌过程中,经过一段时间弱势反弹后再度向下并创出新低,而股价曲线也在弱势盘整后再度向下创出新低,表明股价的下跌动能依&   然较强,投资者可继续持币观望。&   三、DMA线和AMA线的几次交叉情况&   一般而言,在一个股票的完整的升势和跌势过程中,DMA指标中的DMA线和AMA线会出现两次或以上的“黄金交叉”和“死亡交叉”情况。&   1、当股价经过一段很长时间的下跌行情后,DMA线开始向上突破AMA线时,表明股市即将转强,股价跌势已经结束,将止跌朝上,可以开始买进股票,进行中&   长线建仓。这是DMA指标“黄金交叉”的一种形式。&   2、当股价经过一段时间的上升过程中的盘整行情后,DMA线开始再次向上突破AMA线,成交量再度放出时,表明股市处于一种强势之中,股价将再次上涨,可&   以加码买进股票或持股待涨,这就是DMA指标“黄金交叉”的一种形式。&   3、当股价经过前期一段很长时间的上升行情后,股价涨幅已经很大的情况下,一旦DMA线向下突破AMA时,表明股市即将由强势转为弱势,股价将大跌,这时&   应卖出大部分股票而不能买股票,这就是AMA指标的“死亡交叉”的一种形式。&   4、当股价经过一段时间的下跌后,而股价向上上涨的动力缺乏,各种均线对股价形成较强的压力时,一旦DMA线再次向下突破AMA线时,表明股市将再次进入&   极度弱市中,股价还将下跌,可以再卖出股票或观望,这是AMA指标“死亡交叉”的另一种形式。&第三节 DMA指标的特殊分析方法  一、DMA指标的背离&   DMA指标的背离就是指当DMA指标的曲线图的走势方向正好和K线图的走势方向正好相反。DMA指标的背离有顶背离和底背离两种。当股价K线图上的股票走势一峰比一峰高,股价在一直向上涨,而DMA指标图上的DMA曲线和AMA曲线的走势是在高位一峰比一峰低,这叫顶。顶背离现象一般是股价将高位反转的信号,表明股价中短期内即将下跌,是卖出的信号。&   当股价K线图上的股票走势一峰比一峰低,股价在向下跌,而DMA指标图上的DMA曲线和AMA曲线的走势是在低位一底比一底低,这叫低背离现象。一般是股价将低位反转的信号,表明股价中短期内即将上涨,是买入的信号。相比于其它技术指标的背离现象而言,DMA指标出现的机会比较少,但如果在实际走势中,一旦DMA指标出现背离现象,它的准确性则更高,这点投资者应引起足够的重视。&   二、DMA指标的形态&   当DMA指标中的DMA线和AMA线在高位盘整或低位横盘时所出现的各种交叉形态也是判断行情,决定买卖行动的一种分析方法。&   1、当DMA指标中的DMA线和AMA线在高位交叉并形成或三重顶等高位反转形态时,意味着股价的上升动能已经衰竭,股价有可能出现长期反转行情,投资者应及时地卖出股票。如果股价走势曲线也先后出现同样形态则更可确认,股价下跌的幅度和过程可参照M头或三重顶等顶部反转形态的研判。&   2、当DMA指标中的DMA线和AMA线在低位交叉并形成W底或三重底等低位反转形态时,意味着股价的下跌动能已经减弱,股价有可能构筑中长期底部,投资者可逢低。如果股价走势曲线也先后出现同样形态则更可确认,股价的上涨幅度及过程可参照W底或三重底等底部反转形态的研判。&   3、DMA指标的顶部反转形态对行情判断的准确性要高于底部反转形态。第四节 DMA指标的实战技巧  DMA指标的实战技巧主要集中在DMA指标中的DDD(即DMA曲线,下同)曲线和AMA曲线的交叉情况以及DDD、AMA曲线所处的位置和它们的运行方向等三个方面。下面以分析家软件上的日参数为(24,72,24)的DMA指标为例,来揭示DMA指标的买卖和观望功能。(注:钱龙软件(24,72)日指标参数与分析家软件上这个参数相对应,其使用方法大体相同)。&   一、&买卖信号&   1、当24日DDD曲线和72日AMA曲线在0值线附近盘整了较长一段时间以后,&一旦24日DDD曲线向上突破72日AMA曲线,并且股价也带量突破中长期均线时,表明股价的上涨动能开始强大,股价将快速拉升阶段,这是DMA指标发出的买入信号。此时,投资者应及时买入股票。&   2、当24日DDD曲线和72日AMA曲线在0值线附近盘整了较长一段时间以后,一旦24日DDD曲线向下突破72日AMA曲线,并且股价也向下跌破中长期均线时,表明股价的下跌动能比较强大,股价将开始大跌,这是DMA指标发出的卖出信号。& 此时,投资者应及时卖出股票。如图(9–2)所示。&   二、持股持币信号&   1、当24日DDD曲线向上突破72日AMA曲线以后,股价也依托中短期均线向上运行时,表明股价的上涨动能依然强大,股价将继续上涨,这是DMA指标发出的&   持股待涨信号。此时,投资者应坚决持股待涨。&   2、当24日DDD曲线向下突破72日AMA曲线以后,股价也被中长期均线压制下行时,表明股价的下跌动能依然强大,股价将继续下跌,这是DMA指标发出的持币观望信号。此时,投资者应坚决持币观望。&
动态热机械分析/DMA
 Dynamic&thermomechanical&analysis&动态热机械分析   动态热机械分析(DMA)是通过对材料样品施加一个已知振幅和频率的振动,测量施加的位移和产生的力,用以精确测定材料的粘弹性,杨氏模量(E*)或剪切模量(G*)。DMA主要应用于  玻璃化转变和熔化测试,二级转变的测试,,转变过程的最佳化,弹性体非线性特性的表征,疲劳试验,材料老化的表征,浸渍实验,长期蠕变预估等最佳的材料表征方案。主要特点  1.E*,&G*,&tan&δ的&   2.高精准度,优越的可重复性   3.坚固的试验框架&   4.独特的分析范围∶力∶50N,100N,150N,450N   刚度∶连续使用70年以上&   5.可分析固体,浆料(膏),液体材料&   6.可进行拉伸-压缩,剪切及弯曲试验&   7.样品固定器种类广泛&   8.快捷高性能热控制&   9.实验中完成对力的直接测量   10.可互换的力传感器&   11.易操作的DYNATEST软件&   12.样品尺寸设定辅助   13.自动测试引导与操作   14.自动控制模式&   15.动态及程序设置   16.精准的动静态设置数值控制&   17.多种动静态测试模式   18.分析条件全描述   19.多种图象表述&   20.数据开发方便快捷   21.计算
DMA :二甲胺/DMA
  分子式:C2H7N   分子量:45.09   CAS号:124-40-3性质  为无色易燃气体或液体,高浓度或压缩液化时,具有强烈的令人不愉快的氨臭,浓度极低时有鱼油的恶臭。易溶于水,溶于乙醇和乙醚。有毒。熔点-96℃,沸点6.9℃,相对密度0.654,冰点-92.19℃,闪点-17.78℃,自燃点400℃,其蒸气能与空气形成爆炸性混合物,爆炸极限2.8%-14.4%。蒸气压0.2026kPa,临界温度164.6℃,临界压力5.309kPa,折射率1.347。40%二甲胺水溶液的沸点51.5℃,闪点-99.4℃,相对密度0.898,蒸气压(20℃)26.264kPa,粘度(40℃)0.0017Pa·s。制备方法  将甲醇和氨以一定比例混合,在一定温度和压力下,以活性氧化铝为催化剂,合成得一、二、三甲胺混合物,然后经热交换、冷凝、脱氨、萃取、脱水、分离,得二甲胺成品。其详情参见“一甲胺”。用途  主要用作橡胶、皮革去毛剂、医药(抗菌素)、农药(福美双、杀虫脒、灭草隆等除草剂)、纺织工业溶剂、染料、炸药、推进剂及二甲肼、N,N-二甲基甲酰胺等有机中间体的原料。其中二甲基甲酰胺生产消耗的二甲胺占总消耗量的44.7%,农药生产消耗占38.9%,医药等生产消耗占16.4%&&
DMA 动态热机械分析仪/DMA
&&& 是在程序温度控制下,测量样品在承受动态负荷时(如正弦应力)模量和力学阻尼随温度和频率变化的仪器。DMA用于复合材料及高分子材料的动态力学性能研究如Tg,(储存模量、损耗模量和复合模量)和阻尼因子,固化、交联、结晶、玻璃化转变、热稳定性能、聚合、老化、相容性等。信息来源:.&
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:10次
参与编辑人数:9位
最近更新时间: 14:33:30
申请可获得以下专属权利:
贡献光荣榜cube库串口接收不定长数据问题 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 2069|回复: 8
cube库串口接收不定长数据问题
在线时间39 小时
主题帖子好友
高级会员, 积分 528, 距离下一级还需 472 积分
高级会员, 积分 528, 距离下一级还需 472 积分
在cube库&&用 HAL_UART_Receive_IT()可以接收定长的数据,可以如果数据是不定长的&&该怎么解决呢
在线时间563 小时
ST金币1618
主题帖子好友
用的标准库,HAL库,自己改一下接收中断。
在线时间1411 小时
ST金币6961
主题帖子好友
用空闲中断+DMA,修改下hal库手动添加空闲中断即可。
在线时间855 小时
ST金币2419
主题帖子好友
楼上正解:::
STMCU-Logo.png (21.38 KB, 下载次数: 1)
17:47 上传
在线时间39 小时
主题帖子好友
高级会员, 积分 528, 距离下一级还需 472 积分
高级会员, 积分 528, 距离下一级还需 472 积分
用空闲中断+DMA,修改下hal库手动添加空闲中断即可。
在检测到总线空闲的时候关闭DMA处理数据,然后在关闭总线空闲中断,打开DMA这样吗
在线时间1411 小时
ST金币6961
主题帖子好友
在检测到总线空闲的时候关闭DMA处理数据,然后在关闭总线空闲中断,打开DMA这样吗 ...
在空闲中断中先关闭DMA然后读取DMA传输的数据长度,然后继续使能DMA接收下一个空闲帧。
在线时间39 小时
主题帖子好友
高级会员, 积分 528, 距离下一级还需 472 积分
高级会员, 积分 528, 距离下一级还需 472 积分
在空闲中断中先关闭DMA然后读取DMA传输的数据长度,然后继续使能DMA接收下一个空闲帧。
我直接用DMA循环接收&&什么中断都不用也能完成不定长接收了
在线时间2 小时
主题帖子好友
新手上路, 积分 23, 距离下一级还需 27 积分
新手上路, 积分 23, 距离下一级还需 27 积分
用的标准库,HAL库,自己改一下接收中断。
怎么改,有没有实例?
在线时间563 小时
ST金币1618
主题帖子好友
把中断处理函数里面的关闭中断的语句屏蔽掉。
站长推荐 /2
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered byhal库的串口接收完成回调函数中如何区分是不是DMA接收完成? - 生态系统和中间件 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 384|回复: 4
hal库的串口接收完成回调函数中如何区分是不是DMA接收完成?
在线时间3 小时
主题帖子好友
初级会员, 积分 52, 距离下一级还需 148 积分
初级会员, 积分 52, 距离下一级还需 148 积分
HAL_UART_RxCpltCallback
这个回调函数在串口中断接收完成后会被调用,在DMA接收完成后也会被调用
那么能否在这个回调函数中直接以参数huart中的信息来区分上述两种情况呢?(不考虑其他外部附加处理方式)
(实际使用情况是在rtthread中改用hal库适配原来的serial处理)
在线时间597 小时
ST金币3024
主题帖子好友
不太可能针对同一个串口即开中断收发又开DMA收发吧?
在线时间3 小时
主题帖子好友
初级会员, 积分 52, 距离下一级还需 148 积分
初级会员, 积分 52, 距离下一级还需 148 积分
不太可能针对同一个串口即开中断收发又开DMA收发吧?
使用和处理回调是分离的 处理的地方要能适配所有使用方式
为什么hal里要把DMA和IT接收完成用同一个函数呢。。。
在线时间597 小时
ST金币3024
主题帖子好友
使用和处理回调是分离的 处理的地方要能适配所有使用方式
为什么hal里要把DMA和IT接收完成用同一个函数 ...
1.同一个串口使用中断和DMA互斥。
2.中断回调函数用同一个不会有问题。
3.如果你想改,那么在中断(和DMA中断)处理函数中修改成自己的一个回调函数即可,这是灵活的。
在线时间3 小时
主题帖子好友
初级会员, 积分 52, 距离下一级还需 148 积分
初级会员, 积分 52, 距离下一级还需 148 积分
1.同一个串口使用中断和DMA互斥。
2.中断回调函数用同一个不会有问题。
3.如果你想改,那么在中断(和DMA ...
嗯 看来要增加一个回调函数才行
站长推荐 /2
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered byST的hal库有问题手头有STM32L4或STM32F7的帮忙测试DMA SD卡 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 658|回复: 13
ST的hal库有问题手头有STM32L4或STM32F7的帮忙测试DMA SD卡
在线时间15 小时
主题帖子好友
中级会员, 积分 258, 距离下一级还需 242 积分
中级会员, 积分 258, 距离下一级还需 242 积分
本帖最后由 maisheng 于
15:38 编辑
我用的是STM32L476,也看了最新的STM32F7的库,用的都是最新的库。SDMMC的DMA的TX和RX通道都配置好了,SD中断优先级5,DMA收发的优先级都是6。调用stm32xxxx_hal_sd.c文件中的HAL_SD_WriteBlocks_DMA和HAL_SD_ReadBlocks_DMA两个函数读写SD卡的某一个扇区。
问题如下:
问题1:HAL_SD_WriteBlocks_DMA()写1个扇区,用PC下的扇区读取工具看,发现前两个字节永远都是0xff,真实数据从第3个字节开始正常,所以只能写入512-2个正确字节,并且数据位置实际偏移了两个字节。而换成HAL_SD_WriteBlocks()正常。
问题2:用HAL_SD_ReadBlocks_DMA()读1个扇区,发现只能正确返回实际偏移两个字节位置的两个字节(比如实际数据:0x00,0x01, 0x02 0x03 只能读到0x02和0x03),配置的接收完成中断SD_DMAReceiveCplt()永远也不会被调用。而如果用HAL_SD_ReadBlocks()可以正常读取。
问题3:我用HAL_SD_WriteBlocks()连续给SD卡写数据,发现突然某个时候检查SD状态永远是busy,并且等多久都不会空闲。必须初始化才能恢复。
我查看了STM32F7的库,跟L4的库内容完全一样,所以怀疑F7也存在这个情况。
在线时间10 小时
主题帖子好友
初级会员, 积分 173, 距离下一级还需 27 积分
初级会员, 积分 173, 距离下一级还需 27 积分
你猜对了! F7也有这种情况... F746的Discovery板...&&我用dma读取SD卡情况一样
头和尾总会丢失一部分字节 轮训读写就没有问题 很奇怪
我用 __align(x) 设置了x字节对其以后依旧会出现这样的情况
但是不同的字节对齐丢失的数据多少会不一样...&&up你问题解决了么?&&我设置四字节对齐依旧有丢失..
你DMA的配置能发出来我看看吗?
& & SD_Handle.hdmarx-&Instance& && && && && && &= DMA2_Stream3;
& & SD_Handle.hdmarx-&Init.Channel& && && && &&&= DMA_CHANNEL_4;
& & SD_Handle.hdmarx-&Init.Direction& && && && &= DMA_PERIPH_TO_MEMORY;
& & SD_Handle.hdmarx-&Init.FIFOMode& && && && & = DMA_FIFOMODE_ENABLE;
& & SD_Handle.hdmarx-&Init.FIFOThreshold& && &&&= DMA_FIFO_THRESHOLD_FULL;&&
& & SD_Handle.hdmarx-&Init.Mode& && && && && &&&= DMA_PFCTRL;
& & SD_Handle.hdmarx-&Init.PeriphDataAlignment&&= DMA_PDATAALIGN_WORD;
& & SD_Handle.hdmarx-&Init.MemDataAlignment& &&&= DMA_MDATAALIGN_WORD;
& & SD_Handle.hdmarx-&Init.PeriphBurst& && && & = DMA_PBURST_INC4;
& & SD_Handle.hdmarx-&Init.MemBurst& && && && & = DMA_MBURST_INC4;
& & SD_Handle.hdmarx-&Init.PeriphInc& && && && &= DMA_PINC_DISABLE;
& & SD_Handle.hdmarx-&Init.MemInc& && && && && &= DMA_MINC_ENABLE;
& & SD_Handle.hdmarx-&Init.Priority& && && && & = DMA_PRIORITY_VERY_HIGH;
我的配置是这样的
在线时间30 小时
主题帖子好友
中级会员, 积分 445, 距离下一级还需 55 积分
中级会员, 积分 445, 距离下一级还需 55 积分
发表于 昨天&21:31
本帖最后由 xiang90721 于
21:33 编辑
你是如何测试的啊 ???
具体测试方法:
tick_start = HAL_GetTick();//获取开始测量前的时钟计数
for(i=0;i&5000;i++)
& &&&ret = BSP_SDMMC_Write(buf,i*n,n);//BSP_SDMMC_Write为使用库函数HAL_SD_WriteBlocks_DMA()封装的块写入函数而已
& && &if(ret != MSD_OK)
& && && & //do something
& && && &&&while(1);
tick_end = HAL_GetTick();
write_speed = buf_len*/(tick_end - tick_start);//buf_len为数组buf数据长度,为512*n字节,系统滴答时钟配置的为1ms一次
通过如上的方式计算得出的写入速度测试,读出速度也是同样的方式计算得出。
SD卡为class 4,且供给SD的时钟为24M
在线时间174 小时
ST金币1436
主题帖子好友
金牌会员, 积分 2949, 距离下一级还需 2051 积分
金牌会员, 积分 2949, 距离下一级还需 2051 积分
发表于 6&天前
哥们能否把你的F7的关于SDMMC的配置及驱动给我参考参考
(8.04 KB, 下载次数: 4)
6&天前 上传
点击文件名下载附件
& &SDMMC2_IRQn& && && &&&& bsp_drver_sd.c && && && && & 0xe
& &DMA2_Stream0_IRQn& && && bsp_drver_sd.c && && && && &0xf
& &DMA2_Stream5_IRQn& && && bsp_drver_sd.c && && && && &0xf
& &SDMMC2_IRQn 这个的优先级必须比 DMA2_Stream0_IRQn, DMA2_Stream5_IRQn 高一个数量级,如上所设置的
在线时间174 小时
ST金币1436
主题帖子好友
金牌会员, 积分 2949, 距离下一级还需 2051 积分
金牌会员, 积分 2949, 距离下一级还需 2051 积分
本帖最后由 hpdell 于
15:24 编辑
终于找到了,我现在遇到的问题与你基本一样,估计这个sd卡的 dma 功能 他们都没有测试就放出来,哎,stm太不负责了啊
说说我的问题,目前我的可以进入到下面的两个函数中,
回调函数/**
&&* @brief Tx Transfer completed callbacks
void HAL_SD_TxCpltCallback(SD_HandleTypeDef *hsd)
&&SD_TxCplt = 1;
&&printf(&SD Tx Completed \r\n&);
&&* @brief Rx Transfer completed callbacks
void HAL_SD_RxCpltCallback(SD_HandleTypeDef *hsd)
&&SD_RxCplt = 1;
&&printf(&SD Rx Completed \r\n&);
但是貌似不能够作为发送或者接收完成标志使用
在线时间15 小时
主题帖子好友
中级会员, 积分 258, 距离下一级还需 242 积分
中级会员, 积分 258, 距离下一级还需 242 积分
终于找到了,我现在遇到的问题与你基本一样,估计这个sd卡的 dma 功能 他们都没有测试就放出来,哎,stm太 ...
进入回调函数就说明DMA完成任务了 。你直接可以进入HAL_SD_RxCpltCallback?
在线时间15 小时
主题帖子好友
中级会员, 积分 258, 距离下一级还需 242 积分
中级会员, 积分 258, 距离下一级还需 242 积分
另外我的HAL_SD_WriteBlocks_DMA可以了 原因是没有4字节对齐。
在线时间10 小时
主题帖子好友
初级会员, 积分 173, 距离下一级还需 27 积分
初级会员, 积分 173, 距离下一级还需 27 积分
我手上还有一块F429的板子&&用F4的HAL库DMA读写就不会出现丢数据的情况...& &愁死我了&&
在线时间174 小时
ST金币1436
主题帖子好友
金牌会员, 积分 2949, 距离下一级还需 2051 积分
金牌会员, 积分 2949, 距离下一级还需 2051 积分
我手上还有一块F429的板子&&用F4的HAL库DMA读写就不会出现丢数据的情况...& &愁死我了& &...
吧 内存数据对齐
SD_Handle.hdmarx-&Init.MemDataAlignment& &&&= DMA_MDATAALIGN_WORD;
SD_Handle.hdmarx-&Init.MemDataAlignment& &&&= DMA_MDATAALIGN_BYTE;
在线时间30 小时
主题帖子好友
中级会员, 积分 445, 距离下一级还需 55 积分
中级会员, 积分 445, 距离下一级还需 55 积分
发表于 7&天前
吧 内存数据对齐
SD_Handle.hdmarx-&Init.MemDataAlignment& &&&= DMA_MDATAALIGN_WORD;
想问问你们使用的是哪个版本的库?我使用的是最新V1.7的,在使用SD 通信DMA方式,传送几个字节后hsd-&State 就不等于HAL_SD_STATE_READY了,一直死锁,发现SDMMC 的中断后面就没响应了,导致没法继续发送其他数据,我也查了SDMMC的中断是高于DMA的中断优先级的
你们有这样的情况么
在线时间174 小时
ST金币1436
主题帖子好友
金牌会员, 积分 2949, 距离下一级还需 2051 积分
金牌会员, 积分 2949, 距离下一级还需 2051 积分
发表于 7&天前
想问问你们使用的是哪个版本的库?我使用的是最新V1.7的,在使用SD 通信DMA方式,传送几个字节后hsd-&Sta ...
我的没有出现你所说的问题的呀,
我使用stm32f2xx,&&f4xx,&&f7xx 都挺好的
在线时间30 小时
主题帖子好友
中级会员, 积分 445, 距离下一级还需 55 积分
中级会员, 积分 445, 距离下一级还需 55 积分
发表于 7&天前
我的没有出现你所说的问题的呀,
我使用stm32f2xx,&&f4xx,&&f7xx 都挺好的
哥们能否把你的F7的关于SDMMC的配置及驱动给我参考参考
站长推荐 /2
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by}

我要回帖

更多关于 hal adc start dma 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信