本帖最后由 wgtwgtwgt 于 2019-12-2 17:52 编辑
EFM8BB1LCK板子介绍及软件安装见 帖子。本帖子主要学习外部中断例程。
打开simplicity studio软件,按下图所示点击:
点击上图的New Project后,弹出对话框,按下图所示点击:
点击上图的Next后,弹出例程导入对话框,选择EFM8BB1 ExternalInterrupts例程:
点击上图的Next,弹出对话框:
保持默认,直接点击上图中的Next,弹出对话框:
保持默认,直接点击上图的Finish,则例程代码就加载到simplicity studio中了。展开工程目录左侧的src文件夹图标,可以看到.c文件在该目录下,其中EFM8BB1_ExternalInterrupts.c文件包含main()函数,Interrupts.c文件包含中断服务函数:
得益于silicon labs完善的注释说明,在EFM8BB1_ExternalInterrupts.c文件开头的注释中,详细说明了该例程的功能、硬件连接及使用方法:
为了与硬件相互佐证,翻看EFM8BB1LCK板子的原理图,可见Button0按键,即用户按键,挂载在P0.2引脚上,并且默认是上拉的:
程序中是怎样设置的呢?按下图右击main()函数中的enter_DefaultMode_from_RESET函数名,然后选择Open Declaration:
这时,会跳转到enter_DefaultMode_from_RESET()函数的实现代码中。其中,有EXTINT_0_enter_DefaultMode_from_RESET()函数,右击其函数名转到该函数的实现代码:
从上图可见,P0.2确实复用为外部中断0引脚,并且是低电平触发的。这样,按下Button0按键,就进入外部中断0服务函数,在该中断服务函数中翻转LED引脚电平:
下面,编译工程,点击下图所示的图标:
注意,若simplicity studio软件第一次使编译工程,则会弹出如下图所示的对话框,需要填写许可文件,因为该IDE以Keil作为其后台编译器:
点击上图中的this form链接,会打开Keil网站,按照要求填写一些基本信息,则Keil就会往所填写的邮箱中发送一个免费的license。正确输入license后,点击上图的OK按钮,会出现许可文件成功添加对话框:
接着,就可以成功编译工程了。然后,点击下图所示的图标,将路径定位到hex所在的文件:
然后点击下图所示的Program按钮,烧录hex文件到单片机:
运行效果:
多次测试未见误触发问题,外部中断效果还不错。
|