2、CC2541芯片中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

简介:


 

本文根据一周CC2541笔记汇总得来——

适合概览和知识快速索引——

全部链接:

中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探

【插入】SourceInsight-工程建立方法

中级教程-OSAL操作系统(OSAL系统解基本套路)

中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

中级教程-OSAL操作系统(ADC-光敏电阻)

OSAL操作系统-实验16 串口波特率扩展

OSAL操作系统-实验17 AT命令初步

OSAL操作系统-实验20 模拟IIC通信+硬件IIC(Mpu6050)

OSAL 操作系统-实验 23 PWM 输出(改变占空比)

OSAL 操作系统-实验 24 看门狗 WachDog

OSAL操作系统-实验25 SNV内部Flash数据读写

OSAL 操作系统-实验 29 系统睡眠等级研究

OSAL 操作系统-实验 31 从机广播功率修改

 

一、OLED

 

 

二、OSAL 操作系统-实验 11 普通按键

按键的中断代码和使用方法
P01 即是 cc2054x 的 p0.1, 通过 10k 电阻接地, 因此 p0.1 作为输入的时候, 常态就是低电平, 当 s1, 按下的时候, p0.1 变成高电平。
 
 在 Hal_key.c (ble-cc254x-1.3.2-osal\components\hal\target\cc2540eb) 中,  是  osal  的按键
驱动文件
, 主要是实现 按键的初始化与中断服务函数, 里边也包含 向按键的驱动, 5 向
按键与 s1 按键相比, 多了一个 adc 采样, 5 向按键, 实际上是先触发一个按键中断, 然后,
再进行 adc 采样, 每个方向的按键被按下后, 由于分压不一样, 因此 adc 数值也就不一样,
这样就能区分不同的按键了。
 
驱动比较复杂,应用相对简单
Hal_key.c (ble-cc254x-1.3.2-osal\components\hal\target\cc2540eb)
 
S1 按键的 io 定义如下:
上升沿触发P01引脚
 
(用了很多宏定义!便于移植)
 
默认为上升沿中断
279-281是P01口中断配置
 
中断函数为halProcessKeyInterrupt()
 
在该中断处理函数中检测中断标志位,如果触发中断了则用延时去抖(纯延时)。
 
  • 上面是按键事件检测
  • 下面是按键事件传输到应用层处理
 
Hal_drivers.c (ble-cc254x-1.3.2-osal\components\hal\common)
这个在中负责 处理中断事件
216 行, 就是按键中断并延时去抖动后的查询函数调用
 
这个 HalKeyPoll就在Hal_key.c
查询到按键按下
 
435 行, 执行一个回调函数, 该 回调函数直接就是在我们的应用层的
 
同时注意到一点notify(下面代码);不采用中断时用来标记当前按键状态是否转变,采用中断时也要根据keys的值相应设置
 
上面用到回调技术是在下面设置的@!!
OSAL_SimpleBLETest.c
 
105 行定义了该 回调函数,  至于这个函数在哪里别赋值等, 我这里点到即可, 不作深入分析了。

总之, 现在知道, 只要有按键按下,就会执行 SimpleBLETest_ProcessEvent 这个函
数, 其实,按键释放的时候也都有一个按键消息送上来,方便我们对按键状态做判断。而
SimpleBLETest_ProcessEvent 这个函数,就是在我们的应用层里的。至此,按键流程分析
完毕。
 
应用层
simpleBLETest.c
  • 初始化注册按键事件  
这样一旦有按键中断发生就会触发uint16 SimpleBLETest_ProcessEvent( uint8 task_id, uint16 events )函数
逐层进入会到static void simpleBLECentral_HandleKeys( uint8 shift, uint8 keys )
 
三、OSAL 操作系统-实验 12 五向按键
 
电路图:
注意:上面, P20 即是 cc2054x 的 p2.0, 作为 中断输入;而 P06 即是 P0.6,作为  ADC采样输入,5 向按键与 s1 按键相比,多了一个 adc采样,5向按键,实际上是先触发一个按键中断,然后,再进行 adc 采样,每个方向的按键被按下后,由于分压不一样,因此 adc 数值也就不一样, 这样就能区分不同的按键了。

 
IO定义:
hal_key.c
P2.0 定 义 按 键 为 下 降 沿 沿 触 发
P0.6为ADC采样输入
 
设置GPIO(初始化函数中)
HalKeyConfig中设置中断
299~301 行,这是 p2.0 的 io 中断使能,其中断函数在:HAL_ISR_FUNCTION的halProcessKeyInterrupt()中
在该函数中和key1的用法类似,判断是否是按键按下并进行延时去抖(纯延时去抖)
 
去抖和延时之后程序跑到哪了呢???
    在Hal_drivers.c中的Hal_ProccessEvent中!
         当检测到按键按下事件后就会调用HalKeyPoll进行处理,如下:
 
在HalKeyPoll中有一个回调函数,该回调函数就在应用层中,从而实现了 按键按下的消息传送到应用层的业务逻辑:
 
下面是这个回调函数的定义处~
在应用层中OSAL_SimpleBLETest.c:
104 行定义了该回调函数, 或者, 至于这个函数在哪里别赋值等, 我这里点到即可, 不作深入分析了。
总之,  只要有按键按下,就会执行 SimpleBLETest_ProcessEvent 这个函数, 其实,按键释放的时候也都有一个按键消息送上来,方便我们对按键状态做判断。而SimpleBLETest_ProcessEvent 这个函数,就是在我们的应用层里的。至此,按键流程分析完毕。
 
应用层
应用层类似于key1,注册+事件处理(参考上面)

 



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/4771662.html,如需转载请自行联系原作者

相关文章
|
3天前
|
机器学习/深度学习 Dart 前端开发
移动应用与系统:构建现代数字生态的基石在当今这个高度数字化的社会中,移动应用与操作系统已成为我们日常生活不可或缺的一部分。它们不仅改变了我们的沟通方式,还重塑了我们的工作、学习和娱乐模式。本文将深入探讨移动应用开发的基础、移动操作系统的功能以及这两者如何共同塑造了我们的数字世界。
随着智能手机和平板电脑的普及,移动应用与系统的重要性日益凸显。它们不仅为用户提供了便捷的服务和丰富的功能,还为开发者提供了广阔的创新平台。本文将介绍移动应用开发的基本概念、技术栈以及最佳实践,并探讨主流移动操作系统的特点和发展趋势。通过分析移动应用与系统的相互作用,我们可以更好地理解它们在现代社会中的重要地位。
|
21天前
|
开发框架 前端开发 开发工具
移动应用与系统:探索移动应用开发和移动操作系统的奥秘
【8月更文挑战第29天】 在这篇文章中,我们将深入探讨移动应用开发和移动操作系统的奥秘。首先,我们将介绍移动应用开发的基础知识,包括开发工具、编程语言和设计原则。然后,我们将深入了解移动操作系统的内部工作原理,以及它们如何支持移动应用的运行。最后,我们将通过一些实际的代码示例,展示如何在Android和iOS平台上进行移动应用开发。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
60 0
【Mac os系统】安装MySQL数据库
|
2月前
|
人工智能 安全 vr&ar
移动应用与系统:开发趋势与操作系统的未来
在数字时代的浪潮中,移动设备已成为我们日常生活不可或缺的一部分。本文将深入探讨移动应用开发的最新趋势,以及移动操作系统如何适应这些变化。我们将从用户体验设计的重要性出发,分析跨平台开发框架的崛起,并探讨人工智能和机器学习如何影响移动应用的开发。同时,我们也将关注移动操作系统的安全性和隐私保护措施,以及它们如何为即将到来的技术革新做好准备。通过具体案例和技术分析,本文旨在为读者提供一个关于移动应用与系统未来发展的全面视角。
|
2月前
|
安全 Linux 网络安全
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
|
2月前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
|
4天前
|
Java Go API
移动应用与系统:探索移动应用开发和操作系统的融合之道
本文深入探讨了移动应用开发和操作系统之间的紧密关系,揭示了它们如何相互影响、相互促进,共同推动移动互联网的发展。不同于传统的技术分析文章,本文尝试以一种更通俗易懂、条理清晰的方式,引导读者理解移动应用与系统的内在联系,启发开发者在实际应用中更好地把握两者的平衡点。
|
4天前
|
API Android开发 开发者
移动应用与系统:探索移动应用开发与操作系统的融合之道
本文深入探讨了移动应用开发与操作系统之间的紧密联系,分析了两者如何相互影响、促进和共同发展。通过对移动应用开发流程、技术选型以及移动操作系统特性的详细阐述,揭示了开发者如何在不断变化的市场环境中保持创新,以及操作系统如何为应用提供稳定、高效的运行环境。同时,文章还展望了未来移动应用与系统的发展趋势,强调了跨平台开发、人工智能集成和安全性等方面的重要性。
|
16天前
|
Java Android开发 Swift
移动应用与系统:探索移动应用开发和移动操作系统
【9月更文挑战第2天】在本文中,我们将深入探讨移动应用开发和移动操作系统的相关话题。我们将从移动应用开发的基本概念开始,然后逐步深入到移动操作系统的详细介绍。我们将通过代码示例来展示如何在Android和iOS平台上进行移动应用开发。最后,我们将讨论移动应用的未来发展趋势和挑战。
|
20天前
|
Java Android开发 Swift
移动应用与系统:探索移动应用开发和移动操作系统的奥秘
【8月更文挑战第30天】本文将深入探讨移动应用开发和移动操作系统的相关知识。我们将从移动应用开发的基本概念、移动操作系统的种类和特点、以及如何选择合适的移动操作系统等方面进行详细介绍。同时,我们还将通过一个实际的代码示例,展示如何在Android系统中实现一个简单的计算器应用。无论你是移动应用开发的初学者,还是对移动操作系统感兴趣的读者,这篇文章都将为你提供有价值的信息和启示。