找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4513|回复: 0
打印 上一主题 下一主题
收起左侧

STM32下使用Keil自带的RTL

[复制链接]
跳转到指定楼层
楼主
ID:65608 发表于 2014-9-4 22:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


初次使用RTL不是很懂,这是从别的论坛复制回来的感觉不错能对初学者提供一些感觉。

Keil ARTX(Advanced Real-Time eXecutive)是Keil为ARM 系列所提供的一个小型实时操作系统,整合于其UV3开发环境之中.在下载并安装了RealView MDK个人学习版后,ARTX同时安装到了C:\Keil\ARM\RL\RTX目录下,在C:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB_RTX_Blinky目录下有STM32的例子程序。经过简单修改,运行在万利开发板上。
#include
#include
OS_TID t_phaseA; //分配任务ID号
OS_TID t_phaseB;
OS_TID t_phaseC;
OS_TID t_phaseD;

#define LED_A GPIO_Pin_4
#define LED_B GPIO_Pin_5
#define LED_C GPIO_Pin_6
#define LED_D GPIO_Pin_7
#define LED_On(led) GPIO_SetBits(GPIOC, led)
#define LED_Off(led) GPIO_ResetBits(GPIOC, led)

extern void SetupClock (void);
extern void SetupLED (void);


void phaseA (void) __task {
for (;;) {
LED_On (LED_A);
os_dly_wait (100);
LED_Off(LED_A);
os_dly_wait (100);
}
}

void phaseB (void) __task {
for (;;) {
LED_On (LED_B);
os_dly_wait (100);
LED_Off(LED_B);
os_dly_wait (100);
}
}

void phaseC (void) __task {
for (;;) {
LED_On (LED_C);
os_dly_wait (100);
LED_Off(LED_C);
os_dly_wait (100);
}
}

void phaseD (void) __task {
for (;;) {
LED_On (LED_D);
os_dly_wait (100);
LED_Off(LED_D);
os_dly_wait (100);
}
}

void init (void) __task {
t_phaseA = os_tsk_create (phaseA, 0);
os_dly_wait (50);
t_phaseB = os_tsk_create (phaseB, 0);
os_dly_wait (50);
t_phaseC = os_tsk_create (phaseC, 0);
os_dly_wait (50);
t_phaseD = os_tsk_create (phaseD, 0);
os_tsk_delete_self ();
}

int main (void) {
SetupClock();
SetupLED ();
os_sys_init (init);
}


经过初试化后,os_sys_init (init)启动了初试化任务。在初试化任务中,又先后启动了4个任务,启动后,

删除初试化任务。这4个任务各自控制一个LED的开关。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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