Zephyr程序初探(4):中断程序
来源:互联网 发布:什么叫网络销售 编辑:程序博客网 时间:2024/05/16 00:47
之前分别尝试了LED、SENSOR、BLE程序,今天来试了下GPIO中断程序,也就是按键程序。
源码位置:samples\basic\button,查看Makefile文件,默认开发板是nucleo_f103rb,执行make编译程序。
因为我的是一个精简的STM32F103开发板,除了电源、时钟、LED、USB外无任何其它外设,只是把所有能够使用的GPIO全部通过排针的形式引出来了,所以要看要下源码找出使用的是哪个GPIO引脚作为按键,main.c中定义如下:
在boards\arm\nucleo_f103rb\board.h中定义如下:
从以上代码可以看出按键是GPIOC13,下降沿触发,将我的开发板接一个外部按键到GPIOC13和GND,烧录zephyr.bin,复位运行后出现了奇怪的现象,中断信息“Button pressed at….”并不是在我每次按下按键的时候输出的,而是当我手每次触碰相关引脚后就重复输出,而我按下按键后会停止输出。
这个现象很明显是PIN脚电平波动引起的,而程序未设置上拉导致即使没有将GPIOC13与地短路也会有中断产生,再次查看main.c
而在gpio.h中,上拉是如下定义的
可以看到代码中未并设置内部上拉,而我的开发板上也没有外部上拉电阻,修改定义
重新编译、烧录后验证功能正常。
分析代码之所以PULL_UP为0估计是nucleo_f103rb开发板的相应引脚有外部上拉电阻,到ST官网下载原理图后果然验证了我的猜测,如图:
然后又修改代码测试了上升沿和下降沿都触发中断,且在callback函数中读取PIN脚状态是按下还是释放。
至此按键程序测试完成,虽然目前只测试了几个小程序,但是已经能够感受到Zephyr的易用性,后续会针对目前所做的程序验证做一个简单的总结。
- Zephyr程序初探(4):中断程序
- Zephyr程序初探(5):thread程序
- Zephyr程序初探(2):BLE程序
- Zephyr程序初探(3):sensor程序
- Zephyr程序初探(1):LED程序及调试过程
- windowsCE异常和中断服务程序初探
- windowsCE异常和中断服务程序初探
- windowsCE异常和中断服务程序初探
- windowsCE异常和中断服务程序初探
- windowsCE异常和中断服务程序初探(-)
- windowsCE异常和中断服务程序初探
- windowsCE异常和中断服务程序初探(-)
- windowsCE异常和中断服务程序初探
- windowsCE异常和中断服务程序初探(-)
- 使用 Eclipse 单步调试 Zephyr 程序
- 初探windowsCE异常和中断服务程序(经典.转载)
- windowsCE异常和中断服务程序初探(=)
- windowsCE异常和中断服务程序初探(=)
- cn.itcast.domain.Customer_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
- java多线程实例解析
- 第一篇:刚接触scrapy的阶段以及之前出现的问题
- 音乐播放,快进,自动播放下一曲
- 变量和作用域1
- Zephyr程序初探(4):中断程序
- 10个JavaScript难点!
- Go1.9获取Windows进程专用内存工作集
- Linux 系统中的用户
- 数据结构面试题/求二叉树的高度/销毁一棵二叉树-->
- Php利用simpleXML对xml操作
- Quartz定时调度(Spring整合)
- 无人机/平衡车等姿态测量相关知识
- C#循环创建按钮,并可以通过点击判断出是哪个按钮