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 ConfigurationPA11 ------> 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 ConfigurationPB12 ------> 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