您的位置 首页 解答

STM32下运用Keil自带的RTL

初次使用RTL不是很懂,这是从别的论坛复制回来的感觉不错能对初学者提供一些感觉。KeilARTX(AdvancedReal-TimeeXecutive)是Keil为ARM

初度运用RTL不是很懂,这是从其他论坛仿制回来的感觉不错能对初学者供给一些感觉。

Keil ARTX(Advanced Real-Time eXecutive)是Keil为ARM 系列所供给的一个小型实时操作系统,整合于其UV3开发环境之中.在下载并装置了RealView MDK个人学习版后,ARTX一起装置到了C:KeilARMRLRTX目录下,在C:KeilARMBoardsKeilMCBSTM32STLIB_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的开关。

============================================

个人了解:

int main(void)

{

os_sys_init_user( TaskMain,

50,

TaskSysInitStack,

SysInitTaskStakSize );

while(1);

}

问1:为什么在TaskMain里边创立许多小使命不在下面持续调用os_sys_init_user( ); 这个API呢?原因是因为初始化TaskMain之后不再返回了,所以他也履行不到下面while 了。

问2:TaskMain 里边创立的小使命,而小使命里边也都是有while(1)死循环,这便是多线程的概念。除了while(1)其他也都是只履行一次,包含主函数和小使命里边的变量,只要while(1)是时刻片和优先级运转,完成多线程履行。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/260782.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部