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);
}
}
}
上一篇:STM32 三路AD的使用方法
下一篇:MCU的I2S為slave時出現噪音的解決方案
推薦閱讀
史海拾趣
為了保證產品質量,Frequency Devices公司建立了完善的質量管理體系。公司引入了先進的生產設備和檢測技術,對原材料采購、生產加工、成品檢驗等各個環節進行嚴格把控。同時,公司還建立了完善的售后服務體系,為客戶提供及時、專業的技術支持和解決方案。這些措施有效保障了產品的質量和穩定性,贏得了客戶的信賴和好評。
品質是企業生存之本。谷峰公司始終將產品質量放在首位,建立了嚴格的質量控制體系,確保每一款產品的性能和質量都達到行業領先水平。同時,公司還注重品牌建設,通過參加國際展會、發布新產品、提供優質服務等方式,不斷提升GOFORD品牌的知名度和美譽度。如今,GOFORD已成為電子行業可信賴的高可靠性功率器件供應商之一。
隨著技術實力的增強,ETA Electric Industry Co Ltd開始積極拓展國內外市場。他們參加了多個國際電子展會,與世界各地的潛在客戶建立了聯系。同時,公司還加強了與國內外大型電子企業的合作,為其提供定制化的解決方案。這些舉措極大地提升了公司的知名度和市場份額,為公司的快速發展奠定了基礎。
為了進一步滿足市場需求,Anytek在2005年投建了安尼泰科(中國)生產基地,并成功投產運營。這一舉措不僅大幅提升了公司的生產能力,也為后續的產品研發和市場拓展奠定了堅實基礎。同年,Anytek的產品還通過了SGS ISO 9001(2000)國際質量體系認證,這標志著公司的產品質量和管理水平達到了國際標準,為公司的國際化發展打開了新局面。
Anytek始終堅持以創新為驅動,不斷推出具有市場競爭力的新產品。2007年,公司自主研發的創新型產品“高清汽車行車記錄儀”面世,這款產品以其高清畫質、穩定性能和易用性等特點,迅速占領了市場制高點。隨后,Anytek又于2008年推出了行業唯一一款雙鏡頭的“雙鏡頭行車記錄儀”,這一創新設計進一步提升了行車記錄儀的功能性和實用性,贏得了市場的廣泛認可。
近年來,Desoutter公司開始重視中國市場的發展,并加大了在中國的投資和布局。公司在中國設立了多個銷售和服務中心,以便更好地服務中國客戶。同時,Desoutter公司還與中國本土企業開展合作,共同開發適合中國市場的產品。這些舉措使Desoutter公司在中國市場的份額不斷擴大,品牌影響力也得到了提升。
以上五個故事涵蓋了Desoutter公司在電子行業中的發展歷程、技術創新、國際化戰略、合并與擴張以及中國市場的發展等方面。這些故事基于事實描述,旨在展現Desoutter公司在電子行業中的成長和變化。
USB-232轉換(FT232BM)完整PCB文件和說明文件 以下文件版權所有,僅發上來大家共享,如有有用于商業目的,請自覺放棄使用。如果實在要作為商品出售,請告知我,謝謝! > 一塊USB-232的模塊,大小只有2.5cm*2.5cm,但可以應用于很多范圍。 > 特別適用于沒有串口的電腦,特別是筆記本電腦 ...… 查看全部問答∨ |
|
在對Labview有一個感性上的認識后,接下去我們可以選一本適合自己的書。 本人剛入門的時候,看的是Labview 8.2程序設計從入門到精通,讓我對labview很快有一個理性上的認識。雖然當時用的是Labview 8.5 ,而后使用Labvie ...… 查看全部問答∨ |
看看設計和現實之間的差距,用的是TCL-羅格朗的產品,FLUKE4000測試,100%通過,余量很好; 機柜 機房 網路 [localimg=600,800]7[/localimg]… 查看全部問答∨ |
VT&CSD 是什么業務,做什么功能? (這個不知道) Modem(PS1) 是什么業務,做什么功能?(這個我大概了解是上網功能) MMS(PS2) 是什么業務,做什么功能? (這個是彩信) PS3 & ...… 查看全部問答∨ |
|
如何用方向鍵來控制鼠標移動,我做了一個,按方向鍵后鼠標位置是移動了,但是鼠標一動又回到原來位置,為什么啊? 如何用方向鍵來控制鼠標移動,我做了一個,按方向鍵后鼠標位置是移動了,但是鼠標一動又回到原來位置,為什么啊? ZafPositionStruct pos; ZafMouse* mouse; ZafPositionStruct pos; mouse = (ZafMouse*)EventManager()->GetObject(ID_ZAF ...… 查看全部問答∨ |
|
現在使用的是北京奧爾斯公司提供的嵌入式系統開發實驗箱,芯片是S3C2410RP,GPRS模塊是西門子的。現在正在做GPRS實驗 目前最大的問題是根據實驗手冊和相關代碼,串口與電腦相連,通過超級終端發送AT命令,并設置了回顯的選項,但依舊沒有任何信息 ...… 查看全部問答∨ |
我的畢業設計的題目是基于單片機的plc數字量擴展,型號暫時定為西門子的S7-226,單片機為AT89C51,不知道從哪里入手啊!請大家幫幫忙啊! 我的郵箱275105908@qq.com或者adam-han@163.com… 查看全部問答∨ |