zoukankan      html  css  js  c++  java
  • RT-Thread can

    SDK版本v4.0.2

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

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

    image

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

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

    image

    拷贝sdk中can样例到工程中

    image

    修改stm32f1xx_hal_conf.h文件

    开启宏定义

    #define HAL_CAN_MODULE_ENABLED

    添加can实现到构建

    默认可以看到是取消构建的,编译会报错

    image

    image

    添加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

  • 相关阅读:
    后向边
    图的割点、桥和双连通分支的基本概念
    Hihocoder 1062 最近公共祖先1
    会场问题 差分解法
    POJ2976 01分数规划 普通题
    Hihocoder 1049
    hihocoder 1050树中最长路
    Hihocoder 1055
    POJ1463
    C语言|博课作业02
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/12359500.html
Copyright © 2011-2022 走看看