RT-Thread can - STM32F103ZET6

Posted zhangxuechao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RT-Thread can - STM32F103ZET6相关的知识,希望对你有一定的参考价值。

SDK版本v4.0.2

目前,RT-Thread Studio还不能够自定义添加can设备。下面介绍手动添加过程:

使用RT-Thread Studio创建一个简单工程

技术图片

使用RT-Thread env工具添加CAN设备

保存以后,rtconfig.h配置文件会随之修改

技术图片

拷贝sdk中can样例到工程中

技术图片

修改stm32f1xx_hal_conf.h文件

模仿着添加如下定义,不然编译会报错

#ifdef HAL_CAN_MODULE_ENABLED
 #include "stm32f1xx_hal_can.h"
#endif /* 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

以上是关于RT-Thread can - STM32F103ZET6的主要内容,如果未能解决你的问题,请参考以下文章

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash

stm32f103的 RT-Thread3.1.3移植SFUD+FAL+EasyFlash

带有 STM32f103c8t6 Bluepill 和 CAN 总线的 HAL_CAN_ERROR_PARAM

STM32F103xx bxCAN的滤波机制

stm32f103 can采样点设置为多少合适