返回列表 发帖

[原创经验] 从0开始搭建FreeRTOS开发学习环境(Windows Demo Win32.sln)

[原创经验] 从0开始搭建FreeRTOS开发学习环境(Windows Demo Win32.sln)

从0开始搭建FreeRTOS开发学习环境


注:图片需要登陆网站才能观看


作者:osboy

微信:vincentwan003

嵌入式开发联盟 mcuos.com


1.下载FreeRTOS代码


官方下载链接:

https://sourceforge.net/projects/freertos/files/latest/download?source=files


真的是很慢,国内一直下载不成功。放弃!


Github链接:


https://github.com/FreeRTOS/FreeRTOS


真的也很慢,放弃!寻找更快速的方法,当然如果前两个链接如果您那边下载速度可以的话,那么最好是用以上方法,方便快速不纠结。


我的方法:


借助国内的https://gitee.com/码云转一下,在gitee的账号下选择“从github导入仓库”:

https://gitee.com/projects/import/github/status

意思就是从gitee到github的代码同步是高速的,而我们国内用户从gitee上下载代码也是快速的。所以就是要gitee帮我们同步一次代码,简单高效。


您可能还需要git clone的Linux环境,那么就引出了另外的问题,就是首先要使能Windows 10环境下的Linux bash哦,具体操作网上找找吧,很简单,成功了后,打开bash是这个画面哦:





2.下载 Visual Studio工具

https://visualstudio.microsoft.com/zh-hans/vs/community/


对于只想研究FreeRTOS代码或者机制的用户,建议直接使用官方提供的Windows环境的demo程序,这样不需要使用嵌入式开发板就可以直接在本机上运行FreeRTOS的demo,简单方便快捷。


所以请先下载这个工具哦!



3.测试第一个FreeRTOS demo


首先打开VS工具,然后打开新的project,FreeRTOS提供了demo的project文件路径见下面的红色框里面的路径。如图所示:




打开后的画面如下图所示:





下面我们看一下主程序代码:


  1. /*** SEE THE COMMENTS AT THE TOP OF THIS FILE ***/

  2. void main_blinky( void )

  3. {

  4. const TickType_t xTimerPeriod = mainTIMER_SEND_FREQUENCY_MS;



  5.     /* Create the queue. */

  6.     xQueue = xQueueCreate( mainQUEUE_LENGTH, sizeof( uint32_t ) );



  7.     if( xQueue != NULL )

  8.     {

  9.         /* Start the two tasks as described in the comments at the top of this

  10.         file. */

  11.         xTaskCreate( prvQueueReceiveTask,         /* The function that implements the task. */

  12.                     "Rx",                           /* The text name assigned to the task - for debug only as it is not used by the kernel. */

  13.                     configMINIMAL_STACK_SIZE,     /* The size of the stack to allocate to the task. */

  14.                     NULL,                           /* The parameter passed to the task - not used in this simple case. */

  15.                     mainQUEUE_RECEIVE_TASK_PRIORITY,/* The priority assigned to the task. */

  16.                     NULL );                         /* The task handle is not required, so NULL is passed. */



  17.         xTaskCreate( prvQueueSendTask, "TX", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL );



  18.         /* Create the software timer, but don't start it yet. */

  19.         xTimer = xTimerCreate( "Timer",                /* The text name assigned to the software timer - for debug only as it is not used by the kernel. */

  20.                                 xTimerPeriod,    /* The period of the software timer in ticks. */

  21.                                 pdFALSE,        /* xAutoReload is set to pdFALSE, so this is a one shot timer. */

  22.                                 NULL,               /* The timer's ID is not used. */

  23.                                 prvQueueSendTimerCallback );/* The function executed when the timer expires. */

  24.         xTaskCreate(prvTestMyselfTask, "MYTASK", configMINIMAL_STACK_SIZE, NULL, mainQUEUE_SEND_TASK_PRIORITY, NULL);

  25.         /* Start the tasks and timer running. */

  26.         vTaskStartScheduler();

  27.     }
复制代码

该程序创建了2个task,一个timer。一个接收消息的task主要执行的runnable为:prvQueueReceiveTask另一个发送消息的task的主要执行runnable为:prvQueueSendTask,timer的callback为:prvQueueSendTimerCallback,此外,task的runnable为:prvTestMyselfTask的是我自己创建的一个任务,就是定期print个信息而已。下面看看运行结果:



当您看到上面的结果的时候,表示您的环境搭建已经OK了,可以开始研究FreeRTOS的kernel代码啦。

附件: 您需要登录才可以下载或查看附件。没有帐号?注册(需要真实email认证,请填写有效邮箱地址)
讨厌没有结论的帖子, 讨厌不结贴的会员。
请不要在短消息里问技术性问题.
请不要把你的问题作为附件上传.
我的邮箱:shenghuo456@163.com
QQ:82475491(很少用了)
微信:vincentwan003(天天在)

不得不说,现在人们越来越追求简单高效了,以前靠工程师各种手工操作的时代过去了,同时大家的技能也在下降啊!
讨厌没有结论的帖子, 讨厌不结贴的会员。
请不要在短消息里问技术性问题.
请不要把你的问题作为附件上传.
我的邮箱:shenghuo456@163.com
QQ:82475491(很少用了)
微信:vincentwan003(天天在)

TOP

返回列表