女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

教程:如何用STM32-CubeMX-實現CAN通訊

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2020-09-30 17:24 ? 次閱讀

首先要安裝cubemx跟Keil5兩個編程軟件,然后打開cubemx軟件,新建一個工程項目:

輸入CPU型號:

在右下角雙擊CPU具體型號:

稍等片刻會打開如下對話框:

首先要配置系統的調試方式:我們選擇SW方式,

然后配置晶振源,這里選擇的是外部晶振,8M,

使能看門狗

使能CAN

使能TIM2時鐘源,采用內部時鐘,

配置完成后可以看到單片機管腳已經做了配置。

切換到Clock Configuration選項卡,配置時鐘周期,這里配置為8M

切換到Configuration選項卡,進入CAN配置選項配置波特率如下為500Kbps。

配置接收中斷。

配置定時器如下為1ms定時器。

配置定時器中斷

配置完成后點擊保存,然后點擊如下按鈕,生成代碼

填寫工程名稱,路徑,編程軟件等等

選擇生成代碼的方式

等待……

之后點擊打開項目。代碼生成部分完成。

添加一些特殊配置和邏輯代碼,添加CAN的配置信息函數。

void Can_Config(void){ hcan.pTxMsg = &TxMessage; hcan.pRxMsg = &RxMessage; /*##-1- Configure CAN1 Transmission Massage #####################################*/ hcan.pTxMsg->StdId = 0x123; hcan.pTxMsg->RTR = CAN_RTR_DATA; hcan.pTxMsg->IDE = CAN_ID_STD; hcan.pTxMsg->DLC = 8; /*##-2- Configure the CAN1 Filter ###########################################*/ sFilterConfig.FilterNumber = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_16BIT; sFilterConfig.FilterIdHigh = 0; sFilterConfig.FilterIdLow = 0; sFilterConfig.FilterMaskIdHigh = 0; sFilterConfig.FilterMaskIdLow = 0; sFilterConfig.FilterFIFOAssignment = CAN_FIFO0; sFilterConfig.FilterActivation = ENABLE; sFilterConfig.BankNumber = 14; HAL_CAN_ConfigFilter(&hcan, &sFilterConfig);}

在Main函數中while(1)之前調用一下即可,添加定時器啟動函數:

HAL_TIM_Base_Start_IT(&htim2);

CAN接收中斷啟動函數:

HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);/* USER CODE BEGIN 2 */ Can_Config(); //Can配置信息HAL_TIM_Base_Start_IT(&htim2); //定時器啟動HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);//使能Can接收中斷 /* USER CODE END 2 */

打開stm32f1xx_it.c文件,找到如下函數,添加接收中斷啟動函數:

HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);

注意:接收中斷啟動函數使能一次只進一次中斷,所以中斷退出前要再次使能。

void USB_LP_CAN1_RX0_IRQHandler(void){ /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 0 */ /* USER CODE END USB_LP_CAN1_RX0_IRQn 0 */ HAL_CAN_IRQHandler(&hcan); /* USER CODE BEGIN USB_LP_CAN1_RX0_IRQn 1 */ HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);//ê1?üCAN?óê? /* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */}

添加CAN接收服務函數:

HAL_CAN_RxCpltCallback

說明:該函數在stm32f1xx_hal_can.c文件中已經有定義,它的定義方式如下:

__weak void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* hcan)

函數前面的__weak關鍵字意思是如果有同樣的定義,先執行沒有__weak關鍵字的函數,所以當我們定義了HAL_CAN_RxCpltCallback函數后,編譯器會先編譯我們定義的函數,而忽略系統定義的該函數。當我們沒有定義該函數時,系統會編譯帶有__weak關鍵字的函數。

void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan){ unsigned short int speed; switch(hcan->pRxMsg->StdId) {//根據ID處理數據 case 0x123:// /*在此添加數據處理邏輯*/ break; default: break; }}

添加CAN發送函數:

/* USER CODE BEGIN WHILE */ while (1) { HAL_IWDG_Refresh(&hiwdg); //喂狗函數 if(Can_Trans_Timer == 0) {//每100ms發送一次數據 Can_Trans_Timer = 100; hcan.pTxMsg->StdId = 0x123; hcan.pTxMsg->Data[0] = 'C'; hcan.pTxMsg->Data[1] = 'A'; hcan.pTxMsg->Data[2] = 'N'; hcan.pTxMsg->Data[3] = ' '; hcan.pTxMsg->Data[4] = 'T'; hcan.pTxMsg->Data[5] = 'E'; hcan.pTxMsg->Data[6] = 'S'; hcan.pTxMsg->Data[7] = 'T'; HAL_CAN_Transmit(&hcan, 200);//發送一幀數據 } } /* USER CODE END WHILE */

在定時器函數中添加定時器代碼:

void TIM2_IRQHandler(void){ /* USER CODE BEGIN TIM2_IRQn 0 */ if(Can_Trans_Timer > 0) Can_Trans_Timer--; /* USER CODE END TIM2_IRQn 0 */ HAL_TIM_IRQHandler(&htim2); /* USER CODE BEGIN TIM2_IRQn 1 */ /* USER CODE END TIM2_IRQn 1 */}

說明:在往工程中添加代碼時要注意,不要任意往里面添加代碼,要在注釋著USER CODE BEGIN的地方添加代碼,這樣在重新生成代碼時才不至于將已經寫好的代碼覆蓋掉,如下

/* USER CODE BEGIN Includes */

責任編輯:xj

原文標題:STM32-CubeMX-實現CAN通訊

文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴

原文標題:STM32-CubeMX-實現CAN通訊

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Profinet轉CAN網關模塊對實現西門子PLC與CAN變頻器協同通信的助力研究

    在智能物流倉儲系統中,AGV等設備的通訊網絡穩定性和實時性至關重要。通過Profinet轉CAN網關,可以實現中控系統(如西門子PLC,支持ProFiNet協議)與伺服驅動器(支持CAN
    的頭像 發表于 06-09 14:59 ?64次閱讀
    Profinet轉<b class='flag-5'>CAN</b>網關模塊對<b class='flag-5'>實現</b>西門子PLC與<b class='flag-5'>CAN</b>變頻器協同通信的助力研究

    STM32F103TBU6 封裝是VFQFPN36 將PD0和PD1配置成CAN不成功是什么原因?

    規格書上可以配置成CAN, 程序配置好后發現發送數據沒有郵箱。然后在STM32CubeMX軟件進CAN配置發現STM32F103TBU6封裝是VFQFPN36PD0和PD1沒有
    發表于 06-06 06:42

    STM32F103TBU6封裝是VFQFPN36,將PD0和PD1配置成CAN不成功是什么原因?

    規格書上可以配置成CAN, 程序配置好后發現發送數據沒有郵箱。然后在STM32CubeMX軟件進CAN配置發現STM32F103TBU6封裝是VFQFPN36PD0和PD1沒有
    發表于 04-27 08:41

    STM32開發入門進階必備!《STM32嵌入式系統開發—基于STM32CubeMX和HAL庫》新書發布!

    近日,由華清遠見教育科技集團精心編撰的教育部高等學校電子信息類專業教學指導委員會規劃教材、普通高等教育電子信息類專業系列教材——《STM32嵌入式系統開發—基于STM32CubeMX和HAL庫》重磅
    的頭像 發表于 04-03 14:54 ?615次閱讀
    <b class='flag-5'>STM32</b>開發入門進階必備!《<b class='flag-5'>STM32</b>嵌入式系統開發—基于<b class='flag-5'>STM32CubeMX</b>和HAL庫》新書發布!

    使用STM32H7的FDCAN通訊,為什么CAN1會收到CAN2的幀ID,CAN2也會收到CAN1的?

    使用STM32H7的FDCAN通訊,請問為什么CAN1會收到CAN2的幀ID,CAN2也會收到CAN
    發表于 03-14 10:33

    STM32CubeMX用于STM32配置和初始化C代碼生成

    電子發燒友網站提供《STM32CubeMX用于STM32配置和初始化C代碼生成.pdf》資料免費下載
    發表于 02-26 17:32 ?658次下載

    工程師開發利器:STM32CubeMX 與 eDesignSuite 的協同開發

    HAL 庫實現高效控制。示例:通過 CubeMX 配置 PWM 輸出和 ADC 采樣,配合 eDesignSuite 的電機驅動算法,快速實現電機調速功能。系統級驗證與優化利用 STM32C
    的頭像 發表于 02-26 14:07 ?637次閱讀
    工程師開發利器:<b class='flag-5'>STM32CubeMX</b> 與 eDesignSuite 的協同開發

    使用stm32cubeMX無法生成mdk工程文件?

    幾年前使用過cubemx,可以生成keil的工程文件。最近有個工程使用cubemx創建,結果只能生成stm32cubemx類型的文件,無法生成mdk的工程文件。 請教如何解決。 (我之前使用過多次
    發表于 01-04 20:03

    STM32CubeMX生成的代碼,是怎樣的HAL架構?

    需要注意,CubeMX只是一個初始化工具,它只是幫你完成了HAL庫外設和時鐘的初始化,具體程序的編寫還需要查閱HAL庫的說明,使用相關函數實現你想實現的功能。CubeMX生成的代碼包含
    的頭像 發表于 01-01 21:01 ?673次閱讀
    <b class='flag-5'>STM32CubeMX</b>生成的代碼,是怎樣的HAL架構?

    STM32CubeMX的菜單介紹

    相信初學者打開STM32CubeMX一定是一臉懵逼,里面都是全英文的,不知道從何入手。這里先給大家簡單講解一下。在新建工程這一欄里,我們最常用的是第一個,它會彈出一個芯片列表供你選擇,然后就會創建一
    的頭像 發表于 12-25 21:03 ?408次閱讀
    <b class='flag-5'>STM32CubeMX</b>的菜單介紹

    何用 S7-200 實現 Modbus 通信?

    電子發燒友網站提供《如何用 S7-200 實現 Modbus 通信?.pdf》資料免費下載
    發表于 09-14 10:22 ?2次下載

    stm32用串口燒錄怎么設置

    準備工作 確保您擁有STM32開發板和相應的硬件設備,如USB轉串口模塊。 安裝STM32CubeMXSTM32CubeProgrammer軟件,這些是ST官方提供的工具,用于配置和燒錄ST
    的頭像 發表于 08-22 09:33 ?2973次閱讀

    記錄貼--啟明欣欣高配開發板STM32F407ZGT6調試雙CAN收發通信

    1.使用軟件開發工具:Keil5 V5.39+STM32CubeMX 1.1 Keil5 V5.39版本信息 1.2 STM32CubeMX版本信息 1.2.3STM32CubeMX安裝
    發表于 06-24 13:02

    如何檢測can通訊電路的好壞

    CAN(Controller Area Network)是一種基于總線通信的局域網技術,廣泛應用于汽車電子、工業控制等領域。在實際應用中,CAN通訊電路的好壞對整個系統的穩定性和可靠性具有重要
    的頭像 發表于 06-16 09:42 ?4965次閱讀