历史上的今天
返回首页

历史上的今天

今天是:2025年03月04日(星期二)

正在发生

2019年03月04日 | STM32 DMA发送完成标志位的查询

2019-03-04 来源:eefocus


void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma)

{

uint32_t flag_it = hdma->DmaBaseAddress->ISR;

  uint32_t source_it = hdma->Instance->CCR;

 

  /* Half Transfer Complete Interrupt management ******************************/

  if ((RESET != (flag_it & (DMA_FLAG_HT1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_HT)))

  {

  /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */

  if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U)

  {

  /* Disable the half transfer interrupt */

  hdma->Instance->CCR &= ~DMA_IT_HT;

  }

 

  /* Clear the half transfer complete flag */

  hdma->DmaBaseAddress->IFCR = DMA_FLAG_HT1 << hdma->ChannelIndex;

 

  /* DMA peripheral state is not updated in Half Transfer */

  /* State is updated only in Transfer Complete case */

 

  if(hdma->XferHalfCpltCallback != NULL)

  {

  /* Half transfer callback */

  hdma->XferHalfCpltCallback(hdma);

  }

  }

 

  /* Transfer Complete Interrupt management ***********************************/

  else if ((RESET != (flag_it & (DMA_FLAG_TC1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_TC)))

  {

  if((hdma->Instance->CCR & DMA_CCR_CIRC) == 0U)

  {

  /* Disable the transfer complete  & transfer error interrupts */

  /* if the DMA mode is not CIRCULAR */

  hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_TE);

 

  /* Change the DMA state */

  hdma->State = HAL_DMA_STATE_READY;

  }

 

  /* Clear the transfer complete flag */

  hdma->DmaBaseAddress->IFCR = DMA_FLAG_TC1 << hdma->ChannelIndex;

 

  /* Process Unlocked */

  __HAL_UNLOCK(hdma);

 

  if(hdma->XferCpltCallback != NULL)

  {

  /* Transfer complete callback */

  hdma->XferCpltCallback(hdma);

  if (hdma == huart2.hdmatx)

      {

            dma_finish_flag = 1;

  }

  }

  }

 

  /* Transfer Error Interrupt management ***************************************/

  else if (( RESET != (flag_it & (DMA_FLAG_TE1 << hdma->ChannelIndex))) && (RESET != (source_it & DMA_IT_TE)))

  {

  /* When a DMA transfer error occurs */

    /* A hardware clear of its EN bits is performed */

    /* Then, disable all DMA interrupts */

    hdma->Instance->CCR &= ~(DMA_IT_TC | DMA_IT_HT | DMA_IT_TE);

 

    /* Clear all flags */

    hdma->DmaBaseAddress->IFCR = DMA_FLAG_GL1 << hdma->ChannelIndex;

 

    /* Update error code */

    hdma->ErrorCode = HAL_DMA_ERROR_TE;

 

    /* Change the DMA state */

    hdma->State = HAL_DMA_STATE_READY;

 

    /* Process Unlocked */

    __HAL_UNLOCK(hdma);

 

    if(hdma->XferErrorCallback != NULL)

    {

    /* Transfer error callback */

    hdma->XferErrorCallback(hdma);

    }

   }

}

推荐阅读

史海拾趣

Cooper Industries公司的发展小趣事

早在2007年,Cooper Industries就展现出其全球扩张的雄心。同年10月8日,该公司与宁波知名企业耐吉科技股份有限公司共同注资3000万美元,成立了库柏耐吉(宁波)电气有限公司。这一合资公司的成立,不仅加强了Cooper在中国市场的地位,也为其全球业务布局增添了重要一环。库柏耐吉(宁波)电气有限公司地处浙江省慈溪市,工业园占地400余亩,位于世界最长跨海大桥——杭州湾跨海大桥的南岸桥头堡区域,其优越的地理位置为公司的发展提供了有力支持。

屹晶微(EG)公司的发展小趣事

屹晶微的创始人黄米龙,原本在发电厂从事电气运营工作长达八年。这段经历让他对电子领域有了深入的了解和浓厚的兴趣。然而,他并没有满足于现状,而是看到了中国芯片产业的巨大潜力和发展空间。于是,在2007年,他毅然决定从发电厂辞职,利用自己的积蓄和借来的资金,在台州创立了屹晶微电子有限公司。

在创立初期,屹晶微面临着资金短缺、技术落后和市场竞争激烈的困境。但黄米龙凭借对电子行业的深刻理解和坚定的信念,带领团队克服了种种困难。他们不断引进先进技术和设备,加强研发力量,提升产品质量。经过几年的努力,屹晶微逐渐在芯片设计领域崭露头角,并成功推出了多款具有自主知识产权的芯片产品。

Herth+Buss Fahrzeugteile GmbH & Co KG公司的发展小趣事
如果传感器被遮挡或污染,可能无法正常工作。
歌尔(Goertek)公司的发展小趣事
相对于其他安防设备,成本较低,适合大规模应用。
EMS GmbH公司的发展小趣事

近年来,随着汽车行业向电动化、智能化方向发展,汽车转换器注塑件的需求也发生了变化。EMS GmbH公司积极应对行业挑战,加大研发投入,推动产品向智能化、绿色化方向转型。同时,公司还关注新兴领域的发展机会,如新能源汽车、自动驾驶等领域,寻求新的增长点。这些努力使EMS GmbH公司能够保持行业领先地位,并在未来市场中保持竞争力。

Electrolube公司的发展小趣事

在电子行业中,电池管理系统(BMS)的可靠性和耐用性一直是制造商关注的焦点。Electrolube公司凭借其在材料科学领域的深厚积累,成功推出了一款名为UVCL的新型UV固化涂层。这款涂层以其独特的特性迅速在市场中脱颖而出。

UVCL涂层采用先进的UV固化技术,能够在几秒钟内完成固化过程,大大提高了生产效率。同时,它还具有高效的湿气引发的二次固化机制,确保即使在阴影区域也能实现完全固化。这一特性对于BMS等复杂电子电路的保护至关重要。

为了将UVCL涂层推向市场,Electrolube公司的研发团队与客户紧密合作,克服了客户内部没有UV固化设施的难题。他们与信誉良好的供应商合作,提供了完整的解决方案,并成功为客户提供了原型样品单元进行现场测试。测试结果显示,UVCL涂层能够为电子电路提供最高水平的保护,且操作过程简单、应用速度快。

UVCL涂层的成功推出不仅提升了Electrolube公司在电子材料领域的地位,也为公司赢得了众多客户的信赖和好评。

问答坊 | AI 解惑

技术教程:面向汽车应用的线性调整器与开关调整器的比较

多年来,人们一直预测低压差线性调整器(LDO)要退出在汽车领域的应用。但是,LDO调整器持续生存着甚至茁壮成长,因为它们的价格便宜且使用方便。本文中,我将阐述LDO调整器的复杂性,考察市场上的最新进展(确实有一些进展),并分析随着汽车电源需求 ...…

查看全部问答>

DDS的资料和使用程序

DDS芯片AD9851的一些资料和一种做好的模块调试程序…

查看全部问答>

如何选用热继电器、?实际为电机额定电流多少

选用热继电器一般以电机额定电流为准.如电机额定电流为3A,而选择热继电器为1.5~3.5间.设定时以电机的负载为准.如负载比较稳定时,热继电器设定的电流为电机额定电流.如负载波动比较大时可稍微加大些. 如果是电机直接启动开关设备热继电器电流应选 ...…

查看全部问答>

请问rom和bootloader是什么关系?

我公司的开发板上既有rom又有bootloader,我搞不懂这两者的关系了 请各位帮忙解释下好吗?谢谢。…

查看全部问答>

问个WINCE调试的基本方法问题

我在PB5.0中调试单一的工程可以么?就是我不想每次都生成新的系统镜像。就像在VS2005中调试一样,修改代码、F5就开始编译链接、部署、断点,这样就方便多了阿,要不我不是在PB中每次都得从新生成系统镜像了?多麻烦…

查看全部问答>

急需人员加盟

本公司因业务需要,急需招聘WincE开发工程师,待遇从优。有意者请将简历发送至liuyh0105@126.com刘月红收。有IC卡、条形码行业工作经验者优先。电话:010-51265035、68219720、68219760…

查看全部问答>

STM8S103K使用I2C通信经常出错

103K作为从属, 另外一块CPU作为主控, 时钟频率大概200HZ 在103K这边经常会收到错误的地址 但使用逻辑分析仪看波形是正确的 可能是哪里出错了呢?…

查看全部问答>

关于触屏问题!

DK-LM3S9B96第一次搞触屏谁有关于触摸屏的详解! #include \"grlib/widget.h\"           #include \"grlib/canvas.h\"        #include \"grlib/pushbutton.h\" 这几个头文件是啥意思? ...…

查看全部问答>

镁海水燃料电池

由古河电池和日本东北大学合作开发的镁燃料电池实现商业化。 图为Green House公司LED手提灯(内有碳棒和镁金属棒组成镁燃料电池), 加入一次350ml水和16g盐即可提供8小时电力,点亮内置LED灯或通过USB接口为手机充电, 工作120小时后更换内部镁 ...…

查看全部问答>

运放构成的压控恒流源的问题

本帖最后由 paulhyde 于 2014-9-15 03:19 编辑 这是我用OP07构成的简单恒流源,第一个运放是隔离输入端对恒流源的影响,但是发现当负载端接上电阻,无论输入端电压 怎么调,J4端电压都没改变,而且负载电阻变化时,J4端电压变化,达不到恒流源 ...…

查看全部问答>