Keil RTX最小系统在STM32F10x上的实现
来源:互联网 发布:mpp文件用什么打开mac 编辑:程序博客网 时间:2024/06/03 20:23
MDK版本:MDK-ARM Professional Version: 4.23
处理器:STM32F10x
目标:最小系统
首先,在Targer Option的Operating system里面选上RTX Kernel。
1. 复制配置文件RTX_Conf_CM.c
从Keil的安装目录中的\Keil\ARM\Startup\里面找到RTX_Conf_CM.c,将其复制出来并添加到项目里。对于STM32F10x最小系统,可以不改这个文件。当然,可修改#define OS_CLOCK这句,以获得正确的系统时钟。
2. 复制启动文件STM32F10x.s
裸奔的时候我使用的是文件版本号为V2.0.3的stm32f10x_vector.s,跑不起来。采用Keil安装目录自带的STM32F10x.s文件,位置在\Keil\ARM\Startup\ST\,将其复制出来添加到项目,并去掉stm32f10x_vector.s。
3. 修改stm32f10x_it.c文件
RTX内核重新实现了SVC调用,如果编译时出现SVC_Handler重复定义的错误,要将stm32f10x_it.c中的SVC_Handler注掉:
#if 0void SVC_Handler(void){}#endif
4. 复制并修改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);}
如果不作这些修改的话,系统可能会挂掉。
5. 编写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) { }}
6. 参考资料
http://download.csdn.net/detail/zoogar/3983085 -- Building Applications with RL-ARM - Getting Started
http://download.csdn.net/detail/zoogar/3983081 -- ARM Real-Time Library Training(中文)
http://download.csdn.net/detail/zoogar/3983092 -- RL-ARM User's Guide
http://download.csdn.net/detail/zoogar/3983072 -- 中文入门文档
http://home.eeworld.com.cn/my/space.php?uid=116357&do=blog&id=31714 -- 416561760 (姓名:迷失)写的关于STM32的systick定时器的帖子
http://apps.hi.baidu.com/share/detail/51652848 -- come_on_crysta的STM32 Systick编程及应用
STM32手册
Cortex-M3技术参考手册
- Keil RTX最小系统在STM32F10x上的实现
- 结束裸奔时代:Keil RTX最小系统在STR912x上的实现
- stm32f10x在keil环境下的配置
- 基于固件库的STM32F10x程序在Keil v5 MDK 下的RAM调试方法
- 如何解决KEIL 5 编译KEIL4的带有RTX系统的工程解决方法
- keil MDK之RTX的调试方法
- RT Thread 在STM32f10x 平台上的移植
- RTX在Window Base 控制器上的应用
- STM32F10x在应用中编程的实现方法
- Keil MDK之RTX系统时钟节拍和时间管理
- Keil MDK RTE 兼容 keil4 的STM32F10x标准库
- Keil RTX systick 初始化
- keil MDK之RTX的消息邮箱的API函数
- 基于FPGA和Keil RTX的μC/GUI移植
- Keil自带的操作系统RTX内核---内存管理分析
- KEIL MDK之RTX的库方式移植
- keil MDK之RTX配置文件 RTX_Conf_CM.c 的向导解析
- keil MDK之RTX事件标志组的API函数
- Easymock的andAnswer和andDelegate方法详解
- 嵌入式开发blog url
- main cannot be resolved or is not a field
- 使用mahout实现内容分类(转)
- oralce 中 blob类型的存储
- Keil RTX最小系统在STM32F10x上的实现
- 将oracle10g 升级至10.2.0.4
- 软件开发三重门
- magento获取指定目录分类的子分类
- GXT之旅:第五章:高级Components(1)——Trees和TreeGrid(1)
- js中onblur与onfocus函数中的几点区别与联系
- 特殊ASCII码含义
- socket关闭close和shutdown区别
- Android 上的 10 款 Web 开发应用工具