在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教程:如何用STM32-CubeMX-實(shí)現(xiàn)CAN通訊

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2020-09-30 17:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

首先要安裝cubemx跟Keil5兩個(gè)編程軟件,然后打開cubemx軟件,新建一個(gè)工程項(xiàng)目:

輸入CPU型號(hào):

在右下角雙擊CPU具體型號(hào):

稍等片刻會(huì)打開如下對(duì)話框:

首先要配置系統(tǒng)的調(diào)試方式:我們選擇SW方式,

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

使能看門狗

使能CAN

使能TIM2時(shí)鐘源,采用內(nèi)部時(shí)鐘,

配置完成后可以看到單片機(jī)管腳已經(jīng)做了配置。

切換到Clock Configuration選項(xiàng)卡,配置時(shí)鐘周期,這里配置為8M

切換到Configuration選項(xiàng)卡,進(jìn)入CAN配置選項(xiàng)配置波特率如下為500Kbps。

配置接收中斷。

配置定時(shí)器如下為1ms定時(shí)器。

配置定時(shí)器中斷

配置完成后點(diǎn)擊保存,然后點(diǎn)擊如下按鈕,生成代碼

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

選擇生成代碼的方式

等待……

之后點(diǎn)擊打開項(xiàng)目。代碼生成部分完成。

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

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函數(shù)中while(1)之前調(diào)用一下即可,添加定時(shí)器啟動(dòng)函數(shù):

HAL_TIM_Base_Start_IT(&htim2);

CAN接收中斷啟動(dòng)函數(shù):

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

打開stm32f1xx_it.c文件,找到如下函數(shù),添加接收中斷啟動(dòng)函數(shù):

HAL_CAN_Receive_IT(&hcan, CAN_FIFO0);

注意:接收中斷啟動(dòng)函數(shù)使能一次只進(jìn)一次中斷,所以中斷退出前要再次使能。

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接收服務(wù)函數(shù):

HAL_CAN_RxCpltCallback

說明:該函數(shù)在stm32f1xx_hal_can.c文件中已經(jīng)有定義,它的定義方式如下:

__weak void HAL_CAN_TxCpltCallback(CAN_HandleTypeDef* hcan)

函數(shù)前面的__weak關(guān)鍵字意思是如果有同樣的定義,先執(zhí)行沒有__weak關(guān)鍵字的函數(shù),所以當(dāng)我們定義了HAL_CAN_RxCpltCallback函數(shù)后,編譯器會(huì)先編譯我們定義的函數(shù),而忽略系統(tǒng)定義的該函數(shù)。當(dāng)我們沒有定義該函數(shù)時(shí),系統(tǒng)會(huì)編譯帶有__weak關(guān)鍵字的函數(shù)。

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

添加CAN發(fā)送函數(shù):

/* USER CODE BEGIN WHILE */ while (1) { HAL_IWDG_Refresh(&hiwdg); //喂狗函數(shù) if(Can_Trans_Timer == 0) {//每100ms發(fā)送一次數(shù)據(jù) 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);//發(fā)送一幀數(shù)據(jù) } } /* USER CODE END WHILE */

在定時(shí)器函數(shù)中添加定時(shí)器代碼:

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 */}

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

/* USER CODE BEGIN Includes */

責(zé)任編輯:xj

原文標(biāo)題:STM32-CubeMX-實(shí)現(xiàn)CAN通訊

文章出處:【微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:STM32-CubeMX-實(shí)現(xiàn)CAN通訊

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Profinet轉(zhuǎn)CAN網(wǎng)關(guān)模塊對(duì)實(shí)現(xiàn)西門子PLC與CAN變頻器協(xié)同通信的助力研究

    在智能物流倉(cāng)儲(chǔ)系統(tǒng)中,AGV等設(shè)備的通訊網(wǎng)絡(luò)穩(wěn)定性和實(shí)時(shí)性至關(guān)重要。通過Profinet轉(zhuǎn)CAN網(wǎng)關(guān),可以實(shí)現(xiàn)中控系統(tǒng)(如西門子PLC,支持ProFiNet協(xié)議)與伺服驅(qū)動(dòng)器(支持CAN
    的頭像 發(fā)表于 06-09 14:59 ?202次閱讀
    Profinet轉(zhuǎn)<b class='flag-5'>CAN</b>網(wǎng)關(guān)模塊對(duì)<b class='flag-5'>實(shí)現(xiàn)</b>西門子PLC與<b class='flag-5'>CAN</b>變頻器協(xié)同通信的助力研究

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

    規(guī)格書上可以配置成CAN, 程序配置好后發(fā)現(xiàn)發(fā)送數(shù)據(jù)沒有郵箱。然后在STM32CubeMX軟件進(jìn)CAN配置發(fā)現(xiàn)STM32F103TBU6封裝是VFQFPN36PD0和PD1沒有
    發(fā)表于 06-06 06:42

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

    規(guī)格書上可以配置成CAN, 程序配置好后發(fā)現(xiàn)發(fā)送數(shù)據(jù)沒有郵箱。然后在STM32CubeMX軟件進(jìn)CAN配置發(fā)現(xiàn)STM32F103TBU6封裝是VFQFPN36PD0和PD1沒有
    發(fā)表于 04-27 08:41

    STM32開發(fā)入門進(jìn)階必備!《STM32嵌入式系統(tǒng)開發(fā)—基于STM32CubeMX和HAL庫(kù)》新書發(fā)布!

    近日,由華清遠(yuǎn)見教育科技集團(tuán)精心編撰的教育部高等學(xué)校電子信息類專業(yè)教學(xué)指導(dǎo)委員會(huì)規(guī)劃教材、普通高等教育電子信息類專業(yè)系列教材——《STM32嵌入式系統(tǒng)開發(fā)—基于STM32CubeMX和HAL庫(kù)》重磅
    的頭像 發(fā)表于 04-03 14:54 ?711次閱讀
    <b class='flag-5'>STM32</b>開發(fā)入門進(jìn)階必備!《<b class='flag-5'>STM32</b>嵌入式系統(tǒng)開發(fā)—基于<b class='flag-5'>STM32CubeMX</b>和HAL庫(kù)》新書發(fā)布!

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

    使用STM32H7的FDCAN通訊,請(qǐng)問為什么CAN1會(huì)收到CAN2的幀ID,CAN2也會(huì)收到CAN
    發(fā)表于 03-14 10:33

    請(qǐng)問STM32cubeMX中文版怎么設(shè)置?

    STM32cubeMX中文版怎么設(shè)置?
    發(fā)表于 03-13 06:12

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

    電子發(fā)燒友網(wǎng)站提供《STM32CubeMX用于STM32配置和初始化C代碼生成.pdf》資料免費(fèi)下載
    發(fā)表于 02-26 17:32 ?677次下載

    工程師開發(fā)利器:STM32CubeMX 與 eDesignSuite 的協(xié)同開發(fā)

    HAL 庫(kù)實(shí)現(xiàn)高效控制。示例:通過 CubeMX 配置 PWM 輸出和 ADC 采樣,配合 eDesignSuite 的電機(jī)驅(qū)動(dòng)算法,快速實(shí)現(xiàn)電機(jī)調(diào)速功能。系統(tǒng)級(jí)驗(yàn)證與優(yōu)化利用 STM32C
    的頭像 發(fā)表于 02-26 14:07 ?730次閱讀
    工程師開發(fā)利器:<b class='flag-5'>STM32CubeMX</b> 與 eDesignSuite 的協(xié)同開發(fā)

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

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

    STM32CubeMX生成的代碼,是怎樣的HAL架構(gòu)?

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

    STM32CubeMX的菜單介紹

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

    何用 S7-200 實(shí)現(xiàn) Modbus 通信?

    電子發(fā)燒友網(wǎng)站提供《如何用 S7-200 實(shí)現(xiàn) Modbus 通信?.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:22 ?2次下載

    STM32F4 HAL庫(kù)下CAN發(fā)送導(dǎo)致FLASH報(bào)錯(cuò)怎么解決?

    [td]芯片型號(hào)為:STM32F407VET6。使用CubeMX配置并生成HAL庫(kù)。 在工程中,配置了CAN1和CAN2。并且調(diào)用了函數(shù)HAL_CA
    發(fā)表于 09-09 08:27

    stm32用串口燒錄怎么設(shè)置

    準(zhǔn)備工作 確保您擁有STM32開發(fā)板和相應(yīng)的硬件設(shè)備,如USB轉(zhuǎn)串口模塊。 安裝STM32CubeMXSTM32CubeProgrammer軟件,這些是ST官方提供的工具,用于配置和燒錄ST
    的頭像 發(fā)表于 08-22 09:33 ?3423次閱讀
    主站蜘蛛池模板: 国产香蕉75在线播放 | 国产伦子一区二区三区四区 | 国产在线美女 | 天天色狠狠干 | 日日噜噜夜夜狠狠tv视频免费 | 喷潮白浆| av网站免费线看 | 乱j伦小说在线阅读 | 九色综合九色综合色鬼 | 乱子伦xxxx厨房 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 亚洲一区二区免费在线观看 | 狠狠色噜噜狠狠狠狠97 | 国产超爽人人爽人人做 | 7777奇米影视 | 天天噜噜日日噜噜久久综合网 | 国产成人无精品久久久久国语 | 一级片aaaa| 国产小视频免费在线观看 | 色妞网站| 国产日本在线观看 | 性做久久久久久免费观看 | 欧美色人阁 | 亚洲成人网页 | 中国性猛交xxxx乱大交 | 亚洲1页 | 国产一区二区在线观看免费 | 天天射天天操天天色 | 性夜影院爽黄a爽免费看网站 | 理论视频在线观看 | 天天爽夜夜爽精品视频一 | 在线观看免费视频 | 亚洲永久免费视频 | 精品免费福利视频 | 特级淫片aaaa毛片aa视频 | 奇米影视四色7777久久精品 | 免费大片a一级一级 | 久久这里只精品热在线8 | 午夜精品视频在线观看 | 免费看美女毛片 | 天堂一区二区三区在线观看 |