stm32f103c8_can回环测试1

1.CAN模式

  • 正常模式
  • 静默模式 silent 可以正常地接收数据帧和远程帧,但只能发出隐性位,而不能真正发送
    报文。
  • 环回模式 loopback 把发送的报
    文当作接收的报文并保存(如果可以通过接收过滤)在接收邮箱里
  • 环回静默模式

2.硬件

  • stm32f103c8t6
问题:使用串口1,引脚PA9 TX,PA10 RX,can PA11, PA12 ,程序能够正常初始化,hal_can_start返回错误,在清除MCR的INRQ后,硬件没有将MSR的INAK置0,将can复用GPIO PB6,PB8程序才正常;

3.cubemx设置

在这里插入图片描述
在这里插入图片描述

4.初始化说明

static void MX_CAN_Init(void)
{

	/* USER CODE BEGIN CAN_Init 0 */

	/* USER CODE END CAN_Init 0 */

	/* USER CODE BEGIN CAN_Init 1 */

	/* USER CODE END CAN_Init 1 */
	hcan.Instance = CAN1;                  
	hcan.Init.Prescaler = 4;             // 预分频,范围(1~1024)
	hcan.Init.Mode = CAN_MODE_LOOPBACK;  // 工作模式
	hcan.Init.SyncJumpWidth = CAN_SJW_1TQ; // 再次同步跳跃宽度
	hcan.Init.TimeSeg1 = CAN_BS1_6TQ;      // 位段 1(BS1)的长度
	hcan.Init.TimeSeg2 = CAN_BS2_2TQ;      // 位段 2(BS2)的长度
	hcan.Init.TimeTriggeredMode = DISABLE; // 禁止时间触发通信模式
	hcan.Init.AutoBusOff = DISABLE;        // 禁止总线自动关闭
	hcan.Init.AutoWakeUp = DISABLE;        // 禁止自动唤醒
	hcan.Init.AutoRetransmission = ENABLE; // 使能自动重传
	hcan.Init.ReceiveFifoLocked = DISABLE; // 禁止接收 FIFO 锁定
	hcan.Init.TransmitFifoPriority = DISABLE; // 禁止传输 FIFO 优先级
	if (HAL_CAN_Init(&hcan) != HAL_OK)
	{
		Error_Handler();
	}
	/* USER CODE BEGIN CAN_Init 2 */
	/* USER CODE END CAN_Init 2 */

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值