一、选取的 port 为 GPIO_B0,使用 example 示例程序中的 dio_example.c 实现,因为需要使用中断功能,所以需将 Port 的 PortSetPinINTDetect 功能打开。
二、 PortContainer->双击添加的引脚名称->PortPin->添加命名为 DI 的 PortPin,配置引脚上电默认输出电压为高电平,中断触发方式为下降沿触发。
三、 在 Dio 配置界面,DioPort 内添加 DioPort_1 双击进入,选择 DioChannel 添加 45 的 DO_OUT
四、在 IAR 项目内,打开 dio_example.c 文件,添加头文件 Dio_Irq.h,和 irq_test() 函数,并在 dio_test() 函数内加入 irq_test() 函数。
添加的 irq_test() 函数为关联中断标志和中断函数,因为 GPIO_B0 属于 GPIO_SAFETY 的 port1,所以使用 GPIO_SF_SYNC_GRP_1_INTR_NUM;
因为中断函数 GPIO_Irq2Handler 内 id 会自减 1,所以使用 2;因为中断函数 GPIO_Irq2Handler 定义在 Dio_Irq.h,所以添加头文件 Dio_Irq.h;
之后使能 GPIO_SF_SYNC_GRP_1_INTR_NUM。
五、 进入中断后,在 Dio_IP.C 文件内一层一层调用函数,GPIO_Irq2Handler() -> Dio_Ip_IrqHandler()-> Dio_UserCallouts(),进入 Dio_UserCallouts.c 文件。在文件内添加头文件 Dio_Cfg.h 和 debug.h,和 switch case 并打印传参对应的 ChannelId 的程序。Dio_Cfg.h 是 GPIO_B0 的宏定义 DioConf_DioChannel_DO_IN 文件,debug.h 是函数 PRINT() 文件。
六、编译并烧录程序后,通过串口软件写入 dio test,再使用杜邦线将地和 GPIO_B0 引脚短接后松开,串口软件中会打印对应的串口数据。
欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com
作者:Feihu Wang / 王飞虎
评论