keil MDK的信号函数
keil的信号函数用于模拟和测试串行IO,模拟IO,端口通讯等重复发生的外部事件。
信号函数以关键字signal开头。在函数中必须调用twatch用于延时,不然keil会陷入死循环。twatch函数的参数表示要延时的CPU执行周期,比如twatch(1000000)表示一个信号函数延时1000000个CPU周期。
信号函数受到如下约束:
- 函数的返回值类型必须为void。
- 函数最多只能有8个参数。
- 信号函数可以调用其他重定义函数和用户函数。
- 信号函数之间不能相互调用。
- 信号函数可以被用户函数调用。
- 信号函数必须调用twatch至少一次。如果信号函数从不调用twatch,则目标程序将得不到时间执行。而且由于不能使用Ctrl+C中断信号函数,在这种情况下µVision3将进入死循环。
1.建立函数
keil中有内建的函数编辑器,通过Debug--Function Editor来打开。打开函数编辑器时需要输入一个文件名或者打开一个由Options for Target--Debug Initialization File指定的文件。
2. 编辑例子。
下面的例子在LPC2114的P0.8引脚上输入一个如下图所示的方波。

// 在200HZ的方波的低半周期中增加两个频率为1K的波
//
//
signal void test(void)
{
)
{
PORT0 |=0x100; //P0.8置高
twatch(*/); //延时2.5ms(200HZ)
PORT0 &=~0x100; //P0.8置低
twatch(*/); //延时2.5ms(200HZ)
PORT0 |=0x100; //P0.8置高
twatch(*/); //延时2.5ms(200HZ)
PORT0 &=~0x100; //P0.8置低
twatch(*/); //延时2.5ms(200HZ)
PORT0 |=0x100; //P0.8置高
twatch(*/); //延时2.5ms(200HZ)
PORT0 &=~0x100; //P0.8置低
twatch(*/); //延时ms(800HZ)
PORT0 |=0x100; //P0.8置高
twatch(*/); //延时2.5ms(400HZ)
PORT0 &=~0x100; //P0.8置低
twatch(*/); //延时2.5ms(800HZ)
PORT0 |=0x100; //P0.8置高
twatch(*/); //延时2.5ms(400HZ)
PORT0 &=~0x100; //P0.8置低
twatch(*/); //延时2.5ms(800HZ)
}
}
3.编译
在信号函数编辑界面上,点击Compile按钮,编译通过与否都会有相应提示。
4. 调用信号函数
编译通过后,在软件仿真时,在控制窗口(Command窗口)中输入如下命令: test()
注:test为信号函数名。
5.查看空闲信号函数
使用signal state命令
6. 删除信号函数(以test()为例)
signal kill test或者kill func test
keil MDK的信号函数的更多相关文章
- 基于IAP和Keil MDK的远程升级设计
写在前面:三个周之前,我突然想写一个远程升级的程序.那个时候我只是大概知道IAP的意思是在应用编程,但怎么编,我还一无所知.我给自己定下一个个阶段目标,从最基础的代码一点点写起,解决一个又一个的问题. ...
- Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发
Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...
- Keil MDK 无法设置断点【worldsing】
要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果: 1.keil 不能设置断点,每 ...
- keil MDK启动文件分析---基于LPC2100系列(其实都是相通的)
转用MDK有一段时间了,越来越觉得MDK的强大,因为我之前都是用ADS1.2开发产品,所以更能体会到MDK的强大与易用性.MDK编译出来的代码与ADS1.2相比,代码量减少了很多,我的一个工程用ADS ...
- Keil MDK入门---从新建一个工程开始
熟悉Keil C51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的.但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的.本文以MDK V4.03为例, ...
- 转:Keil MDK从未有过的详细使用讲解
来自:http://blog.csdn.net/zhzht19861011/article/details/5846510 熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是 ...
- keil MDK编译器警告和错误详解(不定期更新)
工作后从单片机转成ARM,刚开始用ADS1.2编译器,用了一段时间,因为我接手的项目的老程序正是用ADS编译的,部门也大都在用.在学单片机的时候用的是keil c51编译器,ads和这个编译器在易用性 ...
- Keil MDK下如何设置非零初始化变量
一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始 ...
随机推荐
- [makefile] filter-out
$(filter-out ,) 名称:反过滤函数——filter-out.功能:以模式过滤字符串中的单词,去除符合模式的单词.可以有多个模式.返回:返回不符合模式的字串.示例: objects=mai ...
- PHP学习笔记13淘宝接口开发一例(tmall.items.discount.search),PHP
程序设计,因为接口是有请求次数限制的,正式接口也只有2W次每天的请求次数,所以我们需要把从接口返回的数据缓存起来. 采用的接口是http://api.taobao.com/apidoc/api.htm ...
- MySQL入门转载
21分钟 MySQL 入门教程 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html 目录 一.MySQL的相关概念介绍 二.Wi ...
- SQL Server 创建全文索引
背景知识: 全文目录是全文索引是容器.所以在创建全文索引前要有全文目录. 第一步: 创建全文目录: create fulltext catalog catalog_name [on filegroup ...
- Nginx 变量漫谈(四)
在设置了“取处理程序”的情况下,Nginx 变量也可以选择将其值容器用作缓存,这样在多次读取变量的时候,就只需要调用“取处理程序”计算一次.我们下面就来看一个这样的例子: map $args ...
- 致终将火爆的NFC——ISO14443 TypeA
毫无疑问,当NFC终端越来越普及,逐渐成为智能手机标配功能后,我们终将迎来NFC的火爆.国内NFC应用最为广泛的将是TypeA,如Mifare.NFC Tag.移动支付等,所以接下来将主要研究Type ...
- linux scp ssh命令不用输入密码
把你的本地主机用户的ssh公匙文件复制到远程主机用户的~/.ssh/authorized_keys文件中 假设本地主机linux100,远程主机linux200 一,在linux100主机里的用户 运 ...
- 【思考题】CSDN第四届在线编程大赛2014初赛:带通配符的数
题目要求: 输入参数:参数A,含有任意个数的?的数值字符串,如:12?4,?代表一位任意数 参数B,不含?的数值字符串,长度与参数A一致 输出结果:参数A比参数 ...
- CreateThread线程函数
之前在一篇 基于TCP套接字实现的简单Demo 一文中用到了线程函数CreateThread()函数来 创建新的线程.下面以一个最简单的多线程例子来说明. C-代码如下: //最简单的创建多线程实 ...
- Linux学习笔记6-Linux根目录下各个目录的作用
/bin:存放最常用命令: /boot:启动Linux的核心文件: /dev:设备文件: /etc:存放各种配置文件: /home:用户主目录: /lib:系统最基本的动态链接共享库: /mnt:一 ...