|
发表于 2018-12-17 22:22:23
|
显示全部楼层
断电重启之后,会接收到大概1秒的消息然后死机。
速度看下面代码
主循环 100ms发送一次
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- loop_circle++;
- if (HAL_CAN_AddTxMessage(&hcan, &TxMessage, txData, &TxMailbox) != HAL_OK)
- {
- printf("\n\r CAN bus error \n\r");
- Error_Handler();
- }
- HAL_Delay(100);
- printf("\n\r Loop %d \n\r", loop_circle);
- HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
- }
复制代码
初始化部分是这个样子的
- if(HAL_CAN_ConfigFilter(&hcan,&sFilterConfig)!=HAL_OK) //Â˲¨Æ÷³õʼ»¯
- {
- printf("\n\r Filter init ERROR \n\r");
- Error_Handler();
- }
-
- /* Start the CAN peripheral */
- printf("\n\r CAN Start \n\r");
- if (HAL_CAN_Start(&hcan) != HAL_OK)
- {
- printf("\n\r CAN start error \n\r");
- /* Start Error */
- Error_Handler();
- }
- /* Activate CAN RX notification */
- printf("\n\r CAN RX notificaiton \n\r");
- if (HAL_CAN_ActivateNotification(&hcan, CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK)
- {
- /* Notification Error */
- printf("\n\r Notification Error \n\r");
- Error_Handler();
- }
复制代码
canbus中断是这个样子的
- void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *CanHandle)
- {
- /* Get RX message */
- if (HAL_CAN_GetRxMessage(CanHandle, CAN_RX_FIFO0, &RxMessage, rxData) != HAL_OK)
- {
- /* Reception Error */
- Error_Handler();
- }
- printf("\n\r CAN bus messages coming\n\r");
- /* Display LEDx */
- if ((RxMessage.StdId == 0x321) && (RxMessage.IDE == CAN_ID_STD) && (RxMessage.DLC == 2))
- {
- //LED_Display(rxData[0]);
- //ubKeyNumber = rxData[0];
- printf("\n\r CAN bus 321 \n\r");
- }
- }
复制代码
速度应该还好吧
|
|