keil MDK的信号函数
时间:11-02 09:10 阅读:1239次
*温馨提示:点击图片可以放大观看高清大图
简介: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)
{
while(1)
{
PORT0 |=0x100; //P0.8置高
twatch(11059200*4/400); //延时2.5ms(200HZ)
PORT0 &=~0x100; //P0.8置低
twatch(11059200*4/400); //延时2.5ms(200HZ)
PORT0 |=0x100; //P0.8置高
twatch(11059200*4/400); //延时2.5ms(200HZ)
PORT0 &=~0x100; //P0.8置低
twatch(11059200*4/400); //延时2.5ms(200HZ)
PORT0 |=0x100; //P0.8置高
twatch(11059200*4/400); //延时2.5ms(200HZ)
PORT0 &=~0x100; //P0.8置低
twatch(11059200*4/2000); //延时ms(800HZ)
PORT0 |=0x100; //P0.8置高
twatch(11059200*4/2000); //延时2.5ms(400HZ)
PORT0 &=~0x100; //P0.8置低
twatch(11059200*4/2000); //延时2.5ms(800HZ)
PORT0 |=0x100; //P0.8置高
twatch(11059200*4/2000); //延时2.5ms(400HZ)
PORT0 &=~0x100; //P0.8置低
twatch(11059200*4/2000); //延时2.5ms(800HZ)
}
}
3.编译
在信号函数编辑界面上,点击Compile按钮,编译通过与否都会有相应提示。
4. 调用信号函数
编译通过后,在软件仿真时,在控制窗口(Command窗口)中输入如下命令:
test()
注:test为信号函数名。
5.查看空闲信号函数
使用signal state命令
6. 删除信号函数(以test()为例)
signal kill test或者kill func test