色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    STM32CubeMX的菜單介紹

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

    記錄貼--啟明欣欣高配開發板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 ?3148次閱讀

    STM32H743接收CAN數據想要使用DMA,不占用CPU數據,能否實現

    請教各位大佬,接收CAN數據想要使用DMA,不占用CPU數據,能否實現。 我在cubeMX例程FDCAN沒有DMA配置。網上也沒找到FDCAN使用DMA的。
    發表于 05-31 08:08

    PLC與CAN通訊設備如何搭配使用呢?

    PLC與CAN通訊設備的搭配使用,主要取決于具體的應用場景和需求。
    的頭像 發表于 05-11 10:39 ?606次閱讀

    STM32CubeMX和Datasheet引腳位置不一致,那個是對的?

    環境版本:CubeMX 5.3.0 ,datasheet- DS12110 Rev 7 CPU:STM32H743IIT6配置CAN1_RXFD引腳時,CubeMX上是第11腳,而Da
    發表于 04-15 06:41

    請問STM32L4如何利用STM32CubeMX實現EXTI控制LED?

    STM32L4利用STM32CubeMX如何實現EXTI控制LED?
    發表于 04-09 08:07

    STM32F042F4中為什么不能用CAN

    使用STM32cubeMX選擇F0系列帶CAN的單片機,出現了F042F4,其PDF手冊里面也說明了具有CAN接口,但在cubeMX的配置程序中卻不能使用
    發表于 04-09 07:41

    stm32cubemx生成的can代碼,運行調試顯示顯性位錯誤的原因?

    stm32cubemx生成的can代碼,運行調試顯示顯性位錯誤,找不到原因,芯片是stm32f103z,求助各位。
    發表于 04-07 07:56

    兩片STM32CAN接口,可以直接用TX與RX引腳連接正常通訊嗎?

    兩片 STM32CAN接口,可以直接用TX與RX引腳連接(不接CAN收發器芯片)正常通訊
    發表于 04-01 07:38

    使用STM32F042單片機做的CAN通訊,運行一段時間后通訊異常的原因?

    使用STM32F042單片機做的CAN通訊,運行一段時間后發現通訊異常,當通訊異常時,重新下載程序后通訊
    發表于 03-15 07:11

    如何在stm32cubemx中精確查詢?

    stm32cubemx中finder功能的確很方便,但我遇到一個問題 現在片子上pin復用功能越來越多,越來越方便 我同時需要多個接口,如,1個can,2個spi,1個csi...... 選擇時,會出現數量上滿足了,但不少pin是復用,不能共存。 請教如何在
    發表于 03-12 06:11

    何用cubemx配置并實現STM32F373的三個SDADC并行采樣?

    求大神指點如何實現STM32F373的三個SDADC并行采樣,用cubemx配置?
    發表于 03-11 07:14

    Mini CAN Unit小型CAN總線通訊單元

    技術,CAN總線能夠實現穩定通信,適應長距離傳輸和嘈雜環境的要求。MiniCANUnitMiniCANUnit是一款小型CAN總線通訊單元,采用了TJA1051T
    的頭像 發表于 02-19 12:47 ?508次閱讀
    Mini <b class='flag-5'>CAN</b> Unit小型<b class='flag-5'>CAN</b>總線<b class='flag-5'>通訊</b>單元
    主站蜘蛛池模板: 日本女人水多| 老板揉搓秘书丰满大乳| 久操久操久操| 无羞耻肉动漫在线观看| 草比比过程图| 母乳女神春日もな| 最近中文字幕高清中文字幕MV| 国产小视频国产精品| 亚洲国产AV精品卡一卡二| 国产在线高清视频无码不卡| 亚洲精品电影久久久影院| 国产一在线精品一区在线观看| 亚洲大片免费看| 国拍自产精品福利区| 亚洲欧美日韩中字视频三区| 韩国免费啪啪漫画无遮拦健身教练| 亚洲成人一区| 黑人玩弄极品人妻系列| 亚洲午夜精品AV无码少妇| 久久99国产精品二区不卡| 在线观看视频一区| 狼群影院视频在线观看WWW| 中文字幕亚洲无限码| 男女免费观看在线爽爽爽视频 | 欧美最猛性XXXXX肛交| 超清无码波多野吉衣与黑人| 特黄AAAAAAA片免费视频| 国产亚洲视频中文字幕| 正在播放一区二区| 内射后入在线观看一区| 大肥女ass樱桃| 亚洲第一伊人| 曼谷av女郎| 成年人深夜福利| 性欧美xxxxporn| 久久久精品免费免费直播| 99久久精品国产自免费| 色尼姑久久超碰在线| 狠狠射首页| 99久久精品免费看国产一区二区三区 | 狠狠婷婷综合久久久久久|