Implement task for sending CAN data via UART #21
@@ -24,8 +24,6 @@
|
||||
|
||||
extern osMessageQueueId_t xCAN1RxQueue;
|
||||
extern osMessageQueueId_t xCAN2RxQueue;
|
||||
extern osSemaphoreId_t xSemaphoreCAN1;
|
||||
extern osSemaphoreId_t xSemaphoreCAN2;
|
||||
|
||||
/* USER CODE BEGIN PTD */
|
||||
typedef struct {
|
||||
@@ -41,10 +39,6 @@ typedef struct {
|
||||
//uint32_t timestamp; //Enable TIM2: 42 MHz / (41+1) = 1 MHz → 1 µs tick; 32bit autoreload freerunning
|
||||
// this is for getting timestamps on can messages
|
||||
} CanMessage_t;
|
||||
|
||||
typedef struct {
|
||||
LED_Config *led;
|
||||
} LEDContext;
|
||||
/* USER CODE END PTD */
|
||||
|
||||
/**
|
||||
|
||||
+3
-3
@@ -130,14 +130,14 @@ void vCANLoggerListen(void *argument)
|
||||
void vLEDHeartbeat(void *argument)
|
||||
{
|
||||
/* CODE BEGIN */
|
||||
LEDContext *context = (LEDContext*)argument;
|
||||
LED_Config *led = (LED_Config*)argument;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
uint32_t ret = osThreadFlagsWait(0x01, osFlagsWaitAny, 25U);
|
||||
|
||||
if (ret & 0x01) HAL_GPIO_WritePin(context->led->port, context->led->pin, GPIO_PIN_SET);
|
||||
else HAL_GPIO_WritePin(context->led->port, context->led->pin, GPIO_PIN_RESET);
|
||||
if (ret & 0x01) HAL_GPIO_WritePin(led->port, led->pin, GPIO_PIN_SET);
|
||||
else HAL_GPIO_WritePin(led->port, led->pin, GPIO_PIN_RESET);
|
||||
}
|
||||
/* CODE END */
|
||||
}
|
||||
|
||||
+4
-10
@@ -51,9 +51,6 @@ LED_Config led_can1 = {GPIOB, GPIO_PIN_2};
|
||||
LED_Config led_can2 = {GPIOB, GPIO_PIN_5};
|
||||
LED_Config led_error = {GPIOB, GPIO_PIN_3};
|
||||
|
||||
LEDContext ledContextCAN1;
|
||||
LEDContext ledContextCAN2;
|
||||
|
||||
osMessageQueueId_t xCAN1RxQueue;
|
||||
osMessageQueueId_t xCAN2RxQueue;
|
||||
/* USER CODE END PV */
|
||||
@@ -167,11 +164,8 @@ int main(void)
|
||||
/* USER CODE BEGIN RTOS_THREADS */
|
||||
xCAN1rx = osThreadNew(vCANLoggerListen, &hcan1, &CAN1rxAttributes);
|
||||
xCAN2rx = osThreadNew(vCANLoggerListen, &hcan2, &CAN2rxAttributes);
|
||||
xLedTaskCAN1 = osThreadNew(vLEDHeartbeat, &ledContextCAN1, &LEDHeartbeatCAN1Attributes);
|
||||
xLedTaskCAN2 = osThreadNew(vLEDHeartbeat, &ledContextCAN2, &LEDHeartbeatCAN2Attributes);
|
||||
|
||||
ledContextCAN1.led = &led_can1;
|
||||
ledContextCAN2.led = &led_can2;
|
||||
xLedTaskCAN1 = osThreadNew(vLEDHeartbeat, &led_can1, &LEDHeartbeatCAN1Attributes);
|
||||
xLedTaskCAN2 = osThreadNew(vLEDHeartbeat, &led_can2, &LEDHeartbeatCAN2Attributes);
|
||||
/* USER CODE END RTOS_THREADS */
|
||||
|
||||
/* USER CODE BEGIN RTOS_EVENTS */
|
||||
@@ -190,7 +184,8 @@ int main(void)
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
/* USER CODE END 3 */
|
||||
/* USER CODE END 3 */
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -476,7 +471,6 @@ static void MX_GPIO_Init(void)
|
||||
/* USER CODE BEGIN 4 */
|
||||
/* USER CODE END 4 */
|
||||
|
||||
|
||||
/**
|
||||
* @brief Period elapsed callback in non blocking mode
|
||||
* @note This function is called when TIM6 interrupt took place, inside
|
||||
|
||||
Reference in New Issue
Block a user