打印
[STM32F4]

STM32CubeMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之线程(thread)创建

[复制链接]
1466|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一.CMISIS-RTOS中thread相关API概览



使用特权

评论回复
评论
自动化陈稳 2023-4-18 23:47 回复TA
———————————————— 版权声明:本文为CSDN博主「qq_33974167」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_33974167/article/details/102774186 
沙发
自动化陈稳|  楼主 | 2023-4-18 23:39 | 只看该作者
优先级(priority)相关枚举:
typedef enum  {
  osPriorityIdle          = -3,          ///< priority: idle (lowest)
  osPriorityLow           = -2,          ///< priority: low
  osPriorityBelowNormal   = -1,          ///< priority: below normal
  osPriorityNormal        =  0,          ///< priority: normal (default)
  osPriorityAboveNormal   = +1,          ///< priority: above normal
  osPriorityHigh          = +2,          ///< priority: high
  osPriorityRealtime      = +3,          ///< priority: realtime (highest)
  osPriorityError         =  0x84        ///< system cannot determine priority or thread has illegal priority
} osPriority;

使用特权

评论回复
板凳
自动化陈稳|  楼主 | 2023-4-18 23:39 | 只看该作者
二.线程创建并执行

在STM32CubMx下,已经自动生成了一个线程,可以看看其定义

MX_FREERTOS_Init()在freertos.c的文件中,

使用特权

评论回复
地板
自动化陈稳|  楼主 | 2023-4-18 23:46 | 只看该作者
osThreadDef参数含义:

//#define osThreadDef        (名字(该线程的名字),线程函数名,优先级,该线程可以实例化的个数,线程的栈大小 )

使用特权

评论回复
5
自动化陈稳|  楼主 | 2023-4-18 23:46 | 只看该作者
 

void MX_FREERTOS_Init(void) {

  /* Create the thread(s) */
  /* definition and creation of deviceTask*/
  osThreadDef(deviceTask, StartDefaultTask, osPriorityNormal, 0, STACKSIZE);
  defaultTaskHandle = osThreadCreate(osThread(deviceTask), NULL);


}
//线程函数
void StartDefaultTask(void const * argument)
{

  /* USER CODE BEGIN StartDeviceTask */
   /* Infinite loop */
  for(;;)
{

}
  /* USER CODE END StartDeviceTask */
}

使用特权

评论回复
6
自动化陈稳|  楼主 | 2023-4-18 23:47 | 只看该作者
现在就可以在无限循环中,添加自己的应用了         

使用特权

评论回复
7
自动化陈稳|  楼主 | 2023-4-18 23:47 | 只看该作者
三.LED闪烁

创建一个LED线程(修改默认的线程)

      osThreadDef(ledThreadHandler, ledThread, osPriorityNormal, 0, STACKSIZE);
      this->led_thread = osThreadCreate(osThread(ledThreadHandler), NULL);

使用特权

评论回复
8
自动化陈稳|  楼主 | 2023-4-18 23:47 | 只看该作者
在LED线程中
void startLedTask(void const * argument)
{
    led_t led0 , led1;
    led0 = led_get_instance(LED_ID0);
    led1 = led_get_instance(LED_ID1);
   for(;;)
   {
        led_on(led0);
        led_off(led1);
        osDelay(1000);
        led_off(led0);
        led_on(led1);
        osDelay(1000);      
   }
}

使用特权

评论回复
9
自动化陈稳|  楼主 | 2023-4-18 23:48 | 只看该作者
这样LED闪烁应用就完成了(代码已上传)

ref:

file:///D:/Keil_v5/ARM/PACK/ARM/CMSIS/4.2.0/CMSIS/Documentation/RTOS/html/group___c_m_s_i_s___r_t_o_s___thread_mgmt.html#ga7f2b42f1983b9107775ec2a1c69a849a

使用特权

评论回复
10
elsaflower| | 2023-5-10 20:08 | 只看该作者
freertos任务切换需要多少个时钟周期

使用特权

评论回复
11
yorkbarney| | 2023-5-10 20:51 | 只看该作者
freertos时实系统的栈最大是多少

使用特权

评论回复
12
lihuami| | 2023-5-11 16:40 | 只看该作者
使用freertos的时候能不能使用定时器

使用特权

评论回复
13
kmzuaz| | 2023-5-11 17:49 | 只看该作者
ucos、freertos、RTOS等等都可以

使用特权

评论回复
14
biechedan| | 2023-5-11 19:10 | 只看该作者
怎么设置freertos的最大任务数

使用特权

评论回复
15
usysm| | 2023-5-11 21:31 | 只看该作者
freertos如何在一个任务中删除另一个任务

使用特权

评论回复
16
wengh2016| | 2023-5-13 10:55 | 只看该作者
FreeRTOS堆分配大小对任务数的影响

使用特权

评论回复
17
sesefadou| | 2023-5-13 11:36 | 只看该作者
用STM32CubeMx创建的FreeRTOS可以运行多少个实例

使用特权

评论回复
18
mikewalpole| | 2023-5-13 11:55 | 只看该作者
对于stm32嵌入式系统软件,如何选择操作系统

使用特权

评论回复
19
jimmhu| | 2023-5-13 12:40 | 只看该作者
跑FreeRTOS总是进入HardFault,不知是什么原因

使用特权

评论回复
20
uptown| | 2023-5-13 12:49 | 只看该作者
为什么要用freertos               

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

1200

帖子

1

粉丝