打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
RL-ARM User's Guide
http://www.keil.com/support/man/docs/rlarm/rlarm_ar_overview.htm

【原创】Keil RTX最小系统在STM32F10x上的实现

修改历史:
2012.01.31 11:09 创建。

MDK版本:MDK-ARM Professional Version: 4.23
处理器:STM32F10x
目标:最小系统

配置Keil项目

在Targer Option的Operating system里面选上RTX Kernel:

复制配置文件RTX_Conf_CM.c

从Keil的安装目录中的\Keil\ARM\Startup\里面找到RTX_Conf_CM.c,将其复制出来并添加到项目里。对于STM32F10x最小系统,可以不改这个文件。也可以修改#define OS_CLOCK这句,以获得正确的系统时钟。

复制启动文件STM32F10x.s

裸奔的时候我使用的是文件版本号为V2.0.3的stm32f10x_vector.s,跑不起来。采用Keil安装目录自带的STM32F10x.s文件,位置在\Keil\ARM\Startup\ST\,将其复制出来添加到项目,并去掉stm32f10x_vector.s。

修改stm32f10x_it.c文件

RTX内核重新实现了SVC调用,如果编译时出现SVC_Handler重复定义的错误,要将stm32f10x_it.c中的SVC_Handler注掉:

#if 0void SVC_Handler(void){}#endif

复制并修改retarget.c文件

位置在\Keil\ARM\Startup\。将所有外部调用去掉,修改后的3个函数变为:

int fputc(int ch, FILE *f) {  //return (sendchar(ch));  return 0;} int fgetc(FILE *f) {  //return (sendchar(getkey()));  return 0;} void _ttywrch(int ch) {  //sendchar (ch);}

如果不作这些修改的话,系统可能会挂掉。

编写main.c文件

以下是简单的示例:

#include <rtl.h> __task void task1 (void)  {  while (1) {    // LED闪灯/灭灯等操作     os_dly_wait(50);  }} int main(void) {  // 基本的初始化  // ...   os_sys_init (task1);   while (1)  {  }}

参考资料

Getting Started: Building Applications with RL-ARM
ARM Real-Time Library Training(中文)
RL-ARM User's Guide
RL-RTX_ARM,RTX操作系统
关于STM32的systick定时器的详细说明
STM32 Systick 编程及应用
STM32中文参考手册
Cortex-M3技术参考手册

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
STM32中printf与scanf的重定向问题
stm32 printf函数调用
晒设计方案 RTX点灯
CMSIS-RTOS相关的一些内容
STM3210x库文件在Keil MDK环境下的使用
用stm32f10x.h文件时的问题error: #35: #error directive: “Please select first the target STM32F10x
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服