[其他ST产品] STM32CUBEMX配置freertos发送结构体数据

[复制链接]
727|15
 楼主| 雨果喝水 发表于 2023-4-18 23:30 | 显示全部楼层 |阅读模式
STM32CUBEMX配置freertos发送结构体数据 1、环境 软件:STM32CUBEMX
硬件:STM32F103C8T6
2、基本配置 主要配置2个线程,一个发送结构体数据,一个解析:

36426643eb78443800.png

注意:itemsize要uint32_t。因为结构体传输实际传输的是他的指针。


 楼主| 雨果喝水 发表于 2023-4-18 23:30 | 显示全部楼层
3、配置代码

首先定义一个结构体数据类型

94792643eb79e57a9c.png

  1. /* Private typedef -----------------------------------------------------------*/
  2. /* USER CODE BEGIN PTD */
  3. typedef struct
  4. {
  5.         uint16_t cnt;
  6.         uint32_t time;
  7. }ledTypeDef;
  8. /* USER CODE END PTD */

  9. /* Private define ------------------------------------------------------------*/

 楼主| 雨果喝水 发表于 2023-4-18 23:31 | 显示全部楼层
再配置发送线程代码:
99560643eb7c198417.png
 楼主| 雨果喝水 发表于 2023-4-18 23:31 | 显示全部楼层
  1. /* USER CODE END Header_StartDefaultTask */
  2. void StartDefaultTask(void const * argument)
  3. {
  4.   /* USER CODE BEGIN StartDefaultTask */
  5.   /* Infinite loop */

  6.         ledTypeDef led_T;
  7.         led_T.cnt = 2;
  8.         led_T.time = 100;
  9.   for(;;)
  10.   {
  11.     osDelay(500);

  12.           osMessagePut(ledQueueHandle,(uint32_t)&led_T,10);
  13.           
  14.   }
  15.   /* USER CODE END StartDefaultTask */
  16. }

  17. /* USER CODE BEGIN Header_StartLedTask */
 楼主| 雨果喝水 发表于 2023-4-18 23:31 | 显示全部楼层
最后配置解析代码
91606643eb7da6bc2b.png
 楼主| 雨果喝水 发表于 2023-4-18 23:31 | 显示全部楼层
  1. void StartLedTask(void const * argument)
  2. {
  3.   /* USER CODE BEGIN StartLedTask */
  4.   /* Infinite loop */
  5.         uint16_t cnt;
  6.         osEvent evt;
  7.         ledTypeDef *pLed;
  8.   for(;;)
  9.   {
  10.     osDelay(1);
  11.           evt = osMessageGet(ledQueueHandle,osWaitForever);
  12.           if(evt.status == osEventMessage)
  13.           {
  14.                   pLed = (ledTypeDef *)(evt.value.p);/*将空指针转换为LED结构体指针*/
  15.                   for(cnt=0;cnt<pLed->cnt;cnt++)
  16.                   {
  17.                           HAL_GPIO_TogglePin(LED_SYS_GPIO_Port,LED_SYS_Pin);
  18.                           osDelay(pLed->time);
  19.                   }
  20.           }
  21.   }
  22.   /* USER CODE END StartLedTask */
  23. }
 楼主| 雨果喝水 发表于 2023-4-18 23:32 | 显示全部楼层
收工。
要点:

1、freertos的队列要选用uint32_t格式,因为实际传输的是结构体的指针。
2、解析时,将指针要转换为结构体格式。
Wordsworth 发表于 2024-6-21 07:29 | 显示全部楼层

电阻属于一个普通的元件
Clyde011 发表于 2024-6-21 08:32 | 显示全部楼层

并且考虑到TVS相同的尺寸
万图 发表于 2024-6-21 10:28 | 显示全部楼层

当异常过压消失,恢复至高阻态
Uriah 发表于 2024-6-21 11:31 | 显示全部楼层

微控制器、数字信号控制器和处理器都具有内部的ESD钳位二极管
帛灿灿 发表于 2024-6-21 13:27 | 显示全部楼层

ESD电压一般超过导通电压
Bblythe 发表于 2024-6-21 14:30 | 显示全部楼层

模块电源选购灌封材料的时候,需要注意导热系数要能达到电子部件散热的需求,不过粘接能力不太强
周半梅 发表于 2024-6-21 16:26 | 显示全部楼层

可能击穿开关器件,
Pulitzer 发表于 2024-6-21 17:29 | 显示全部楼层

如果想要让它正常工作且不会损坏
童雨竹 发表于 2024-6-21 19:25 | 显示全部楼层

变压器副边同时对负载供电。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

1213

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部