Я пытаюсь использовать CAN STM32F3, но у меня возникли некоторые проблемы.Я прочитал несколько уроков и следовал инструкциям, но думаю, что делаю некоторые ошибки.Приведенный ниже код работает как задача freeRTOS и должен работать как опрос по каналу Rx.
#include "FreeRTOS.h"
#include "cmsis_os.h"
#include "stdio.h"
#include "stm32f3xx_hal_can.h"
#include "can.h"
#include "usart.h"
void canRx(void const *argument)
{
/* USER CODE BEGIN canRx */
/* Infinite loop */
uint8_t receivedMessage[8];
CAN_RxHeaderTypeDef RxHeader;
HAL_CAN_Start(&hcan);
for (;;)
{
if(HAL_CAN_GetRxFifoFillLevel(&hcan, CAN_RX_FIFO0) != 0)
{
HAL_CAN_GetRxMessage(&hcan, CAN_RX_FIFO0, &RxHeader, receivedMessage);
}
HAL_UART_Transmit(&huart2, receivedMessage, 8, portMAX_DELAY);
osDelay(200);
}
/* USER CODE END canRx */
}
Я просто хочу прочитать данные Rx, отправленные с Arduino, который работает как другой узел CAN.Цикл arduino имеет счетчик, который увеличивается на 1 каждые 200 мс и отправляется в STM через CAN.
Я хочу получить в UART2 идентификатор и сообщение от приемника CAN (STM32).Я сравниваю эти данные с данными отправителя, получаю эти данные из серийного Arduino и проверяю частоту обращений (надеюсь, 100%).
Как сделать так, чтобы она работала хорошо?