国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 HAL庫 CAN雙機通信接收無法進入中斷、中斷沒有反應的解決方法

這篇具有很好參考價值的文章主要介紹了STM32 HAL庫 CAN雙機通信接收無法進入中斷、中斷沒有反應的解決方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在調(diào)試HAL庫下的CAN雙機(雙F103ZET6)通信時,阻塞輪詢接收完全正常,但是中斷接收沒有反應。翻看了GL的燒腦之路總結(一):Cubemx創(chuàng)建CAN通信工程,無法進入CAN中斷的原因這篇文章以后,核實自己的硬件電路沒有問題,于是對自己的工程文件進行整理,把
①HAL_CAN_ConfigFilter(CAN_HandleTypeDef *hcan, CAN_FilterTypeDef *sFilterConfig)//配置can
②HAL_CAN_Start(CAN_HandleTypeDef *hcan)//開始can
③HAL_CAN_ActivateNotification(CAN_HandleTypeDef *hcan, uint32_t ActiveITs)//使能can
三個函數(shù)放在一起后,成功實現(xiàn)了CAN中斷接收,下面是我在工程中的配置源碼:

void can_filterconfig_and_init(void)
{
	CAN_FilterTypeDef filter;
	filter.FilterIdHigh = 0x0000;
	filter.FilterIdLow = 0x0000;
	filter.FilterMaskIdHigh = 0x0000;
	filter.FilterMaskIdLow = 0x0000;
	//不過濾
	filter.FilterFIFOAssignment = CAN_FILTER_FIFO1;
	filter.FilterActivation = ENABLE;
	filter.FilterMode = CAN_FILTERMODE_IDMASK;
	filter.FilterScale = CAN_FILTERSCALE_32BIT;
	filter.FilterBank = 0;
	//filter.SlaveStartFilterBank =14;
	
	if(HAL_CAN_ConfigFilter(&hcan,&filter) != HAL_OK)
	{
		Error_Handler();
		Usart_SendString("can配置失敗\r\n");
	}	
	else
		Usart_SendString("can配置成功\r\n");
	
	if(HAL_CAN_ActivateNotification(&hcan,CAN_IT_RX_FIFO1_MSG_PENDING) != HAL_OK)
	{
		Error_Handler();
		Usart_SendString("開啟掛起中斷允許失敗\r\n");
	}	
	else
		Usart_SendString("開啟掛起中斷允許成功\r\n");
	if(HAL_CAN_Start(&hcan) != HAL_OK)
	{
		Error_Handler();
		Usart_SendString("can開啟失敗\r\n");
	}	
	else
		Usart_SendString("can開啟成功\r\n");
}

以上三個函數(shù)的位置和順序建議參考我的代碼,下圖是以上代碼在工程中的位置。
hal庫can中斷接收,stm32,嵌入式硬件,單片機
最終在main函數(shù)中調(diào)用:
(中斷回調(diào)函數(shù)我就不寫了,教程很多)

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();
 
  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_CAN_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	can_filterconfig_and_init();//*這兒!不要忘記聲明哦。* 

  /* USER CODE END 2 */
 
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

最終代碼運行結果(串口助手中):
hal庫can中斷接收,stm32,嵌入式硬件,單片機
花了很長時間踩了這個坑,之前的原因應該是把這三個函數(shù)分開了,建議這三個函數(shù)一輩子捆綁在一起!謝謝大家能看到這里!

源碼自取,開源萬歲!
鏈接:https://pan.baidu.com/s/1jQTEc2XtnRRcrEVfafYuWg?pwd=ivml
提取碼:ivml文章來源地址http://www.zghlxwxcb.cn/news/detail-760213.html

到了這里,關于STM32 HAL庫 CAN雙機通信接收無法進入中斷、中斷沒有反應的解決方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【STM32筆記】HAL庫低功耗STOP停止模式的串口喚醒(解決進入以后立馬喚醒、串口喚醒和回調(diào)無法一起使用、接收數(shù)據(jù)不全的問題)

    【STM32筆記】HAL庫低功耗STOP停止模式的串口喚醒(解決進入以后立馬喚醒、串口喚醒和回調(diào)無法一起使用、接收數(shù)據(jù)不全的問題)

    【STM32】HAL庫低功耗STOP停止模式的串口喚醒(解決進入以后立馬喚醒、串口喚醒和回調(diào)無法一起使用、接收數(shù)據(jù)不全、首字節(jié)錯誤的問題) 【STM32筆記】低功耗模式配置及避坑匯總 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32筆記】HAL庫低功耗模式配置(ADC喚醒無

    2024年02月14日
    瀏覽(26)
  • STM32 通過HAL庫實現(xiàn)雙機SPI程序燒錄之一SPI雙機通信

    STM32 通過HAL庫實現(xiàn)雙機SPI程序燒錄之一SPI雙機通信

    主要功能:STM32F407VET6作為主機,STM32F103ZET6作為從機實現(xiàn)F4通過SPI接口發(fā)送數(shù)據(jù)給F1進行串口打印功能 主要是使用STM32cubemx進行相關配置(使用這個軟件不能只用于生成代碼,要學會讀懂生成的每一句代碼這樣才方便后期調(diào)試,不然出現(xiàn)問題根本找不到) 選擇Serial Waire進行調(diào)試

    2024年02月08日
    瀏覽(26)
  • STM32 HAL庫 串口中斷接收數(shù)據(jù)包

    STM32 HAL庫 串口中斷接收數(shù)據(jù)包

    目錄 一、CUBEmx配置 1.設置系統(tǒng)時鐘,配置SYS,配置時鐘樹 ??編輯 ?2.配置串口USART1 3.配置NVIC,開啟串口中斷 ?編輯4.點擊GENERATE CODE輸出文件即可 二、代碼部分 0.串口重定向——printf 1.關于舵機 2.開啟串口中斷函數(shù) 3.編寫串口回調(diào)函數(shù) 4.主函數(shù)部分 三、實驗現(xiàn)象: 四、總

    2024年02月04日
    瀏覽(23)
  • 【STM32】HAL庫 串口中斷發(fā)送與接收

    【STM32】HAL庫 串口中斷發(fā)送與接收

    【STM32】HAL庫 新建MDK工程 【STM32】HAL庫 串口輪詢發(fā)送 使用stm32串口中斷發(fā)送和中斷接收 在主函數(shù)前開啟中斷,接受字節(jié)數(shù)為5 接受5個字節(jié)后,進入中斷接收完成回調(diào)函數(shù),重新再開啟中斷,并把接收到的數(shù)據(jù)返回 修改接收數(shù)組長度,改為開啟串口空閑中斷 接收事件回調(diào)函數(shù)

    2024年02月08日
    瀏覽(31)
  • 【STM32】HAL庫——串口中斷只接收到兩個字符

    環(huán)境:STM32CubeMX(6.7.0)+MDK-ARM(V5.36.0.0)+STM32F103C8T6 使用XCOM發(fā)送字符串(總共8個字符),單片機進行解析為ModBus協(xié)議失敗,只接收到前兩個字節(jié)的數(shù)據(jù)。 原串口中斷回調(diào)函數(shù): 去掉串口中斷回調(diào)函數(shù)的printf函數(shù)即可 在嵌入式系統(tǒng)中,將printf函數(shù)直接放在串口中斷服務程序(ISR)中

    2024年01月22日
    瀏覽(23)
  • STM32 hal庫編程定時器清除中斷標志位,開啟定時器中斷會立即進入中斷的問題

    1、如果不清除中斷標志位,開啟定時器中斷的話,不能完成相應的計時,會立即進入中斷。 2、如果在開啟定時器中斷前清除了中斷標志位,就會等待計時完成再出發(fā)中斷。 3、主要是針對單次計時使用,尤其是對第一次計時有要求的程序。

    2024年02月01日
    瀏覽(23)
  • 【STM32 HAL庫實戰(zhàn)】串口DMA + 空閑中斷 實現(xiàn)不定長數(shù)據(jù)接收

    【STM32 HAL庫實戰(zhàn)】串口DMA + 空閑中斷 實現(xiàn)不定長數(shù)據(jù)接收

    STM32CubeMX最新版: 打開STM32CubeMX軟件,點擊ACCESS TO MCU SELECTOR,在Commercial Part Number 中輸入MCU型號,例如我在這里輸入了STM32L431RCT6。選中正確型號然后雙擊進入下一步的配置界面。 1.1 SYS配置如圖 1.2 RCC配置如圖 開啟了外部晶振,若無則都選擇Disable 1.3 USART1配置 NVIC Settings 注意

    2024年02月03日
    瀏覽(38)
  • STM32無法正常進入外部中斷的問題

    ???????本人在使用外部中斷讀取鍵值的時候遇見了無法進入外部中斷的問題,我的問題是這樣的:一開始想用STM32F103C8T6的PB12和PB14讀取兩個按鍵的狀態(tài),并且是使用外部中斷讀取,但是總是遇到一個按鍵的狀態(tài)可以讀?。窗存I按下,GPIO口的電平發(fā)生跳變,然后進入對應

    2024年02月11日
    瀏覽(20)
  • STM32CubeMX-HAL庫-UART串口接收中斷回調(diào)函數(shù)代碼分析

    ????????CubeMx中HAL庫函數(shù)的調(diào)用不同于庫函數(shù)調(diào)用,在學習CubeMx串口通信時,不理解HAL庫中的回調(diào)函數(shù)是怎么被調(diào)用的,于是查看每個的定義,參考其他人寫的博客,總算弄明白了HAL庫中斷調(diào)用與庫函數(shù)不同之處。寫下這篇博客一是加深自己的理解,二是希望對不理解HA

    2024年02月02日
    瀏覽(45)
  • 解決STM32在延時時無法進入中斷的問題

    問題: 在使用zigbee模塊時,使用串口作為無線收發(fā)的載體,與stm32通信,使用DHT11作為簡單的受控源,出現(xiàn)了bug: 當在while(1)里使用delay函數(shù),或者使用DHT11_Read_Data函數(shù)時,程序無法進入串口接收中斷,無法使用遠程控制 其中的while函數(shù)為: 解決思路: 檢查接線之后,我首

    2024年02月12日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包