RTThreadcan

编程

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打开始终是失败。别忘记在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

以上是 RTThreadcan 的全部内容, 来源链接: utcz.com/z/513822.html

回到顶部