6354|1

1万

帖子

16

TA的资源

版主

楼主
 

晒设计方案+RTX点灯 [复制链接]

各位看官有的看到这个标题会不屑一顾。其实这个费我一天功夫才搞出来。又有坛友会问:ST的库例程里不是有这个例程么?不错,有是有,不过那个是基于,不带屏的那个开发板的,且不是用库。下进这款带屏地会不显示,改完代码也不显示。因为芯片还得选择,.S文件得变。。。。。
我这个是自己摸出来地,其实是个RXT的移植方案。费了一天时间主要是MDK5.。0没整明白。行了费话少说啦。。。。。


Keil RTX 是免版税的确定性实时操作系统,适用于 ARM 和 Cortex-M 设备。使用该系统可以创建同时执行多个功能的程序,并有助于创建结构更好且维护更加轻松的应用程序。
产品的几大亮点
  • 带有源代码的免版税、确定性的 RTOS
  • 灵活的调度:循环、抢先和协作
  • 以低的中断延迟执行高速实时操作
  • 小的空间占用适用于资源受限的系统
  • 不限数量的任务,每个任务都具有 254 个优先级
  • 不限数量的邮箱、信号、互斥函数和计时器
  • 支持多线程和线程安全运算
  • MDK-ARM 中的内核识别调试支持
  • 使用 μVision 配置向导的基于对话框的设置
虽然不使用 RTOS 也能创建实时程序(通过在超级循环中执行一个或多个函数),但 Keil RTX 这样的 RTOS 可为您解决许多调度、维护和计时问题。有关 RTOS 和超级循环之间的更详细比较,请查看使用 RTOS 的优势。



优点Keil RTX 实时操作系统提供许多高级功能,其他供应商的 RTOS 产品中并不总是提供这些功能。在选择 RTOS 时,应考虑以下几点:
  • RTX 包含在 MDK-ARM 中 - 全功能、商业级 RTX(包括源代码)作为 Keil MDK-ARM 开发工具的一部分提供。这不是评估版。它可完全配置,没有任何限制。因此,如果您计划使用 MDK 进行开发,RTX 是免费的。
  • RTX 免版税 - RTX 是免版税提供的。获得了使用许可后,您可以装备使用 RTX 创建的产品,而无需支付其他费用或产生后续成本。
  • 市场领先的 RTOS - RTX 一直是嵌入式应用程序中使用的领先 RTOS 之一(2010 年 TechInsights 嵌入式市场调查报告)。您可以信心十足地在应用程序中使用 RTX。
  • 灵活的调度 - RTX 提供三种不同的内核调度选项,您可以使用最适合您的应用程序的选项:
    • 抢先 - 每个任务都具有不同的优先级,只有在更高优先级的任务准备好运行后才会运行。此选项常用于交互式系统,在用户输入某些内容之前,设备可能处于待机或后台模式。
    • 循环 - 每个任务都将运行固定的 CPU 运行时时段(时间段)。数据记录器/系统显示器通常使用循环调度,所有传感器或数据源都会依次进行采样,不分优先级。
    • 协作 - 每个任务将一直运行,直到指示其将控制权传递给另一个任务或达到阻止性 OS 调用。可以在要求固定执行顺序的应用程序中查看协作多任务。
  • 确定性的行为 - 并非每个 RTOS 都具有确定性。RTX 提供完全确定性的行为,这意味着在预定义时间内(期限)处理事件和中断。您的应用程序可以依赖于一致且已知的进程计时。
  • 专为嵌入式系统而设计 - RTX 是专门为基于 ARM 和 Cortex-M MCU 的嵌入式系统而编写的。它并不是根据较大的操作系统或其他架构改写的。它运行速度快,占用的 MCU 资源极少,内存占用量仅为 5KB (ROM)。
  • 易于使用 - 学习周期短,产品开发速度快。μVision IDE/调试器完全支持 RTX,其中采用 RTX 任务识别工具以便于在您的应用程序中快速方便地配置和调试 RTX。
  • 源代码 - 在所有 MDK-ARM 版本中都包含 RTX 源代码。这对于需要源代码进行产品认证的情况会很有用。
  • 支持 - 提供了广泛的资源,包括示例、用户指南以及打印的快速入门指南。Keil 完全支持 RTX。








下面我就说下我的移植步骤哈:

我因为省时间用了,Systick那个例程。有人会问楼主怎么老用例程。我想是简单例程起到模板作用。何乐也不为。

第一步,打Systic_example全目录复制一下。并起名my Systick_example 并保存。

然后用MDK5.0 打开,去掉同Systick相关的所有东东。然后编译下。提示不出错进入下一步骤。

第二步:在MDK快捷方式,



中选中RTX

  

这时再编译下会有三个错误:
这些都跟中断有关,到stm32f4xx_it.c那个文件中把冲突的文件都注册掉。

然后再编译一下。没有提示为止。

第三步:

在主文件头加入#include "cmsis_os.h"

把以下文件加到定义后的前面。


  1. osThreadId tid_ledOn;                       /* Thread id of thread: ledOn    */
  2. osThreadId tid_ledOff;                      /* Thread id of thread: ledOff   */


  3. /*----------------------------------------------------------------------------
  4.   Thread 1 'ledOn': switches the LED on
  5. *---------------------------------------------------------------------------*/
  6. void ledOn (void const *argument) {
  7.   for (;;) {
  8.     //LED_On(0);                              /* Turn LED On                   */
  9.     STM_EVAL_LEDOn(LED3);
  10.                 osSignalSet(tid_ledOff, 0x0001);        /* set signal to ledoff thread   */
  11.     osDelay(2000);                          /* delay 2s                      */
  12.   }
  13. }

  14. /*----------------------------------------------------------------------------
  15.   Thread 2 'ledOff': switches the LED off
  16. *---------------------------------------------------------------------------*/
  17. void ledOff (void const *argument) {
  18.   for (;;) {
  19.     osSignalWait(0x0001, osWaitForever);    /* wait for an event flag 0x0001 */
  20.     osDelay(500);                           /* wait for 500ms                */
  21.     //LED_Off(0);                             /* Turn LED Off                  */
  22.     STM_EVAL_LEDOff(LED3);
  23.         }
  24. }


  25. osThreadDef(ledOn,  osPriorityNormal, 1, 0);
  26. osThreadDef(ledOff, osPriorityNormal, 1, 0);
复制代码

把以下加到主函数里

  1. /* Initialize LEDs available on STM32F429I-DISCO */
  2.   STM_EVAL_LEDInit(LED3);
  3.   STM_EVAL_LEDInit(LED4);

  4.   /* Turn on LED3 */
  5.   STM_EVAL_LEDOn(LED3);

  6.         tid_ledOn  = osThreadCreate(osThread(ledOn) , NULL);
  7.   tid_ledOff = osThreadCreate(osThread(ledOff), NULL);

  8.   osSignalSet(tid_ledOn, 0x0001);          /* set signal to ledOn thread     */

  9.   osDelay(osWaitForever);
  10.   while(1);
  11.   
复制代码

以上是一个灯亮,但定义是两个灯。坛友可以自己修改第二个灯。

效果是的PG13再闪,一会占位传一下图片。奥啦!!!!



此帖出自stm32/stm8论坛
点赞 关注
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 
本帖最后由 ddllxxrr 于 2014-2-24 09:16 编辑

占位准备发个图

此帖出自stm32/stm8论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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