我正在定制
PCB 上使用
STM32F072CB 设备。
从这个 STM32 example 开始工作。
我只想实现一个基本的环回测试。但是我似乎没有收到任何数据。
HAL_CAN_Init()调用成功
HAL_CAN_Start()调用成功
HAL_CAN_Ac
tivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING) 被成功调用并且在收到任何消息时应该调用 HAL_CAN_RxFifo0MsgPendingCallback()。
然后我从 HAL_CAN_AddTxMessage() 传输一条基本消息,我可以看到它已从 HAL_CAN_TxMailbox0CompleteCallback() 完成。
但是仍然没有产生接收中断。
- static void MX_CAN_Init(void)
- {
- hcan.Instance = CAN;
- hcan.Init.Prescaler = 8;
- hcan.Init.Mode = CAN_MODE_SILENT_LOOPBACK;
- hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
- hcan.Init.TimeSeg1 = CAN_BS1_5TQ;
- hcan.Init.TimeSeg2 = CAN_BS2_6TQ;
- hcan.Init.TimeTriggeredMode = DISABLE;
- hcan.Init.AutoBusOff = DISABLE;
- hcan.Init.AutoWakeUp = DISABLE;
- hcan.Init.AutoRetransmission = ENABLE;
- hcan.Init.ReceiveFifoLocked = DISABLE;
- hcan.Init.TransmitFifoPriority = DISABLE;
- if (HAL_CAN_Init(&hcan) != HAL_OK)
- {
- Error_Handler();
- }
- /* USER CODE BEGIN CAN_Init 2 */
- if (HAL_CAN_Start(&hcan) != HAL_OK)
- {
- /* Start Error */
- Error_Handler();
- }
- if (HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK)
- {
- /* Notification Error */
- Error_Handler();
- }
- /* USER CODE END CAN_Init 2 */
- }
- void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) {
- if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader, RxData) == HAL_OK)
- CANprocess();
- }
- void CAN_TX_Echo_Test() {
- TxData[0] = 0xbe;
- TxData[1] = 0xef;
- /* Start the Transmission process */
- if (HAL_CAN_AddTxMessage(&hcan, &TxHeader, TxData, &TxMailbox) != HAL_OK) {
- /* Transmission request Error */
- Error_Handler();
- }
- }