SDK版本v4.0.2
目前,RT-Thread Studio還不能夠自定義添加can設備,下面介紹手動添加程序:
使用RT-Thread Studio創建一個簡單工程

使用RT-Thread env工具添加CAN設備
保存以后,rtconfig.h組態檔會隨之修改

拷貝sdk中can樣例到工程中

修改stm32f1xx_hal_conf.h檔案
開啟宏定義
#define HAL_CAN_MODULE_ENABLED
添加can實作到構建
默認可以看到是取消構建的,編譯會報錯


添加GPIO初始化
gpio不初始化,can打開始終是失敗,系統會自動呼叫,
void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle) { GPIO_InitTypeDef GPIO_InitStruct; #ifdef BSP_USING_CAN1 if(canHandle->Instance==CAN1) { /* CAN1 clock enable */ __HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /**CAN1 GPIO Configuration PA11 ------> CAN1_RX PA12 ------> CAN1_TX */ GPIO_InitStruct.Pin = GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } #endif /* USING_BXCAN1 */ #ifdef BSP_USING_CAN2 if(canHandle->Instance==CAN2) { /* CAN2 clock enable */ __HAL_RCC_CAN2_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /**CAN2 GPIO Configuration PB12 ------> CAN2_RX PB6 ------> CAN2_TX */ GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); } #endif /* USING_BXCAN2 */ }
原始碼地址如下:
https://github.com/zwx230741/rt_can.git
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/13655.html
標籤:嵌入式
上一篇:802.11成幀細節
下一篇:802.11有線等效加密WEP
