查看: 1379|回复: 0

【怪兽F7】开始打怪——FreeRTOS

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-6 08:48
  • 签到天数: 169 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-6-30 10:27:45 | 显示全部楼层 |阅读模式
    分享到:
    FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
    相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行.
    官方地址:https://www.freertos.org/
    有了STM32CubeMX,FreeRTOS的工程是不用再自己移植的了,直接可以使用STM32CubeMX生成一个FreeRTOS的工程。
    如下是一个FreeRTOS工程中关于FreeRTOS的程序。

    与一般的裸机程序的开发类似的,开始也要对芯片进行相关的初始化。
    如下,是对CPU缓存、HAL库,时钟、外设进行初始化。
    CPU_CACHE_Enable();HAL_Init();  SystemClock_Config();BSP_LED_Init(LED1);这里只使用了一个GPIO 的外设,初始化程序如下:
    void BSP_LED_Init(Led_TypeDef Led){  GPIO_InitTypeDef  gpio_init_structure;  GPIO_TypeDef*     gpio_led;  if (Led == LED1)  {    gpio_led = LED1_GPIO_PORT;    /* Enable the GPIO_LED clock */    LED1_GPIO_CLK_ENABLE();    /* Configure the GPIO_LED pin */    gpio_init_structure.Pin = GPIO_PIN[Led];    gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;    gpio_init_structure.Pull = GPIO_PULLUP;    gpio_init_structure.Speed = GPIO_SPEED_HIGH;      HAL_GPIO_Init(gpio_led, &gpio_init_structure);        /* By default, turn off LED */    HAL_GPIO_WritePin(gpio_led, GPIO_PIN[Led], GPIO_PIN_RESET);  }}那么之后就是对FreeRTOS的使用了。
    使用osThreadDef宏新建一个线程。
    osThreadDef宏的定义如下,这里合作了“##”来产生线程的名字。
    #define osThreadDef(name, thread, priority, instances, stacksz)  \const osThreadDef_t os_thread_def_##name = \{ #name, (thread), (priority), (instances), (stacksz)  }线程建好后要使用osThreadCreate开始。
    LED1_ThreadId = osThreadCreate(osThread(LED1), NULL);这里的LED的线程只是一个GPIO的LED的闪烁,可以看到,在线程中有一个for(;;)的循环。这就是线程的主体了。
    static void LED_Thread1(void const *argument){  (void) argument;  uint32_t PreviousWakeTime = osKernelSysTick();    for(;;)  {    osDelayUntil (&ampreviousWakeTime, 200);BSP_LED_Toggle(LED1); }}最后,通过以下的函数,打开FreeRTOS,开始线程调度。
    osKernelStart();程序现象就是LED1闪烁。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 08:37 , Processed in 0.121624 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.