STM32 F4 CAN HAL 配置

CAN HAL 配置遇到的问题记录:
(1)CAN在调用之前,进行了自测试. (非中断模式),如果改为中断模式,只能正常接收数据一次。
(2)滤波器的设置:
参考:STM32之CAN —CAN ID过滤器分析
再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结
stm32之CAN发送、接收详解
(3)

bsp_CAN.C


/* 包含头文件 ----------------------------------------------------------------*/
#include "CAN/bsp_CAN.h"

/* 私有类型定义 --------------------------------------------------------------*/
/* 私有宏定义 ----------------------------------------------------------------*/
/* 私有变量 ------------------------------------------------------------------*/
CAN_HandleTypeDef hCAN;
static CanTxMsgTypeDef        TxMessage;
static CanRxMsgTypeDef        RxMessage;
static void can_NVIC_Config(void);


extern CanRxMsgTypeDef        TestRxMessage;
extern uint8_t Can_test_flag;
extern uint32_t BoardID; 




static void can_Init(uint32_t CAN_MODE )
{
   
  CAN_FilterConfTypeDef  sFilterConfig;

  /*CAN单元初始化*/
  hCAN.Instance = CANx;             /* CAN外设 */
  hCAN.pTxMsg = &TxMessage;
  hCAN.pRxMsg = &RxMessage;
  hCAN.Init.Prescaler = 2;  
	hCAN.Init.Mode = CAN_MODE;         /* 工作模式 */	
  hCAN.Init.SJW = CAN_SJW_1TQ;       /* BTR-SJW 重新同步跳跃宽度 2个时间单元 */
  hCAN.Init.BS1 = CAN_BS1_12TQ;      /* BTR-TS1 时间段1 占用了6个时间单元 */
  hCAN.Init.BS2 = CAN_BS2_8TQ;       /* BTR-TS1 时间段2 占用了8个时间单元 */
  hCAN.Init.TTCM = DISABLE;          /* MCR-TTCM  关闭时间触发通信模式使能 */
  hCAN.Init.ABOM = DISABLE;          /* MCR-ABOM  自动离线管理 */
  hCAN.Init.AWUM = DISABLE;          /* MCR-AWUM  使用自动唤醒模式 */
  hCAN.Init.NART = DISABLE;          /* MCR-NART  禁止报文自动重传	  DISABLE-自动重传 */
  hCAN.Init.RFLM = DISABLE;          /* MCR-RFLM  接收FIFO 锁定模式  DISABLE-溢出时新报文会覆盖原有报文 */
  hCAN.Init.TXFP = DISABLE;          /* MCR-TXFP  发送FIFO优先级 DISABLE-优先级取决于报文标示符 */
  HAL_CAN_Init(&hCAN);
	
	  /*CAN过滤器初始化*/
  sFilterConfig.FilterNumber = 0;                    /* 过滤器组0 */
  sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;  /* 工作在标识符屏蔽位模式 */
  sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; /* 过滤器位宽为单个32位。*/
  /* 使能报文标示符过滤器按照标示符的内容进行比对过滤,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。 */
  
  sFilterConfig.FilterIdHigh         = ( BoardID<<5)&<
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值