查看: 6355|回复: 16

[原创] 【FRDM-K64F使用笔记】+keil自带RTX系统学习开发

[复制链接]

该用户从未签到

9

主题

642

帖子

0

高级会员

Rank: 4

积分
748
最后登录
1970-1-1
发表于 2015-11-5 15:16:50 | 显示全部楼层 |阅读模式
本帖最后由 安臣 于 2015-11-5 17:07 编辑

    看官方例程的时候接触到rtx 。 有例程可以参考,所以自己也试着做一个自己的程序。

    一, 搜资料了解了一下trx系统
    关于 rtx 的官网 介绍连接。http://www.keil.com/rl-arm/kernel.asp

    二、建立自己的工程文件。

       QQ图片20151105151217.png
    三、我自己的代码


  1. #include "MK64F12.h"
  2. #include "cmsis_os.h"


  3. osThreadId tid_phaseA;                  /* Thread id of thread: phase_a      */
  4. osThreadId tid_phaseB;                  /* Thread id of thread: phase_b      */
  5. osThreadId tid_clock;                   /* Thread id of thread: clock        */

  6. uint32_t LEDOn, LEDOff;

  7. void led_init(void)
  8. {
  9.         SIM->SCGC5     |= ((1UL <<  13) | (1UL <<  10));   /* Enable Port B,E Clock */
  10.   PORTB->PCR[22]  = (1UL <<  8);                     /* PTB22 is GPIO pin     */
  11.         
  12.         PTB->PDOR = (1UL << 22);
  13.   PTB->PDDR = (1UL << 22);
  14. }

  15. /*----------------------------------------------------------------------------
  16.   Function that turns on Red LED
  17. *----------------------------------------------------------------------------*/
  18. void LEDRed_On (void) {
  19.         PTB->PCOR = 1UL << 22;
  20. }
  21. /*----------------------------------------------------------------------------
  22.   Function that turns off Red LED
  23. *----------------------------------------------------------------------------*/
  24. void LEDRed_Off (void) {
  25.         PTB->PSOR = 1UL << 22;
  26. }

  27. /*----------------------------------------------------------------------------
  28. *      Function 'signal_func' called from multiple threads
  29. *---------------------------------------------------------------------------*/
  30. void signal_func (osThreadId tid)  {
  31.   osSignalSet(tid_clock, 0x0100);           /* set signal to clock thread    */
  32.   osDelay(500);                             /* delay 500ms                   */
  33.   osSignalSet(tid_clock, 0x0100);           /* set signal to clock thread    */
  34.   osDelay(500);                             /* delay 500ms                   */
  35.   osSignalSet(tid, 0x0001);                 /* set signal to thread 'thread' */
  36.   osDelay(500);                             /* delay 500ms                   */
  37. }

  38. /*----------------------------------------------------------------------------
  39. *      Thread 1 'phaseA': Phase A output
  40. *---------------------------------------------------------------------------*/
  41. void phaseA (void const *argument) {
  42.   for (;;) {
  43.     osSignalWait(0x0001, osWaitForever);    /* wait for an event flag 0x0001 */
  44.     LEDRed_On();
  45.     osDelay(500);                           /* delay 500ms                   */
  46.     signal_func(tid_phaseA);                /* call common signal function   */
  47.   }
  48. }

  49. /*----------------------------------------------------------------------------
  50. *      Thread 2 'phaseB': Phase B output
  51. *---------------------------------------------------------------------------*/
  52. void phaseB (void const *argument) {
  53.   for (;;) {
  54.     osSignalWait(0x0001, osWaitForever);    /* wait for an event flag 0x0001 */
  55.     LEDRed_Off();
  56.     osDelay(500);                           /* delay 500ms                   */
  57.     //signal_func(tid_phaseA);                /* call common signal function   */
  58.   }
  59. }

  60. /*----------------------------------------------------------------------------
  61. *      Thread 5 'clock': Signal Clock
  62. *---------------------------------------------------------------------------*/
  63. void clock (void  const *argument) {
  64.   for (;;) {
  65.     osSignalWait(0x0100, osWaitForever);    /* wait for an event flag 0x0100 */
  66.     LEDRed_Off();
  67.     osDelay(200);                           /* delay 200ms                   */
  68.   }
  69. }


  70. osThreadDef(phaseA, osPriorityNormal, 1, 0);
  71. //osThreadDef(phaseB, osPriorityNormal, 1, 0);
  72. osThreadDef(clock,  osPriorityNormal, 1, 0);


  73. int main()
  74. {
  75.         led_init();
  76.         tid_phaseA = osThreadCreate(osThread(phaseA), NULL);
  77.   //tid_phaseB = osThreadCreate(osThread(phaseB), NULL);
  78.   tid_clock  = osThreadCreate(osThread(clock),  NULL);

  79.   osSignalSet(tid_phaseA, 0x0001);          /* set signal to phaseA thread   */

  80.   osDelay(osWaitForever);
  81.         while(1)
  82.         {
  83.                 //
  84.         }
  85. }
复制代码


              四。代码打包分享
    rtos_led.zip (582.09 KB, 下载次数: 45)
回复

使用道具 举报

该用户从未签到

27

主题

320

帖子

0

中级会员

Rank: 3Rank: 3

积分
484
最后登录
2016-3-28
发表于 2015-11-5 17:25:01 | 显示全部楼层
不错,可以实验一下
回复 支持 反对

使用道具 举报

该用户从未签到

27

主题

320

帖子

0

中级会员

Rank: 3Rank: 3

积分
484
最后登录
2016-3-28
发表于 2015-11-5 17:31:43 | 显示全部楼层
file:///C:/Keil_v5/ARM/Pack/ARM/CMSIS/4.3.0/CMSIS/Documentation/General/html/index.html
回复 支持 反对

使用道具 举报

该用户从未签到

27

主题

320

帖子

0

中级会员

Rank: 3Rank: 3

积分
484
最后登录
2016-3-28
发表于 2015-11-5 17:32:34 | 显示全部楼层
上面的安装路径上有最新的Keil RTX RTOS的说明文档。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
    发表于 2015-11-5 23:14:46 | 显示全部楼层
    这个好玩,不知道楼主实现的是什么功能
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
    发表于 2015-11-5 23:18:22 | 显示全部楼层
    不知道楼主哪里下的chm文档?我打开只有目录。
    按照hisstone给的目录我找到了英文版的index.html,但是英文版的
    希望楼主分享网址
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-4-27 10:34
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    36

    主题

    507

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1450
    最后登录
    2020-8-3
    发表于 2015-11-5 23:42:30 | 显示全部楼层
    赞一个,很不错的分享!
    哎...今天够累的,签到来了1...
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
     楼主| 发表于 2015-11-6 09:04:27 | 显示全部楼层
    hisstone 发表于 2015-11-5 17:25
    不错,可以实验一下

    谢谢鼓励。 持续学习


    104930kli5jsmlssemljli.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
     楼主| 发表于 2015-11-6 09:05:35 | 显示全部楼层
    kingsings 发表于 2015-11-5 23:14
    这个好玩,不知道楼主实现的是什么功能

    目前只实现了led灯。

    后期准备转到ucos了  毕竟这个东西用的人比较少。


    104930kli5jsmlssemljli.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9

    主题

    642

    帖子

    0

    高级会员

    Rank: 4

    积分
    748
    最后登录
    1970-1-1
     楼主| 发表于 2015-11-6 09:07:46 | 显示全部楼层
    kingsings 发表于 2015-11-5 23:18
    不知道楼主哪里下的chm文档?我打开只有目录。
    按照hisstone给的目录我找到了英文版的index.html,但是英文 ...

    http://www.stmcu.org/module/foru ... 81095&highlight=rtx


    上面的文档连接。   在二楼 你自己下载一下看可以不可以。

    我建议你看看英文的。 以后不求人。虽然过程比较痛苦
    104930kli5jsmlssemljli.png
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 06:00 , Processed in 0.146655 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表