微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 搭建使用 RTX51-Tiny 的 C51 Keil 项目环境

搭建使用 RTX51-Tiny 的 C51 Keil 项目环境

时间:11-28 来源:互联网 点击:

里面,是没有 STC 的芯片的,可以按照下面的步骤将 STC 的芯片库加入到 keil 中:

  • 从宏晶官网下载 UV3.CDB
  • 将UV3.CDB改名为STC.CDB,拷贝到Keil安装目录的UV4子目录下
  • 修改Keil安装目录下的TOOLS.ini文件,在[C51]上方添加:CDB0=UV4STC.CDB("STC Chip")
  • 建立新项目,然后就可以选择对应的芯片数据库了

(个人笔记:这部分完全可以用最新版的STC-ISP,选项卡“keil仿真设置”,点“添加STC仿真驱动 到Keil中添加型号和头文件到keil中”,就行了,简单易行)

然后,选择芯片:

问你是否需要自动包含启动代码,选“否”(除非你要改程序起始地址什么的):

改改 Target 的名字,看上去好看些,然后设置项目属性:

写好晶振频率并选择“RTX-51 Tiny”作为操作系统,这样 Keil 会自动将 lib 文件编译到输出中(Memory Model 用 Small 比较好,免得每次声明变量都写 data 修饰):

然后选择 output、listing 目录到前面建立好的目录结构:

然后,忽略调用警告信息(这个警告会提醒你哪些函数定义了但是未被调用,很讨厌!):

设置好调试选项(STC12A5C60S2 支持 ISD-51 进行在线调试,不过,实际用下来用处不大,外围硬件模块根本不会跟着断点等你,还是先用软件模拟调试好了再说):

接下来,将常用的库文件拖到 lib 目录中:

  • ISD51.h,ISD51.A51 用于在线调试
    和串口 0 冲突,慎用
  • stc12c51a.h 单片机自带的头文件
  • Conf_tny.A51
    RTX-51 Tiny 的配置程序

Conf_tny.A51 还是需要做点儿修改的:

  • INT_CLOCK,定义每个计时中断对应的时钟周期数,默认 10000,我改成 1000 了 ;)
    这个值会影响 os_wait 第二个参数的长短。例如,ow_wait(K_TMO, 5, 0) 等待 5 个计时周期,也就是等待 5000 个时钟周期。
  • TIMESHARING,每个任务分到的时钟中断数量。默认是 5。
    这样,每个任务都会被分配 5000 个时钟周期的任务时间,到期以后,任务将被挂起,其它处于 READY 状态的任务会运行。
    如果这个值是 0,那么,Round Robin 的任务轮询算法会停止,必须你自己手动 os_send_signal 或者 os_switch_task 来切换任务。某些时候,这样会提高实时性。
  • RAMTOP。指定了可用 RAM 的顶部地址,默认是 0FFH,即 256 字节 RAM。
    就 STC 这块芯片来说,这样的默认设置在任务代码非常短小时没有问题,但是,如果任务代码较长,建议还是改小点儿,比如 0CFH。原因不明,但可能是因为高 128 字节 RAM 的直接存取方式是读写的特殊寄存器,我发现会和 RTX-51 Tiny 冲突,产生error 65 access violation at 0x3480之类的运行错误。

敲一段代码先跑跑(软件调试,Ctrl+F5):

可以看见监视窗口里面,c0, c1 乱跳:

再来一段代码,看看 Keil 的高级功能(逻辑分析):

现在可以看波形了:

环境搞定,记得提交到配置库。下面就可以开始移植代码到新的基于 RTX-51 Tiny 的项目中了。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top