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引脚上输入一个如下图所示的方波。


[cpp]  view plain copy
  1. // 在200HZ的方波的低半周期中增加两个频率为1K的波  
  2. //  
  3. //  
  4. signal void test(void)  
  5. {  
  6.     while(1)  
  7.     {  
  8.         PORT0 |=0x100;          //P0.8置高  
  9.         twatch(11059200*4/400); //延时2.5ms(200HZ)  
  10.         PORT0 &=~0x100;         //P0.8置低  
  11.         twatch(11059200*4/400); //延时2.5ms(200HZ)  
  12.   
  13.         PORT0 |=0x100;          //P0.8置高  
  14.         twatch(11059200*4/400); //延时2.5ms(200HZ)  
  15.         PORT0 &=~0x100;         //P0.8置低  
  16.         twatch(11059200*4/400); //延时2.5ms(200HZ)  
  17.   
  18.   
  19.         PORT0 |=0x100;          //P0.8置高  
  20.         twatch(11059200*4/400); //延时2.5ms(200HZ)  
  21.         PORT0 &=~0x100;         //P0.8置低  
  22.         twatch(11059200*4/2000);    //延时ms(800HZ)  
  23.         PORT0 |=0x100;          //P0.8置高  
  24.         twatch(11059200*4/2000);    //延时2.5ms(400HZ)      
  25.         PORT0 &=~0x100;         //P0.8置低  
  26.         twatch(11059200*4/2000);    //延时2.5ms(800HZ)      
  27.         PORT0 |=0x100;          //P0.8置高  
  28.         twatch(11059200*4/2000);    //延时2.5ms(400HZ)      
  29.         PORT0 &=~0x100;         //P0.8置低  
  30.         twatch(11059200*4/2000);    //延时2.5ms(800HZ)      
  31.   
  32.     }  
  33. }  
3.编译 

在信号函数编辑界面上,点击Compile按钮,编译通过与否都会有相应提示。

4. 调用信号函数

 编译通过后,在软件仿真时,在控制窗口(Command窗口)中输入如下命令:

                              test()             

注:test为信号函数名。

5.查看空闲信号函数

使用signal state命令

6. 删除信号函数(以test()为例)

signal kill test或者kill func test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值