10874|11

5979

帖子

8

TA的资源

版主

楼主
 

一个LED的N种玩法(七)----Freertos (有文档,有代码,有视频) [复制链接]

一个LEDN种玩法()—FreeRtos

Author: chenzhufly

Email: chenzhufly@126.com

2010-05-08

 

从前面看大家的讨论,貌似对操作系统都情有独钟。那么这篇就来在操作系统上完成LED程序吧,呵呵!

嵌入式操作系统那么多选哪个呢?当我迷茫,彷徨的时候,我在一篇介绍LPCXpresso的文章中看到这样一段话:Code Red公司功能全面的Red Suite工具包支持运行时执行跟踪和操作系统向导,能够快速实现FreeRTOS配置

哇,原来LPCXpresso直接就支持FreeRTOS了,真棒~~~~~~~~~先看看再说。

 

1. 点击File -> New -> Project,选择 C Project

 

2. 看见没,有个基于LPC1700FreeRtos模板,可以我们现在的主芯片是LPC1343啊,不匹配!先不管这些,生成个工程再说。填写Project name,以及Project所在位置Location,我这里工程名就叫freertos_testJ

 

3. 接下来直接点Next,我也没有深入的做研究,有兴趣的话,大家一起多讨论讨论吧

 

Freertos配置选项

设置FreertosAPI

这里选择LPC1343

 

配置好以后,代码结构如下图所示:

 

编译,很顺利没有错,J

但是还没有改好,居然还用的是LPC17XX的初始化文件,郁闷!

 

4. 接着就是按照LPC1343来修改这个工程了,主要有以下几个步骤

1)  首先把cr_startup_lpc17.c 替换成 cr_startup_lpc13.c,这样工程就可以在LPC1343平台上跑起来了。

2)  增加LED测试代码,把include文件放在FreeRTOS_include文件夹,把底层驱动放在FreeRTOS_src文件夹,修改后的代码结构如图所示:

3)   到这里准备工作已经完全就绪,开始搞测试代码。

 

 

5. 代码示例

6.  直接修改自动生成的main.c函数,本身已经是两个任务直接的切换,哈哈

7.  #include "FreeRTOS.h"

8.  #include "Task.h"

9.  #include "queue.h"

10.#include "semphr.h"

11.#include "LPC13xx.h"                        /* LPC13xx definitions */

12.#include "timer16.h"

13.#include "clkconfig.h"

14.#include "gpio.h"

15. 

16.#define LED_PORT 0   

17.#define LED_BIT 7    

18.#define LED_ON 1     

19.#define LED_OFF 0    

20. 

21.int iState = 0;

22. 

23. 

24.#define USERTASK_STACK_SIZE configMINIMAL_STACK_SIZE

25. 

26.void __error__(char *pcFilename, unsigned long ulLine) {

27.}

28. 

29.static void setupHardware(void) { //设置clkled

30.       CLKOUT_Setup( CLKOUTCLK_SRC_MAIN_CLK );

31.   LPC_IOCON->PIO0_1 &= ~0x07;

32.   LPC_IOCON->PIO0_1 |= 0x01;    /* CLK OUT */

33. 

34.   LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);

35. 

36.   GPIOSetDir( LED_PORT, LED_BIT, 1 );

37.}

38.void vUserTask1(void *pvParameters) { //任务1 ,闪灯任务

39. 

40. 

41. while (1) {

42.    if (iState == 0) {

43.        GPIOSetValue( LED_PORT, LED_BIT, LED_OFF );

44.    } else {

45.        GPIOSetValue( LED_PORT, LED_BIT, LED_ON );

46.    }

47.    //vTaskDelay(100);

48. }

49.}

50. 

51.void vUserTask2(void *pvParameters) { //任务2 ,延时任务

52. while (1) {

53.    if (iState == 0) {

54.        iState = 1;

55.    }

56.    else {

57.        iState = 0;

58.    }

59.    vTaskDelay(20) ;

60. }

61.}

62.int main(void) {

63. setupHardware();//初始化硬件系统

64.   

65.    //建立两个任务

66. xTaskCreate( vUserTask1, ( signed portCHAR * ) "Task1", USERTASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );

67. xTaskCreate( vUserTask2, ( signed portCHAR * ) "Task2", USERTASK_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );

68. 

69. //任务调度

70. vTaskStartScheduler();

71. return 1;

72.}

 

到此基于Freertosled例程建立,演示完毕,有感兴趣的,欢迎参与讨论Freertos相关   J

 

PDF文档: 一个LED的N种玩法_七_----FreeRtos.pdf (1006.26 KB, 下载次数: 276)

源代码: freertos-test.rar (367.86 KB, 下载次数: 213)

视频短片: led.rar (181.99 KB, 下载次数: 208)

 

 

 

更多精彩 稍后继续

[ 本帖最后由 chenzhufly 于 2010-5-8 15:23 编辑 ]
此帖出自NXP MCU论坛

最新回复

  详情 回复 发表于 2015-7-26 18:31
点赞 关注(1)
 

回复
举报

4997

帖子

19

TA的资源

裸片初长成(初级)

沙发
 
支持,学习了!!!!!!!!!!!!!!
此帖出自NXP MCU论坛
 
 
 

回复

2955

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
这个很不错 ............
此帖出自NXP MCU论坛
 
个人签名不断地学习,才会有创新!
淘宝小店:手机、qq点卡、游戏点卡自动充值 http://shop63727265.taobao.com/
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 

啥子帖子捏,就没看出来好!

此帖出自NXP MCU论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 

顶,顶,顶,顶,顶,顶,顶,狂顶。

此帖出自NXP MCU论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 

不看不知道,看了吓一跳,Lz牛人啊~

此帖出自NXP MCU论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

7
 

强人啊 !!真的是开眼界了!!!

此帖出自NXP MCU论坛
 
 
 

回复

272

帖子

0

TA的资源

一粒金砂(初级)

8
 
学习学习学习顶一顶
此帖出自NXP MCU论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

9
 
good idea!
此帖出自NXP MCU论坛
 
 
 

回复

268

帖子

0

TA的资源

一粒金砂(初级)

10
 
新手,路过看看
此帖出自NXP MCU论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
我尝试过你的方法,但是灯还是没有闪烁,求大神指导!!!!!
此帖出自NXP MCU论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

12
 
此帖出自NXP MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表