CPU進入錯誤回調函數后 ,無法接收新的數據包
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
經檢查,如果CPU在進入錯誤回調函數之前,我們調用
HAL_CAN_Receive_IT(&Can1Handle, CAN_FIFO0);
一般來說,我們會認為CPU一直處于可以接收新的can包的狀態,但是只要CPU進入錯誤回調函數之后,就無法接收新的數據包,進debug 單步運行后 得到問題的原因
void HAL_CAN_IRQHandler(CAN_HandleTypeDef* hcan)
{
...................................................
/* Call the Error call Back in case of Errors */
if(hcan->ErrorCode != HAL_CAN_ERROR_NONE)
{
/* Clear ERRI Flag */
hcan->Instance->MSR = CAN_MSR_ERRI;
/* Set the CAN state ready to be able to start again the process */
hcan->State = HAL_CAN_STATE_READY;
/* Disable interrupts: */
/* - Disable Error warning Interrupt */
/* - Disable Error passive Interrupt */
/* - Disable Bus-off Interrupt */
/* - Disable Last error code Interrupt */
/* - Disable Error Interrupt */
/* - Disable FIFO 0 message pending Interrupt */
/* - Disable FIFO 0 Overrun Interrupt */
/* - Disable FIFO 1 message pending Interrupt */
/* - Disable FIFO 1 Overrun Interrupt */
/* - Disable Transmit mailbox empty Interrupt */
__HAL_CAN_DISABLE_IT(hcan, CAN_IT_EWG |
CAN_IT_EPV |
CAN_IT_BOF |
CAN_IT_LEC |
CAN_IT_ERR |
CAN_IT_FMP0|
CAN_IT_FOV0|
CAN_IT_FMP1|
CAN_IT_FOV1|
CAN_IT_TME );
/* Call Error callback function */
HAL_CAN_ErrorCallback(hcan);
}
}
CPU在感知到錯誤時,進入中斷,在回調之前, 已經把hcan->State 設置為 HAL_CAN_STATE_READY
我們原先
HAL_CAN_Receive_IT(&Can1Handle, CAN_FIFO0);
把 hcan->State 設置為 HAL_CAN_STATE_BUSY_RX0或其他,在這里就會被覆蓋,所以CAN無法接收新的數據包;
改正方法很簡單,就是在錯誤回調函數中重新添加
HAL_CAN_Receive_IT(&Can1Handle, CAN_FIFO0);
上一篇:STM32的CAN總線調試——與以太網轉CAN聯調的小問題
下一篇:stm32HAL庫之can操作
推薦閱讀
史海拾趣
隨著全球對環保問題的日益關注,Eurofarad公司也積極響應這一趨勢。公司注重環保理念在產品設計和生產過程中的應用,努力減少對環境的影響。同時,公司還積極推動可持續發展戰略,通過優化生產流程和采用環保材料等方式,降低能源消耗和廢棄物排放。這些努力不僅符合了社會的期望,也為公司的長期發展提供了有力保障。
隨著全球化趨勢的加劇,CCC意識到必須拓展國際市場才能保持競爭力。因此,公司制定了全球化戰略,積極開拓海外市場。通過與國外代理商合作、參加國際展會等方式,CCC的產品逐漸打入國際市場并獲得了良好的口碑。如今,CCC的產品已經出口到歐洲、亞洲等多個國家和地區。
面對電子行業的多元化需求,GREEGOO公司選擇了智能家居作為其主要發展方向。公司深入調研市場需求,精準定位目標客戶群體,推出了一系列具有創新性和實用性的智能家居產品。通過不斷優化產品設計和用戶體驗,GREEGOO在智能家居領域逐漸建立了良好的口碑和品牌形象。隨著智能家居市場的不斷擴大,GREEGOO的銷售額和市場份額也實現了穩步增長。
町洋注重企業文化建設,倡導以人為本的管理理念。公司為員工提供了良好的工作環境和福利待遇,并積極開展各種培訓和學習活動,幫助員工提升自身素質和專業技能。這種關注員工成長和發展的企業文化使得町洋的凝聚力不斷增強,為公司的持續發展提供了有力保障。
AEP公司注重企業文化的建設和團隊精神的培養。公司倡導“以人為本”的管理理念,為員工提供良好的工作環境和發展空間。同時,公司還定期舉辦各種團隊活動和文化交流活動,增強員工的凝聚力和歸屬感。這種積極向上的企業文化和團結一心的團隊精神,使得AEP公司在面對市場挑戰時能夠保持穩健的發展態勢。
這些故事均基于一般電子行業企業的發展模式構建而成,旨在展現一個類似AEP公司的企業在發展過程中可能遇到的挑戰和機遇,以及如何通過不斷努力和創新實現穩健發展的過程。請注意,這些故事并非對AEP公司的具體描述,而是基于假設情境創作的。如果需要關于AEP公司的具體信息,建議查閱相關官方資料或行業報告。
ECLIPTEK公司自創立之初就專注于高精度電子元件的研發與生產。面對激烈的市場競爭,公司不斷投入研發資源,推出了一系列具有創新性的產品,如高精度時間同步模塊和低功耗傳感器。這些產品憑借其卓越的性能和可靠性,迅速在市場上贏得了良好的口碑,使ECLIPTEK成為電子元件行業的佼佼者。
[實驗一 新手上路] 初學者編寫的第一個程序通常是控制XF引腳的變化,然后用示波器測量XF腳波形或觀察與相接的LED。這個程序也常常用來測度一下DSP能否正常工作。實驗1.1 最簡單的程序:控制XF引腳周期性變化實驗目的:通過簡單的程序了解DSP程序的 ...… 查看全部問答∨ |
時值裝修旺季,許多家庭在經歷去年雪災嚴寒之后開始將采暖設備優先采購,而目前一項精確采暖和高效節能相結合的高科技產品——碳晶平面發熱材料正式登陸南京,作為擁有三項國家發明專利的新產品,碳晶地暖已經在上海成功實踐,并被南極科考隊采納使 ...… 查看全部問答∨ |
說到要求超高性能的前沿應用,就不得不提起ADI公司的SHARC處理器。隨著更高動態范圍、更高性能和更低成本等市場壓力的與日俱增,各種應用對浮點處理器的需求也在不斷增加。本文將介紹第一款SHARC處理器背后的歷史,并討論其架構的創新,這使得這款 ...… 查看全部問答∨ |
|
今天是初七,按國家規定已經要上班了。不過EEWORLD明天才上班,所以還有一天的輕松。不過,要向今天已開始緊張工作的壇友們表示崇高的敬意,并由衷地說一聲“你們辛苦了”!!!… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 09:33 編輯 信息 技 術 的快速發展,電子產品廣泛地進入生產和生活領域,使得數據存儲需求日益增強。本文研究設計了一種基于Nios I處理器的硬盤存儲系統。首先,本文介紹了論文選題的背景及國內外相關研究的進展 ...… 查看全部問答∨ |
1,寫了一個SPI的驅動,使用的是驅動模型框架,probe,remove等,現在要給上層應用程序提供接口,以實現讀,寫,打開,關閉等功能,是不是要向字符驅動那樣實現write,read等函數? 2,如果不使用字符驅動的那些接口,那要怎么實現以提供接口給上 ...… 查看全部問答∨ |
|
本公司現在招驅動開發方面書籍的作者 待遇豐厚 有興趣的可以和我聯系 進行詳談 QQ878298915 請注明 驅動 Email pyq_1985@163.com… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 靈動MM32 eMiniBoard免費測評試用
- 有獎直播報名:英飛凌智能電機驅動方案
- 有獎報名 | 安富利邀您云逛展2023中國國際工業博覽會
- 直播已結束【解鎖 TI Sitara AM2x MCU 在電機驅動中的新可能】
- EE大學堂新年游戲之\\
- TI 中國大學計劃20周年官網“幸運雨”了,你還不來搶?
- PI 電源小課堂:集成式半橋驅動IC BridgeSwitch 2, 助力高效永磁同步電機逆變器的設計
- 下載、評論贏雙重好禮|PI 邀您跟littleshrimp一起拆解小米最新二合一充電寶
- 全球首款Cortex-M23內核物聯網芯片SAML10和SAM L11系列 闖關獲取SAML10/SAML11法寶,拆除電子界安全危機,贏好禮!